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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まあ

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

#1

投稿記事 by まあ » 11年前

3D空間の座標をスクリーン座標で取得したい場合はどうしたらいいでしょうか

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

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

#2

投稿記事 by usao » 11年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 11年前

DXライブラリに限定すれば、ConvWorldPosToScreenPosで変換できます。
「ConvWorldPosToScreenPos」
http://homepage2.nifty.com/natupaji/DxL ... tml#R12N10
その他の環境でも方法はありますよ。
※ 環境を書いて貰わないと答えられない問題ですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

まあ

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

#4

投稿記事 by まあ » 11年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る