忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


かんたんXNA その23 深度バッファ関数

このページは古いです
最新版はこちら

さて、深度バッファとは物体の前後関係から
適切に描画するためのデータでした。

カメラからの距離がより小さいときには描画し、
より大きいときには描画しないのです。

こうすることによって近くにあるものは遠くにあるものを隠し、
遠くにあるものは近くにあるものに隠されるのです。

実はこの挙動は変更することが出来ます。
例えば全く逆、カメラからの距離がより大きいときには描画し、
より小さいときには描画しないということができます。

近くにあるものは遠くにあるものに隠れ、
遠くにあるものは近くにあるものを隠すことが可能となるのです!!
(そんなことをして何が楽しいのかは知りませんが)

拍手[0回]

PR

かんたんXNA その22 深度バイアス

このページは古いです
最新版はこちら

3DCGには"z-ファイティング"という現象があります。
カメラからの距離があまりにも同じような物体が2つあると、
深度バッファの計算が狂って(丸め誤差などが原因だそうです)
描画がおかしくなります。

zFighting2.jpgzFighting.jpg

これは、同じ平面上に2つの三角形を重ねてクルクルと回転させて表示したものです。
なんだか縦にギザギザしているのがわかると思います。
これが"z-ファイティング"です。

これが問題になるのは、物が隠れて出来る"影(シャドウ)"を描画するときなどです。
戦闘機が太陽光をさえぎって地面に影を落とすとすると、
地面を表すポリゴンと影を表すポリゴンが重なることになります。
すると、このような変なギザギザが発生してしまうことがあるのです。

この問題を解決する方法のひとつとして、深度バイアスがあります。
深度が同じならプラスαの情報を使って
どっちのポリゴンが前か決めればいいのです。

拍手[0回]


かんたんXNA その21 深度バッファへの書き込みの無効化

このページは古いです
最新版はこちら

前回は深度バッファそのものを無効化しましたが、
深度バッファのチェックはそのままに、
書き込みだけを無効化することも出来ます。

書き込みを無効にすると、
深度バッファそのものを無効化したときのように
やはり奥の物が手前のものより前に描画されてしまいます。

深度が記録されなくなって、どの物体が手前に、
どの物体が奥にあるのかわからなくなるからです。

しかし使いようによっては変わったこともできます。
深度バッファそのものは有効なので
半透明のビームなどを描きたいときには
壁に隠れてかつ、ビーム同士では半透明で隠れない
といったことができます。

拍手[0回]


かんたんXNA その20 深度バッファ

このページは古いです
最新版はこちら

3Dグラフィックスでは、奥にある物体は手前にある物体に
隠されなければなりません。

例えば、壁の向こうに敵がいる場合、敵は壁に隠れて見えません。
(当たり前です!)

XNAではこのことを特に気にする必要はありません。
ふつうに描画するだけで自動的に奥のものが隠れてくれます。

depthBufferEnabled.jpg
(奥に赤い三角形、手前に青い三角形があります。
奥の三角形は手前の三角形に隠れています。)

拍手[0回]


極小ディスプレイ

虫型ロボットの研究で有名(?)な東京大学の下山教授のお話を聞いてきました。

で、印象に残ったのが「最小のディスプレイ」というものです。
これは、ケータイのディスプレイとかそんなのではなくて、
マイクロサイズのディスプレイです。

ものすごく小さいわけですからフツーの液晶のように
ピクセルを大量に並べて・・・と言う方法は使えません。

ではどうやって画像を表示しているのかと言うと、
これはテレビのブラウン管の表示に似ています。

まず、赤、緑、青の3原色のライトをそれぞれ1つずつ用意します。
(このライトはそれほど小さくなくてもかまいません。
もちろんある程度は小さくなくてはならないのですが)

そしてその上に物すごく小さな穴の開いたをかぶせ、
そしてその板は電気の力で精密に動かせるようにします。
(x軸方向とy軸方向ですね)

そうすると、上から見ると小さな点が光っているように見えるでしょう。
(そしてその点の色は下のライトによって自由自在に変えられます!)

さて、この点の位置は、板を動かすことによって変えることができますね。
ちょうどブラウン管が電子ビームを好きなところに当てることが出来るように、
この最小ディスプレイも板(の穴)を好きなところに移動させることが出来るのです。

あとはもうブラウン管と同じです。

光の点を、色を変えながら、横に動かします。
すると点が線に見えます。
人間の目は残像によって、少しの時間なら光が残ってしまうんですね。

これを、縦方向に少しずつずらしながら繰り返します。
すると線が面になります。

こうして、単なる光の点の移動が画面として見えるわけです!!

なるほど確かにこの方法でうまく小さなディスプレイを作ることが出来ます。
実際、文字を表示しているところの画像を見せてもらいました。

しかし、これが一体なんの役に立つのでしょうか
このディスプレイを大量に並べて超高解像度の大きなディスプレイを作るにしても、
板を動かさなければならないわけですから、
動かす部分が邪魔になって並べることは出来ないはずです。

その点を下山教授に聞いてみると、
「いや~、なんに使えるんでしょう?わかりませんね。思いついたら教えてください(笑)」
本人にもわからないそうで、こういう技術の使い道と言うものは
将来になってみないとわからないのだそうです。

うーん、まぁ、がんばってください!

拍手[0回]