こんにちは。
現在自作で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ランキング
-
グラフの交点の求め方(Excel)
-
c言語でキーボードから2点の座...
-
エクセルである点からの距離で...
-
ガウシアンフィルタのCプログラム
-
C言語 配列で座標
-
交差する2線分の交点座標の求め方
-
エクセルで回転する座標の出し方
-
C言語について質問です 画像の...
-
緊急 ベーシックで国旗の作り方...
-
【C#】アクションゲームの地...
-
マインクラフト(pc版)で座標...
-
Cで回転プログラムの高速化を
-
位置座標からx軸となす角度(ラ...
-
MATLABの画像処理、2本の直線の...
-
回転する矩形同士の当たり判定...
-
最小二乗平面
-
画像の円形内による画素検出に...
-
Excel VBA ・・・教えてください
-
虚数は我々日常生活の身近なと...
-
ピクチャボックスの座標取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報