Как получить атрибут блокировки в Fbx SDK - PullRequest
0 голосов
/ 07 мая 2019

Я хочу экспортировать / импортировать информацию о скелете из Maya, используя Fbx SDK.Я могу получить информацию о переводе / повороте / масштабировании из FbxNode

Но я не знаю, как получить информацию о блокировке из fbx SDK, информация о блокировке означает свободу оси перевода или свободу степени вращения.

Я обнаружил, что класс FbxConstraint имеет атрибут блокировки, но я не знаю, как получить к нему доступ в FbxNode

FbxSkeleton* lSkeleton = (FbxSkeleton*)FNode->GetNodeAttribute();

        auto* bone = new ZBoneMSKel();
        FbxDouble3 translation = FNode->LclTranslation.Get();
        bone->set_translate(Zt_Vector3D{ translation[0],translation[1],translation[2] });
        FbxDouble3 joint_orientation = FNode->PreRotation.Get();
        bone->set_joint_orient(Zt_Vector3D{ degree2Radian(joint_orientation[0]),degree2Radian(joint_orientation[1]),degree2Radian(joint_orientation[2]) });
        FbxDouble3 rotation = FNode->LclRotation.Get();
        bone->set_rotate(Zt_Vector3D{ degree2Radian(rotation[0]),degree2Radian(rotation[1]),degree2Radian(rotation[2]) });
        FbxDouble3 rotation_axis = FNode->PostRotation.Get();
        bone->set_axis_rotate(Zt_Vector3D{ degree2Radian(rotation_axis[0]),degree2Radian(rotation_axis[1]),degree2Radian(rotation_axis[2]) });
        FbxDouble3 scaling = FNode->LclScaling.Get();
        bone->set_scaling(Zt_Vector3D{ scaling[0],scaling[1],scaling[2] });

/// how to access the lock info ?       

        bone->set_x_trans_limit(FNode->TranslationMinX, FNode->TranslationMaxX);
        bone->set_y_trans_limit(FNode->TranslationMinY, FNode->TranslationMaxY);
        bone->set_z_trans_limit(FNode->TranslationMinZ, FNode->TranslationMaxZ);
        bone->set_x_rotate_limit(FNode->RotationMinX, FNode->RotationMaxX);
        bone->set_y_rotate_limit(FNode->RotationMinY, FNode->RotationMaxY);
        bone->set_z_rotate_limit(FNode->RotationMinZ, FNode->RotationMaxZ);
...