1

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

http://www.youtube.com/watch?v=e6PLtA7wgg0

这是下载链接:

http://mvinetwork.co.uk/permanent/morphtargets/MorphTargetAnimation.zip

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

在此处输入图像描述

然后我尝试将其升级到 XNA 4 (VS2010)

在此处输入图像描述

我知道有问题,谁能告诉我技术上的问题是什么?

欢迎任何提示,关键字。

你可以在这里找到我的升级项目:

http://code.google.com/p/stack-overflow-questions/downloads/list

4

1 回答 1

2

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

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

vertexPosition = ((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
vertexPosition = morphVertexResult[0] + morphVertexResult[1] = 1.09f

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

于 2012-11-12T15:33:27.673 回答