0

XNA (グローバル座標) のモデル内のメッシュのベクトル 3 位置をどのように見つけますか?

ブレンダーで簡単な街灯柱のモデルを作りました。ライトがあるべき場所に、1つの頂点を独自のオブジェクトとして配置し、「ライト」という名前を付けました。これは、典型的なライトが街灯柱にある位置にあります。

私の XNA プログラムでは、モデルからの位置に浮動小数点ライトを配置したいと考えています。名前でメッシュを見つけることができます。ただし、それを行うには、「ライト」メッシュのVector3 位置が必要です。

4

1 に答える 1

1

これは、メッシュ/ボーン階層の観点からモデルがどのように設定されているかによって異なります。最終的に、ライト(電球)マトリックスに、最初に親で乗算された親を乗算し、ルートまで続き、結果の変換プロパティを取得します。Model.CopyAbsoluteBoneTransformsTo(Matrix [])と呼ばれるこれを行うための組み込みメソッドがあります

Matrix[] transforms = new Matrix[SimpleLampPostModel.Bones.Count];
SimpleLampPostModel.CopyAbsoluteBoneTransformsTo(transforms);

Vector3 lightPosition = transforms[SimpleLampPostModel.Meshes["light"].parentBone.Index].Translation;
lightPosition += modelWorld.Translation;// if the model is located in some arbitrary location in your 3d
                                        // world as represented by a world matrix (modelWorld)
于 2013-02-14T22:07:29.953 に答える