0

您如何在 XNA 中找到模型内部网格的矢量 3 位置(在全局坐标中)?

我在搅拌机中制作了一个简单的灯柱模型。灯光应该在哪里,我将一个顶点作为它自己的对象,并将其命名为“Light”,在典型的灯在灯柱中的位置。

在我的 XNA 程序中,我想在模型的位置放置一个浮点光。我可以按名称找到网格。但需要“Light”网格的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 回答