トピック
yuy(α) studio-reader

三次元の点の行列計算

行列計算自体の実装はできましたが、 今度はベクターと行列の計算の仕方が分かりません。 xyz回転行列x移動行列とやってみたら、オブジェクトの原点ではなく、ワールドの原点を中心に回転してしまいます。 これを解決するにはどうすればいいのでしょうか?
3そうだね
プレイ済み
返信[1]
親投稿
yuy(α) studio-reader
問題のプログラムの公開キーを公開します。 回転が板の中心で行われていないことがわかります。 公開キー【VKCXH3R4】
1そうだね
プレイ済み
返信[2]
親投稿
MIKI ifconfig
平行移動してから回転させてるんじゃないの? 回転行列は原点中心だから、 あっちにある図形をその位置で回転させるには、 ローカル座標系で回転させといてから平行移動する。 行列では AxB と BxA は等しくならないので、順番に注意ね。 座標を行で表す方式 (P' = PxA) だと P'=Px回転行列x平行移動行列 列で表す方式(P'=AxP)だったら P'=平行移動行列x回転行列xP てな感じ。
0そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
「ジオメトリパイプライン」とか「レンダリングパイプライン」で調べてみてちょ。 そんで、気になってたんだけど、4x3行列じゃなくて4x4行列にしといたほうがいいと思います。
0そうだね
プレイ済み
返信[4]
親投稿
yuy(α) studio-reader
ううむ? スクリーンショットのソースコードの順番を見る限りだと、回転行列x移動行列になっているのですが… ソースコードにすると違うのか、それとも他の部分がおかしいのか… (MAT44_OPは行列同士の掛け算、 MAT44_SETTRANSは移動行列の代入、 MAT44_SETROTX,Y,Zは回転行列の代入です。)
0そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
スクショ見る限りはよさそうに見えますね~ 試しに 121 の処理を 118 行の前に持ってくと?
0そうだね
プレイ済み
返信[6]
親投稿
yuy(α) studio-reader
えうれかぁ! 遠近感おかしいけどうまくいきました。 座標変換2回やってどうすんだよ… MIKIさんありがとうございました。
0そうだね
プレイ済み