投稿
InDoor TheInDoor12
ビュー変換について、どうしてもわからないことがありまして...。 誰か、助けて下さい~ 【詳しくはコメントへ。】
4そうだね
プレイ済み
返信[1]
親投稿
InDoor TheInDoor12
まず、自分が理解していることは... ・最初に、カメラを原点に平行移動させるのと同じ量だけ各頂点を平行移動させること ・回転行列の公式を使ってその頂点を回転移動させること →ビュー変換完了
0そうだね
プレイ済み
返信[2]
親投稿
InDoor TheInDoor12
自分がわからないこと ・カメラの向きの表現について (自分は、ベクトルのようなもので向きを表現しているのですがそれが正しいのかどうか...) ・回転行列への当てはめかた (今のところ、まずATANを使ってXを 軸にしたときの回転量を求め、その回転量でカメラベクトルを回し、またATANを使ってYを軸にしたときの回転量を求め、それらを各頂点に適用する、というやり方をしています。でも、それだとバグが出る...) 補足 ・左手座標系です。 ・カメラベクトルが、(0,0,1)の方向を向くように回し、その角度をそのまま各頂点に適用しています。 ・カメラの上は定義していません。もしかしたらこれが原因かも...
0そうだね
プレイ済み
返信[3]
親投稿
InDoor TheInDoor12
バグで苦しんでいるものの公開キーです。 【QRADA3A3】 コメントが少ないのでコードは読みにくいかもしれませんが、バグの確認などに使ってください。 ←→でカメラのX座標 ↑↓でY座標 XYでZ座標を変更できます。 また、カメラは自動的に原点の方向を向くようになっています。 出るバグは、「立方体の横にまわろうとすると、ビュー変換でのX方向の回転角度が変になる」というものです。 あと、カメラの後ろに頂点があると表示がおかしくなるのは仕様です。
0そうだね
プレイ済み
返信[4]
親投稿
InDoor TheInDoor12
とんでもなく長い説明になってしまいましたが、どなたかよろしくお願いします...。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
私が試した範囲では「立方体の横にまわろうとすると、ビュー変換でのX方向の回転角度が変になる」というバグは出ませんでしたし、その原因となりそうなものはプログラムリストからは見つかりませんでした。 カメラの後ろに頂点があるとおかしくなるのは一般的な3DCGの仕様なので仕方がないですね。そのため普通はニアクリップとファークリップを設定してニアクリップより手前、ファークリップより奥は表示をしません。つまり、適切に表示できる範囲をあらかじめ決めておくということですね。
0そうだね
プレイ済み
返信[6]
親投稿
べー mmmggg
変になるっていうのは起動直後に→を押してXを押して裏に回ろうとしたとき、みたいな動作のときですね? (このことだと仮定して話を進めると) これ、途中で回ってる方向が逆になっているように見えますが みえるだけで、実際はカメラがひっくり返っています 最初にちょっと↑を押してから→Xとしてみてください。 カメラを考えるときはカメラの向いている方向だけでなくカメラの上がどこを向いているかを考える必要があります。 汎用的にはカメラの向きのベクトルのほかにそれと垂直な上方向を示すベクトルを保持しておき、カメラの向きを合わせるのと一緒にそのベクトルの向きも合わせます。 簡易は方法はカメラの向きによって上がど子を向くかをシステムで固定させる方法です。これだと回転の順番を考えるだけで向きがそろったりしますが、カメラの自由度は下がります。
0そうだね
プレイ済み
返信[7]
親投稿
InDoor TheInDoor12
>>おちゃめさん ニアクリップ、ファークリップですかー。勉強になります。 >>ベーさん やはり、カメラの上を定義していないのが原因でしたか...。薄々気付いてはいたんですが、面倒で試していませんでした...。バグについては、まさにそのとおりです。早速、試してみます。 お二人とも、本当にありがとうございました!
0そうだね
プレイ済み
返信[8]
親投稿
InDoor TheInDoor12
苦戦中...。 原因はわかっていても、修正がうまくいかない...。中学卒業までにできるかなあ? 進んだことといえば、ニアクリップがついたぐらい。 このままじゃ死んでも成仏できんよお!
0そうだね
プレイ済み