模型在XNA中无法正确显示

时间:2012-02-15 09:42:46

标签: f# xna fbx

模型在XNA中无法正确显示,忽略了一些骨骼变形回复引用编辑 我是3D建模的新手,但是我需要为我所进行的项目做一些事情。

基本原则是我需要一个可以根据用户测量结果变形的人体模型(使用Kinect测量,但这是另一个故事!)。例如,我想为更大的用户等伸展胃部区域。

使用3Ds Max我已经能够使用两足动物装备人体模型,然后添加一些额外的骨头来改变胃:

enter image description here

这一切看起来都很好,但是当我把它加载到XNA中时,胃变形已经消失了 -

enter image description here

我有点不知道为什么会发生这种情况,并且欢迎提出任何建议,或者有关如何完成此类事情的教程的任何链接。

此外,当我在QuickTime的FBX查看器插件中查看导出的FBX时,变形显示绝对正常。

enter image description here

显示模型的代码(其F#代码,转换为c#示例,但我已使用原始c#代码尝试并得到相同的结果):

override this.Draw(gameTime)=
            // Copy any parent transforms.
            let (transforms:Matrix array) = Array.zeroCreate model.Bones.Count
            model.CopyAbsoluteBoneTransformsTo(transforms);
            this.Game.GraphicsDevice.BlendState <- BlendState.Opaque
            this.Game.GraphicsDevice.DepthStencilState <- DepthStencilState.Default
            // Draw the model. A model can have multiple meshes, so loop.
            for mesh in model.Meshes do
                // This is where the mesh orientation is set, as well 
                // as our camera and projection.
                for e:Effect in mesh.Effects do
                    let effect = e :?> BasicEffect
                    effect.EnableDefaultLighting()
                    effect.World <- mesh.ParentBone.Transform *
                        Matrix.CreateRotationZ(modelRotation)
                        * Matrix.CreateTranslation(modelPosition)
                    effect.View <- Matrix.CreateLookAt(cameraPosition, 
                        focusPoint, Vector3.Up)
                    effect.Projection <- Matrix.CreatePerspectiveFieldOfView(
                        MathHelper.ToRadians(45.0f), aspectRatio, 
                        1.0f, 10000.0f)
                // Draw the mesh, using the effects set above.
                mesh.Draw();
            base.Draw(gameTime);

想知道是否有人对出现问题或任何有关如何排序的想法有任何想法。

我们非常感谢任何建议。

由于

1 个答案:

答案 0 :(得分:3)

如果您将额外的骨骼添加到胃部,然后告诉max根据一些加权因子根据新骨骼变形某些关联的顶点,那么您需要修改Xna的默认内容处理器以告诉它如何构建模型考虑到这一点。默认情况下,它不会。

查看应用集线器上的Skinned模型示例:http://create.msdn.com/en-US/education/catalog/sample/skinned_model

当关节弯曲时,所有关节(肘部,膝盖等)都会变形。最终,您希望单个顶点受到多个变换的影响。