Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这个XNA 4变形目标动画有什么问题_C#_Animation_Xna - Fatal编程技术网

C# 什么';这个XNA 4变形目标动画有什么问题

C# 什么';这个XNA 4变形目标动画有什么问题,c#,animation,xna,C#,Animation,Xna,我在Youtube上找到了XNA 3变形目标动画的演示: 以下是下载链接: 该项目在XNA 3(VS2008)中运行良好 然后我尝试升级到XNA4(VS2010) 我知道有什么不对劲,谁能从技术上告诉我哪里不对 欢迎提供任何提示、关键字 您可以在此处找到我的升级项目: 这个问题似乎是动画的计算错误。变形目标的“法线”值介于0f-1f之间,具体取决于变形的强度。当计算错误时,它可能上升到更高的水平。在计算多个变形目标之间的混合时,这也可能是一个问题 一些简单变形的数学代码: 顶点显示=((

我在Youtube上找到了XNA 3变形目标动画的演示:

以下是下载链接:

该项目在XNA 3(VS2008)中运行良好

然后我尝试升级到XNA4(VS2010)

我知道有什么不对劲,谁能从技术上告诉我哪里不对

欢迎提供任何提示、关键字

您可以在此处找到我的升级项目:


这个问题似乎是动画的计算错误。变形目标的“法线”值介于0f-1f之间,具体取决于变形的强度。当计算错误时,它可能上升到更高的水平。在计算多个变形目标之间的混合时,这也可能是一个问题

一些简单变形的数学代码:

顶点显示=((morphVertex-originalVertex)*morphValue)+originalVertex

现在,如果要在不同变形目标之间变形,例如,对于说话的角色,必须计算每个动画的
morphValue

如果此代码错误,顶点可能会出现在不应该出现的地方。设想以下示例(仅一个轴):

morphVertexResult[0]=((1f-0.2f)*0.6f)+0.2f)=0.68f
morphVertexResult[1]=((0.5f-0.2f)*0.7f)+0.2f)=0.41f
VertexResult[0]+morphVertexResult[1]=1.09f


在这种情况下,您得到的值为
1.09f
,但期望值必须介于
1f
0.2f
之间。正确的计算稍微复杂一点,上次使用变形目标时,我从3Ds Max获得变形值,它们已经被标准化了。

在不太了解XNA的情况下,我可能会首先确保我的视频驱动程序是最新的。当发生这种情况时,我可能会在这里读到关于破坏更改的内容:您好,@chrislive您是对的,有很多更改,我遵循此指南。谢谢,我将检查这部分的着色器。但是对于XNA 3和4,着色器是相同的,所以着色器不太可能是错误的。等等。。。有可能。。。因为某些功能在XNA中可能不可用4@DuSijun你指的是什么功能?我认为着色器应该向下兼容。您好,请参阅项目中的MorphingEffect.fx。变形由着色器完成。