【问题标题】:Model doesn't display correctly in XNA模型在 XNA 中无法正确显示
【发布时间】:2012-03-06 15:41:33
【问题描述】:

模型在 XNA 中无法正确显示,忽略了一些骨骼变形回复引用编辑 我对 3D 建模非常陌生,但是我需要为我承担的项目做一些事情。

基本原则是我需要一个可以变形为用户测量值的人体模型(使用 Kinect 测量,但那是另一回事了!)。例如,我想为较大的用户拉伸腹部等。

使用 3Ds Max 我已经能够使用 Biped 装配人体模型,然后添加一些额外的骨骼来改变胃:

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

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

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

显示模型的代码(它的 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);

想知道是否有人对出了什么问题有任何想法或对如何排序有任何想法。

任何建议将不胜感激。

谢谢

【问题讨论】:

    标签: f# xna fbx


    【解决方案1】:

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

    查看应用中心上的蒙皮模型示例:http://create.msdn.com/en-US/education/catalog/sample/skinned_model

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

    【讨论】:

    • 在研究该示例时,请专注于 BlendWeight 和 BlendIndices 概念,而不是示例的动画方面。
    • 好的,太好了,我相信这会很有帮助。总之很有道理!我会好好看看,看看我能不能让它工作。非常感谢您的帮助
    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 2012-07-30
    • 2011-12-22
    • 2023-03-31
    • 1970-01-01
    • 2014-12-28
    相关资源
    最近更新 更多