- ベストアンサー
メッシュの描画位置の平行移動
C++、DirectX9でゲームを作っている者です。 等間隔に2列並べたメッシュを真正面から見るようにカメラの設定をして表示した際、ウィンドウの中心からずれた位置が対称軸となるように描画位置を変更したいと思い、調べましたがどうすればよいのかわかりません。 説明が下手なのでわかりにくいかも知れませんが、わかる方がいれば回答お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
やっと理解しました。 そして残念ながら無理です。 |←この線はメッシュの中心線です。 | ■|■ ■|■ ■|■ | ↑ カメラ このメッシュが左右対称に表示されるために、 カメラのX軸の位置はこの線上になければならず、 カメラの角度はこの線に対して平行でなければなりません。 (間違ってるかも知れません) 画面上のレンダリング位置を変えるなど、 2D 的な処理が必要だと思われます。
その他の回答 (3)
- postal0x02
- ベストアンサー率42% (24/57)
Z軸を動かす際に、同時に注視点も動かしていますでしょうか? カメラの位置のX軸に 1 を足したら、 注視点の位置のX軸も 1 を足してみてください。 (このとき注視点も動かさないと、元の位置を見続けようとするため、 結果としてカメラはY軸で回転したように表示されます) ■←はメッシュ ・←は注視点 ■ ■ ■ ■ ■ ■ ・ ↑ カメラ ■ ■ ■ ■ ■ ■ ・ ↑ カメラ
補足
アドバイスありがとうございます。 ■ ■ ■ ■ ■ ■ ・ ↑ カメラ 確かに、このようにカメラと注視点を動かすことで、視界を横に移動させることはできるのですが、この場合ですと並んだメッシュを右から斜めに見ることになるので、2列のメッシュが対称に並んで見えないのです。 実装目標との比較のための画像をあげておきます。 こちらです。 http://mmi.sosite.jp/blog/u-files/1226678830.png なんとも我が侭な質問ですいません。
- postal0x02
- ベストアンサー率42% (24/57)
自分を中心にメッシュが回るイメージでしょうか? ・カメラをY軸で回転する ・カメラを中心にメッシュが回転する の2通りが考えられます。 動かしたいのはどちらでしょうか? たとえばメッシュが地面などのオブジェクトならば、 動くのはカメラです。 (大地を動かすのはおかしいです)
補足
動かしたいのは、メッシュを地面と考えて、カメラのほうです。 ただ、回転ではなくて、例えばカメラをZ軸方向に移動させた際、下の画像の2つ目のような形を保ったまま、見かけ上こちらに近づいてほしいのです。 イメージとしては、2列のメッシュの間の道を前に歩いてゆくような感じのものです。 度々の説明不足ですみませんが、よろしくお願いします。
- postal0x02
- ベストアンサー率42% (24/57)
カメラの位置を変更すればできる気がします。 もしくはメッシュをずらしてはどうでしょう? どうしたいのかが読み取れません。
補足
やはりわかりにくかったですか…すいません。 言葉ではこれ以上説明できそうにない為、説明のための画像を作ってみました。こちらです。 http://mmi.sosite.jp/blog/u-files/1226567454.png カメラの位置やメッシュの位置の変更で実装できるならそれが一番良いのですが… よろしくお願いします。
お礼
ありがとうございました。 IDirect3DDevice9::SetViewportにて解決いたしました。
補足
カメラの移動だけでは無理ですか… わかりました、ではやはりタイトル通り、メッシュの描画位置を平行移動できるような方法を調べてみます。 長々とお付き合い頂きありがとうございました。 お礼はまた後ほど。