modelmesh在XNA中的位置

modelmesh在XNA中的位置,model,matrix,xna,position,Model,Matrix,Xna,Position,如何在XNA(全局坐标)中找到模型内部网格的向量3位置 我在搅拌机里做了一个简单的灯柱模型。在灯光应该位于的位置,我将一个单个垂直方向作为它自己的对象,并将其命名为“灯光”,在位置,典型的灯光将位于灯柱中 在我的XNA程序中,我想在模型的位置放置一个浮点灯。我可以通过名称找到网格。但是需要“灯光”网格的矢量3位置来执行此操作。这取决于如何根据网格/骨骼层次设置模型。最终,将灯光(灯泡)矩阵与其父矩阵相乘,父矩阵首先与其父矩阵相乘,依此类推到根,然后获取结果的平移属性。有一个内置的方法来实现这一点

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

我在搅拌机里做了一个简单的灯柱模型。在灯光应该位于的位置,我将一个单个垂直方向作为它自己的对象,并将其命名为“灯光”,在位置,典型的灯光将位于灯柱中


在我的XNA程序中,我想在模型的位置放置一个浮点灯。我可以通过名称找到网格。但是需要“灯光”网格的矢量3位置来执行此操作。

这取决于如何根据网格/骨骼层次设置模型。最终,将灯光(灯泡)矩阵与其父矩阵相乘,父矩阵首先与其父矩阵相乘,依此类推到根,然后获取结果的平移属性。有一个内置的方法来实现这一点,称为Model.copyAbsoluteBonetTransformsTo(矩阵[])


好吧,这是有道理的,我只是试了一下,它肯定很接近。我已经检查了网格的位置,它们位于正确的位置。有什么特别的原因造成这种差异吗?/有没有什么方法可以让我把我的代码贴在你的邮箱里?你可以把它粘贴到一个粘贴箱里,我可以从那里查看它。如果可以,也可以以ascii格式导出fbx并粘贴该格式。好的,模型是7mb,所以它不适合粘贴位(上限为500kb)。我将在第一部分中介绍我正在使用的两个类,它们特别相关。和正常人一样。你会发现,我的灯光被称为“light_down_255_255_255”,这是因为我要在程序中解析它以使灯光(面朝下,变为白色)感谢你迄今为止的帮助。我的电子邮件地址在我的帐户个人简历中。我想我需要整个7mb来帮助
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)