我正在尝试使用虚幻引擎5在C++中旋转网格的骨骼

xt0899hw  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(343)

我正在尝试使用虚幻引擎5在C++中旋转网格的骨骼。
我已经尝试使用USkeletalMeshComponent和UAnimInstance来获取骨骼变换并更新动画,但我遇到了类似“USkeletalMeshComponent没有成员SetBoneTransform”的错误。我正在寻求帮助来解决这个问题。

USkeletalMeshComponent* mesh = GetMesh();
UAnimInstance* animInstance = mesh->GetAnimInstance();

FName boneName = "head";
int32 boneIndex = mesh->GetBoneIndex(boneName);

while (true)
{
FQuat rotation = FQuat::MakeFromEuler(FVector(0.f, 0.f, 45.f));
FVector location(100.f, 0.f, 0.f); // example location
FVector scale(1.f, 1.f, 1.f); // example scale
FTransform newTransform(rotation, location, scale);

FTransform boneTransform = mesh->GetBoneTransform(boneIndex, FTransform::Identity);
boneTransform = newTransform;
mesh->SetBoneTransform(boneIndex, boneTransform, EBoneSpaces::WorldSpace);

animInstance->UpdateAnimation(0.f, false);
}
}
iibxawm4

iibxawm41#

事实上,SkeletalMeshComponent没有直接访问和转换骨骼的方法,我遇到了同样的问题,我使用PoseableMesh解决了这个问题:https://docs.unrealengine.com/5.1/en-US/BlueprintAPI/Components/PoseableMesh/

PoseMesh->SetBoneTransformByName(
    myBoneName, 
    myBoneTranform,
    EBoneSpaces::ComponentSpace
);

相关问题