Skip to content

Commit

Permalink
EMSUSD-1719 units prefs during import
Browse files Browse the repository at this point in the history
When using the overwrite-prefs method to change the units during import, we need to compare with teh Maya UI units, not the internal units. (When using the scaling method, we are scaling to internal units.)
  • Loading branch information
pierrebai-adsk committed Oct 10, 2024
1 parent 0668bf5 commit fab8094
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/mayaUsd/fileio/jobs/readJob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -495,8 +495,13 @@ void UsdMaya_ReadJob::_ConvertUpAxisAndUnits(const UsdStageRefPtr& stage)

// Convert units if required and different between Maya and USD.
const bool convertUnits = mArgs.unit;
conversion.mayaMetersPerUnit
= UsdMayaUtil::ConvertMDistanceUnitToUsdGeomLinearUnit(MDistance::internalUnit());
// Note: when changing preference, we need to compare to the UI units.
// When adding scaling transforms, we need to compare to internal units.
const MDistance::Unit mayaUnits
= (mArgs.axisAndUnitMethod == UsdMayaJobImportArgsTokens->overwritePrefs)
? MDistance::uiUnit()
: MDistance::internalUnit();
conversion.mayaMetersPerUnit = UsdMayaUtil::ConvertMDistanceUnitToUsdGeomLinearUnit(mayaUnits);
conversion.usdMetersPerUnit = UsdGeomGetStageMetersPerUnit(stage);
conversion.needUnitsConversion
= (convertUnits && (conversion.mayaMetersPerUnit != conversion.usdMetersPerUnit));
Expand Down

0 comments on commit fab8094

Please sign in to comment.