如何重新创建XNA's SkinnedModelProcessor

本文关键字:SkinnedModelProcessor 何重新 创建 XNA | 更新日期: 2023-09-27 18:08:10

我有一个被操纵和蒙皮的模型,我希望能够以编程方式移动骨骼(而不是存储在fbx文件中的预设动画)

我可以很好地加载模型,并看到骨骼已经加载,但改变骨骼转换似乎并不影响渲染模型。

我正在看这里的示例项目:

http://create.msdn.com/en-US/education/catalog/sample/skinned_model

看起来它使用了一个扩展的ModelProcessor(又名SkinnedModelProcessor)来覆盖defaulteeffect并返回一个materialprocessordefaulteeffect . skinnedeffect。我猜,沿着这条线的某个地方,这使得渲染器转换网格顶点使用模型骨骼(与顶点着色器??)

我有问题得到这个SkinnedModelProcessor在我自己的项目中工作。该示例使用microsoft . xnaframework . content . pipeline程序集。在我的项目中,我没有在。net引用的常规列表中看到该项目。所以我从文件系统手动添加了它。

问题是,一旦我编译,visual studio说它找不到命名空间,即使直到我编译它显示一切正常

如何在我自己的项目中从示例中重新创建SkinnedModelProcessor

我怎么能得到变化的骨头反映在我的渲染模型?

如何重新创建XNA's SkinnedModelProcessor

我也遇到过同样的问题,我正在创建自己的简单蒙皮模型操纵器。目前最简单的方法是在AnimationPlayer类中创建一个新方法,允许你修改boneTransforms。

为了你的帮助,我做了这样的东西:

    public void SetPose(Matrix rootTransform, Matrix[] boneAlteration)
    {
        skinningDataValue.BindPose.CopyTo(boneTransforms, 0);
        for (int i = 0; i < boneTransforms.Length; i++)
        {
            boneTransforms[i] = boneAlteration[i] * boneTransforms[i];
        }
        UpdateWorldTransforms(rootTransform);
        UpdateSkinTransforms();
    } 

对于这个方法,矩阵数组bonealter只是一个用于保持原始bindPose的单位矩阵数组。在将任何矩阵传递给此方法之前更改它以旋转相应索引的骨骼。

获取管道程序集的引用之所以如此成问题,似乎是因为您必须使用XNA内容管道扩展库项目模板

将该代码隔离到单独的特殊项目中。
相关文章:
  • 没有找到相关文章