骨骼动画aspimp directX

时间:2018-08-15 14:53:26

标签: animation assimp skeletal-animation

skeletal deformation

我正在用动画加载网格物体,但我的问题是动画不正确,骨骼是变形变形。

在这部分代码中,我将矩阵相乘:

UINT numBones = mBoneOffsets.size();

std::vector<XMFLOAT4X4> toParentTransforms(numBones);

auto clip = mAnimations.find(clipName);
clip->second.Interpolate(timePos, toParentTransforms);

std::vector<XMFLOAT4X4> toRootTransforms(numBones);

toRootTransforms[0] = toParentTransforms[0];

for(UINT i = 1; i < numBones; ++i)
{
    XMMATRIX toParent = XMLoadFloat4x4(&toParentTransforms[i]);

    int parentIndex = mBoneHierarchy[i];
    XMMATRIX parentToRoot = XMLoadFloat4x4(&toRootTransforms[parentIndex]);

    XMMATRIX toRoot = XMMatrixMultiply(toParent, parentToRoot);
    toRoot = XMMatrixMultiply(toRoot, m_boneTransforms[i]);

    XMStoreFloat4x4(&toRootTransforms[i], toRoot);
}

for(UINT i = 0; i < numBones; ++i)
{
    XMMATRIX offset = XMLoadFloat4x4(&mBoneOffsets[i]);
    XMMATRIX toRoot = XMLoadFloat4x4(&toRootTransforms[i]);
    XMMATRIX finalTransform = XMMatrixMultiply(offset, toRoot);
    XMStoreFloat4x4(&finalTransforms[i], XMMatrixTranspose(finalTransform));

}enter code here

toParentTransforms包含每个骨骼的关键帧的插值。

我不确定这部分代码中是否有错误。

谢谢。

0 个答案:

没有答案