ワールド行列の計算が怪しいので

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
atori
記事: 43
登録日時: 13年前

ワールド行列の計算が怪しいので

#1

投稿記事 by atori » 11年前

最近階層アニメーションを取得しようとしています。

もうすぐ出来そうなのですが、なんだかワールド変換行列に関する知識があやふやなままやっていたなと実感したので、
質問させていただきます。

各オブジェクトには、ワールド行列があります。これはわかります。
あるオブジェクトがあったとします。

そのオブジェクトはワールドに配置されるので、ワールド変換行列Wを持っています。
回転や移動もしたいので、回転用行列(Rx,Ry,Rz)と、平行移動行列Tも必要になります。
今は拡縮は考えません。

で、ワールド変換行列を求める式は、
W1=Rx*Ry*Rz*T
になるんですよね?(回転、移動は計算済み)

このW1をDirectXで言うならば、SetTransform()に渡してやればよいのでしょうか?

それとも、さっきの式を少し変えて、
W2=(Rx*Ry*Rz*T)*W
(あるいはW3=W*(Rx*Ry*Rz*T))
をSetTransform()に渡すのでしょうか?

W2はワールドを原点とした変換、括弧内のW3は自分のオブジェクト(ローカル)を原点とした変換になるんですよね?(逆か?)

なんだかこのあたりがかなりごちゃごちゃになっていて混乱しています。

最終的に3Dキャラを普通のゲームのように動かしたいのですが・・・
SetTransform()に渡す行列はW1~W3のどれになるのでしょうか?


初歩的な質問で申し訳ないのですが、よろしくお願いします。
Done is better than perfect.(Mark Elliot Zuckerberg)

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ワールド行列の計算が怪しいので

#2

投稿記事 by usao » 11年前

オフトピック
>SetTransform()に渡す行列はW1~W3のどれになるのでしょうか?
DirectX関連の話の内容はわかりませんが
候補が3つしかないなら,実際にその関数に渡してみて,結果を確認すれば一目瞭然だったりしないのでしょうか?

atori
記事: 43
登録日時: 13年前

Re: ワールド行列の計算が怪しいので

#3

投稿記事 by atori » 11年前

その通りです。ただ、確認したかっただけなのです。

このトピックは解決とさせていただきます。
Done is better than perfect.(Mark Elliot Zuckerberg)

閉鎖

“C言語何でも質問掲示板” へ戻る