diff --git a/build_files/build_environment/cmake/fribidi.cmake b/build_files/build_environment/cmake/fribidi.cmake index e2adb7bae0d..9f1790c6d39 100644 --- a/build_files/build_environment/cmake/fribidi.cmake +++ b/build_files/build_environment/cmake/fribidi.cmake @@ -12,7 +12,7 @@ ExternalProject_Add(external_fribidi DOWNLOAD_DIR ${DOWNLOAD_DIR} PREFIX ${BUILD_DIR}/fribidi - CONFIGURE_COMMAND + CONFIGURE_COMMAND ${CONFIGURE_ENV} && ${MESON} setup --prefix ${LIBDIR}/fribidi ${MESON_BUILD_TYPE} diff --git a/lib/windows_arm64 b/lib/windows_arm64 index 06a9cd56a27..181d15c1c64 160000 --- a/lib/windows_arm64 +++ b/lib/windows_arm64 @@ -1 +1 @@ -Subproject commit 06a9cd56a271b0d44a600858aedc8e32d18229a9 +Subproject commit 181d15c1c640d826c593b54ce097894a1710977e diff --git a/source/blender/io/usd/intern/usd_light_convert.cc b/source/blender/io/usd/intern/usd_light_convert.cc index c78822b0584..3fd3cef91f3 100644 --- a/source/blender/io/usd/intern/usd_light_convert.cc +++ b/source/blender/io/usd/intern/usd_light_convert.cc @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -533,6 +535,19 @@ void dome_light_to_world_material(const USDImportParams ¶ms, pxr::UsdGeomXformCache xf_cache(motionSampleTime); pxr::GfMatrix4d xf = xf_cache.GetLocalToWorldTransform(dome_light.GetPrim()); + pxr::UsdStageRefPtr stage = dome_light.GetPrim().GetStage(); + + if (!stage) { + CLOG_WARN( + &LOG, "Couldn't get stage for dome light %s", dome_light.GetPrim().GetPath().GetText()); + return; + } + + if (pxr::UsdGeomGetStageUpAxis(stage) == pxr::UsdGeomTokens->y) { + /* Convert from Y-up to Z-up with a 90 degree rotation about the X-axis. */ + xf *= pxr::GfMatrix4d().SetRotate(pxr::GfRotation(pxr::GfVec3d(1.0, 0.0, 0.0), 90.0)); + } + xf = pxr::GfMatrix4d().SetRotate(pxr::GfRotation(pxr::GfVec3d(0.0, 0.0, 1.0), -90.0)) * pxr::GfMatrix4d().SetRotate(pxr::GfRotation(pxr::GfVec3d(1.0, 0.0, 0.0), -90.0)) * xf;