2017年08月09日

3Dのパースで悩み中

3Dの勉強が行き詰ってもうどうにもならなかったので、久しぶりにプログラミングの師匠に連絡。
教えてもらいながら分からないところを説明しているうちに、頭の中がまとまった気がしました。アウトプットできる環境はありがたいです。
3dnayami01.png
IQ300のエッグマンとタメをはるテイルス君。キミの知能を分けてくれ。

ローカル座標(floatの頂点配列)を平行移動や回転してワールド座標に置くとします。で、ビュー行列によってカメラを原点に移動、つまりカメラ以外のものをカメラが原点にあるようにして配置します。
この時点では「まだ描画していない」ということを失念していました。描画してないからスクリーン座標系とワールド座標系が違うとかそういうことは、この時点まで気にしなくていいんですね。
で、プロジェクション行列をかけて視錐台の範囲にギューッと世界を縮めます。
この時、カメラは原点にあり、Z軸が手前に向かってプラスなので、「カメラは常にZマイナスを見ている」ということだそうです。ニアクリップとファークリップ、カメラの見える範囲は常にマイナスというのも盲点でした。
最後にカメラからの距離、原点から見た奥行き、つまりZ座標でXYZ座標を割れば、遠くのものが小さく、手前のものが大きくなります。この時Zはマイナスだと思われます。だってカメラはマイナスを向いているので。ZもZで割るので、マイナスだったZはプラスになってくれます。これでちゃんと描画されそうです。(ドリキャスでは0以下は描画されないっぽいです。)

割と最近まで、遠くのものを小さくしたりするのはハードウェアが勝手にしてくれると思っていました。ややこしいです。うーんややこしい。
間違いあればいつでもご指摘お願いします。3Dがひと段落したら次の動画をアップしたいと思います。
posted by たあし at 23:48| Comment(0) | ドリームキャスト開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: