Houdiniを使っていて、NDCという座標系に触れる機会が増えました。
なので、そのメモ。
NDCは「Normal Device Cordinates」の略で日本語にすると、標準デバイス座標というらしい。
もっと噛み砕いて言うと、カメラを基準にした座標系、だそうです。
カメラからのdepthを作ったり、ベクターブラ―を作ったり、ともかくカメラ基準で何かしたいときに重宝してます。
カメラの位置が原点で、x座標とy座標は、それぞれカメラに映る領域が0~1の範囲に収まるようになっています(正規化)。
Z座標は、カメラから被写体方向にマイナス値で大きくなっていきます。遠ければその分大きなマイナス値になります。
座標の変換用に、Transorm(VEX)というノードがあります。いろんな座標系を行ったり来たり変換できます。
これを使うと座標をNDCに変換できるます。
また、World SpaceとNDCの変換に特化したノードもあります。
“To NDC”と”from NDC”です。World SpaceからNDCへ変換するのと、その逆ですね。
これ使って四角を変形させてカメラの表示領域にフィットさせてみます。
これだけ。(カメラは指定する)
NDC座標の形にしたいからtoNDC(VEX)を使いそうだけど、この場合はNDCでの座標をworld spaceに反映したいのだからformNDCを使うのが正解。
位置は、xとyは0~1の範囲、zは0からマイナスの範囲にあれば、カメラに写る範囲になる。
サンプルファイルndc_sample.hiplc
以上、NDCのメモでした。
間違い不足等ありましたらご指摘を!!
「参考URL」
http://www.mascotcapsule.com/ja/alldata/samples/brew_v4/xyz_camera.php
http://wgld.org/d/webgl/w069.html
コメント