
こんにちは。
現在自作で3Dゲームを制作しています。
ワールド座標からスクリーン座標への変換に成功したので
今度は逆にスクリーン座標からワールド座標への変換に挑戦していたのですが
どうにもうまくいかずに詰まってしまい、質問にきました。
ワールド→スクリーン変換にて得たスクリーン座標(sx, sy, sz)を使用して
スクリーン→ワールド変換を行うと成功するのですが
直接スクリーン→ワールド変換を行おうとすると失敗します。
というのも、直接スクリーン→ワールド変換時には sz にあたる値を
どうしたらいいものか・・・となってしまったからです。
今回、手計算(ヘルプ関数は使わず)で行っているのですが、計算していることは
ビューポート行列、プロジェクション行列、ビュー行列の逆行列を使用し
スクリーン座標(とりあえずszを0にして対応)に対して座標変換をおこなっています。
何か計算が足りていないのか、はたまた勘違いをしているのか・・・
詳しいご教授お願いいたします。
ワールド行列:単位行列
ビュー行列:視点と視線は動的に変動、上向き(0,1,0)
プロジェクション行列:視野角45度、アスペクト比 800/600
画面サイズ:800×600
テストに使用しているスクリーン座標:(200,300)
No.1ベストアンサー
- 回答日時:
そもそもスクリーンに映っているのは奥行き情報が消えた「2D な絵」ですよね. だとしたら, 「視点から当該スクリーン座標に向かう (無限に長い) 視線」の上にある点はすべて「3D なワールド座標」の候補になってしまいます. そして, そのうちのどれが「正しいワールド座標」なのかをこれだけの情報から求めることは不可能です.
夜空に光る星までの距離を求めるには, 「ここで光ってる」という情報だけでは不足ですよね.
もちろん, スクリーンに映っている画像を作る元になった (ワールド座標における) オブジェクトの配置がすべてわかっているなら, 「視線の先にあるオブジェクト」を調べることはできます. もっと難しくして鏡面反射とか屈折とかを考慮すると, 結局レイトレになっちゃいますがここではそこまでの処理は不要でしょう.
No.2
- 回答日時:
たとえば、ワールド座標の点をスクリーン座標への変換式を
P = M・r { P:スクリーン座標値、M:変換行列、r:ワールド座標値 }
とすると、スクリーンからワールドへの変換は
r = M^(-1)・P
となる。
スクリーン上の座標(x,y)に対して、下記式によってワールド座標の2点を求めると、
r0 = M^(-1)・(x,y,0,1)
r1 = M^(-1)・(x,y,1,1)
これら2点はそれぞれスクリーン上で(x,y)に表示され、クリッピング領域の前後方向の端に位置します。
この2点を結ぶ直線上にある点は画面上で同じ位置に表示されるため、一意にワールド座標の一点を求めることはできません。
たとえば、スクリーン座標のある点にあるオブジェクトの表面上の1点を求めたい等の場合、上記式に限らず何らかの方法で、スクリーン座標の点に対応するレイを求め、オブジェクトとの交差判定を行う、といった処理がひつようになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 線形代数の問題について教えて欲しいです。 3 2023/05/06 23:13
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- docomo(ドコモ) ドコモのラクラクホン(アンドロイド)で、平面直角座表の位置に、たどり着く事が出来る、アプリは? 2 2023/06/23 21:12
- 数学 線形代数の2次元直交座標系、極座標系についての問題がわからないです。 2 2022/07/16 20:42
- 物理学 ミンコフスキー時空図の作図の仕方について 2 2023/04/30 10:01
- 物理学 座標変換に関して質問です。参考書に 「力は一般に時間と場所によって異なるから力f(ベクトル)はx,y 3 2022/07/03 20:24
- 物理学 時間の進み方が変化する場合、スケール効果を考えるのは当然では? 1 2022/04/18 07:46
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- 物理学 アインシュタイン博士の相対性理論は間違っていたのでしょうか? 6 2022/04/13 17:36
- 物理学 ベクトルと座標系につきまして 1 2022/04/03 06:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
VBで車のアナログスピードメー...
-
VB6→VS2005アップグレード後
-
以下のプログラムは重心を求め...
-
3次元空間上の2つの座標から...
-
シーケンサー(PLC?)で制...
-
任意軸回転を、XYZ軸回転の...
-
マインクラフト(pc版)で座標...
-
C言語 配列で座標
-
最小二乗平面
-
Excel VBA で自在に図形を変化...
-
ワード上Shapeの位置情報を統一...
-
濃淡画像の縦方向のゆがみを求...
-
C#でxy座標グラフを描きたい。
-
WM_NCHITTESTの流れ
-
DirectXを使ってテクスチャ(画...
-
PPTのVBA スライド右下端の座...
-
エクセルである点からの距離で...
-
Word 図形の位置
-
多角形の内部かどうか判定する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルで回転する座標の出し方
-
ダイアログ内コントロールの位...
-
多角形の内部かどうか判定する方法
-
交差する2線分の交点座標の求め方
-
ワード上Shapeの位置情報を統一...
-
C言語 配列で座標
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
Excel VBA で自在に図形を変化...
-
直線上にある点の座標の求め方
-
エクセルである点からの距離で...
-
OpenCvSharp4による画像判定解...
-
始点、終点の二つの座標と半径...
-
GLで座標を変えて回転させたい
-
ピクチャボックスの座標取得
-
最小二乗平面
-
c言語でキーボードから2点の座...
おすすめ情報