[過去ログ] ゲームプログラミング相談室【Part5】 (970レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
12(7): 02/11/08 13:56 ID:mLnGgDjl(1) AAS
わたしも 3D座標をスクリーン座標に変換する方法が知りたいです。
座標xyzをwで割るらしいのですが、xyzwの求め方がわかりません。
xyzはただの3D座標なのでしょうか? それとも何かの行列を
掛けたりしているのでしょうか?
wはどこからでてくるのでしょうか?
すみませんが 教えていただけませんか?
15(2): 02/11/08 21:41 ID:??? AAS
>>12
オブジェクトのローカル座標に、ローカル・ワールド変換行列、ワールド・ビュー
変換行列、ビュー・スクリーン変換行列(a.k.a 射影行列) と順にかけて、出てき
た座標を w で割れば良い。
行列だけど、DirectX 使ってるなら SetTransform() に
D3DTS_WORLD
D3DTS_VIEW
D3DTS_PROJECTION
という第一引数を指定して渡してるヤツ。
>>13
まぁ、サンプルコードを深く理解せずに copy & paste してるんでしょう。趣味
でプログラミングしてるなら、そういう態度もアリだとは思うよ。
20(1): 12 02/11/09 01:55 ID:s6gdDMqC(1/5) AAS
>>15
ビュー行列 と 射影行列を掛けたものと、 3D座標を 掛けたの
ですが、でた xyzwで
x/w
y/w
z/w
をやってみたのですよ。
しかし、 値が1.0を超えているにもかかわらずスクリーンの端
にまで、 ラインが(この時二つの座標を線で結んでいました。)
届いてませんでした。
なので、 やり方が違うのかなとおもいまして・・・・
22: 12 02/11/09 02:14 ID:s6gdDMqC(2/5) AAS
>>21
すばやいレスありがとうございます。
2点をラインで描画しました。
ビュー行列 matView
射影行列 matProj
調べたい座標 Vec
計算後の値 v4
mat = matView * matProj
D3DXVec3Transform(&v4,Vec,mat);
Vecとmatを計算して求められた 値をwで割る
v4.x/v4.w
v4.y/v4.w
v4.z/v4.w
ここで スクリーン座標が求められるはずです。
スクリーン座標の値は xyに関しては -1〜1 zは 0〜1に なるはず
だけれど、 その値を超えたにもかかわらず そのラインは
画面の端まで届きませんでした。
mat = matProj* matView
でやってみても 値は変わりますが、 ラインが端まで届きません。
なので、計算の仕方が間違ってるのか、それか根本が間違っている
かどちらかだとおもうのです。
24: 12 02/11/09 03:44 ID:s6gdDMqC(3/5) AAS
>>23
すみません。 たしかに、 640,480のウインドウを値(1.0,1.0)に
する必要がありますが、 このビューポートを実際どのように
使えばいいのか。
25: 12 02/11/09 05:27 ID:s6gdDMqC(4/5) AAS
>>23
もとめられた値に windowのサイズの半分を掛けて
あげればよいのでしょうか?
640,480のウインドウなら320,240をそれぞれ掛けてあげる
x = x*320;
y = y*240;
それですと 一応それらしき値はでます。
30: 12 02/11/09 17:41 ID:s6gdDMqC(5/5) AAS
>>26
>>ちゅーしんをあーわーせーろー。
中心ですか
どうやってあわせるのだろう・・・・・
視点と注視点から 角度を求めて それを 頂点に掛けて
あげるのでしょうか・・・
うーんでも、ビュー行列を掛けたときにすでに入っているような気も
しないでもないですね。
35: 12 02/11/10 03:52 ID:CLex+uUH(1) AAS
>>33
私も とりあえず、足せば良いのかなと思いやってみたのですが
うまくいきませんでした。
>あーとーはーじぶーんでなーんとかしれー
いろいろご指導ありがとうございました。
いろいろ試して見たいと思います。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.023s