Selaa lähdekoodia

Assimp importer use DCC (Y-Up) coordinate system by default. (#18627)

This aims to fix the issue where some glTF files being imported with
wrong rotations.

Signed-off-by: Ross Charles Campbell <[email protected]>
Ross Charles C. 6 kuukautta sitten
vanhempi
commit
8fff90124e

+ 2 - 2
Code/Tools/SceneAPI/SDKWrapper/AssImpSceneWrapper.cpp

@@ -167,7 +167,7 @@ namespace AZ
 
         AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> AssImpSceneWrapper::GetUpVectorAndSign() const
         {
-            AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> result(AxisVector::Z, 1);
+            AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> result(AxisVector::Y, 1);
             int32_t upVectorRead(static_cast<int32_t>(result.first));
             m_assImpScene->mMetaData->Get("UpAxis", upVectorRead);
             m_assImpScene->mMetaData->Get("UpAxisSign", result.second);
@@ -177,7 +177,7 @@ namespace AZ
 
         AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> AssImpSceneWrapper::GetFrontVectorAndSign() const
         {
-            AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> result(AxisVector::Y, 1);
+            AZStd::pair<AssImpSceneWrapper::AxisVector, int32_t> result(AxisVector::Z, -1);
             int32_t frontVectorRead(static_cast<int32_t>(result.first));
             m_assImpScene->mMetaData->Get("FrontAxis", frontVectorRead);
             m_assImpScene->mMetaData->Get("FrontAxisSign", result.second);

+ 1 - 2
Code/Tools/SceneAPI/SceneBuilder/SceneSystem.cpp

@@ -67,8 +67,7 @@ namespace AZ
 
             AZStd::pair<AssImpSDKWrapper::AssImpSceneWrapper::AxisVector, int32_t> frontAxisAndSign = assImpScene->GetFrontVectorAndSign();
 
-            if (upAxisAndSign.first != AssImpSDKWrapper::AssImpSceneWrapper::AxisVector::Z &&
-                upAxisAndSign.first != AssImpSDKWrapper::AssImpSceneWrapper::AxisVector::Unknown)
+            if (upAxisAndSign.first != AssImpSDKWrapper::AssImpSceneWrapper::AxisVector::Z)
             {
                 AZ::Matrix4x4 currentCoordMatrix = AZ::Matrix4x4::CreateIdentity();
                 //(UpVector = +Z, FrontVector = +Y, CoordSystem = -X(RightHanded))