ページ 11

3D空間の座標をスクリーン座標で取得

Posted: 2014年3月26日(水) 19:24
by まあ
3D空間の座標をスクリーン座標で取得したい場合はどうしたらいいでしょうか

Re: 3D空間の座標をスクリーン座標で取得

Posted: 2014年3月26日(水) 19:54
by usao
「スクリーン」と視点との配置関係が既知であると仮定すると,
まず,その「3D空間上の座標」と「視点の座標」(と,スクリーン)とを,同一の座標系で表し,
次に,「3D空間上の座標」と「視点の座標」とを通る無限直線を求め,
最後に,その直線とスクリーンとの交点を求めればよいのではないでしょうか.
(必要ならさらにその結果座標を「スクリーン座標系」に変換)

Re: 3D空間の座標をスクリーン座標で取得

Posted: 2014年3月26日(水) 20:13
by softya(ソフト屋)
DXライブラリに限定すれば、ConvWorldPosToScreenPosで変換できます。
「ConvWorldPosToScreenPos」
http://homepage2.nifty.com/natupaji/DxL ... tml#R12N10
その他の環境でも方法はありますよ。
※ 環境を書いて貰わないと答えられない問題ですね。

Re: 3D空間の座標をスクリーン座標で取得

Posted: 2014年3月26日(水) 23:15
by まあ
すいません、簡潔すぎました…
DirectX上で動かしてるのですが、
ワールド、プロジェクション、ビュー変換はDirectXを使って行列を出してデバイスに設定しているのですが
ビューポート行列だけは設定しなくてもDirectX側が勝手に調整してくれるらしく、恐らく私のソース内でも何も作成してません…
しかしスクリーン上の座標が欲しくなったのでゲームプログラマを目指す人様の画像
これを参考にビューポート行列を作成して、ワールド空間座標xビュー行列×射影行列×ビューポート行列を行ったのですがどうしても上手くいきませんでした…