如何将两个XNA模型连接在一起?

我回到未解决的问题,我问了两个模型连在一起,你能给我一些帮助吗?

例如,如果我想将Model1(=主模型)和Model2连接在一起? 我必须得到Model1的变换matrix,并在模型1上得到我想要附加Model2的Bone索引,然后应用一些变换将Model2附加到Model1

我在下面写了一些代码,但它根本不起作用! (我的代码的第6行似乎是错的!)

Model1TransfoMatrix=New Matrix[Model1.Bones.Count]; Index=Model1.bone[x].Index; foreach (ModelMesh mesh in Model2.Meshes) { foreach(BasicEffect effect in mesh.effects) { matrix model2Transform = Matrix.CreateScale(0.1.0f)*Matrix.CreateFromYawPitchRoll(x,y,z); effect.World= model2Transform *Model1TransfoMatrix[Index]; effect.view = camera.View; effect.Projection= camera.Projection; } mesh.draw(); } 

你的问题是相当抽象的。

我会建议2种方法。

  1. 使用3d的redactor如3dmax或搅拌机或其他。

  2. 使用model1的SINGLE BONE绝对变换绘制第二个模型。

它应该看起来像:

 Matrix[] Model1TransfoMatrix; model1.CopyAbsoluteBoneTransformsTo(Model1TransfoMatrix); foreach (ModelMesh mesh in Model2.Meshes) { foreach(BasicEffect effect in mesh.effects) { matrix model2Transform = Matrix.CreateScale(0.1.0f)*Matrix.CreateFromYawPitchRoll(x,y,z); effect.World= model2Transform *Model1TransfoMatrix[0]; //root bone index effect.view = camera.View; effect.Projection= camera.Projection; } mesh.draw(); }