Skip to content

Commit 08f7228

Browse files
committed
Fix broken Handedness test
MeshImporter was always changing handedness regardless of the importOptions. Cameras were not sanitized so I added a new SanitizedCameraSample
1 parent c14d31f commit 08f7228

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

package/com.unity.formats.usd/Runtime/Scripts/IO/SanitizedSamples.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ public void Sanitize(Scene scene, SceneImportOptions importOptions)
2929
}
3030
}
3131

32+
/// <summary>
33+
/// A sanitizable version of an CameraSample. Enable automatic change of handedness.
34+
/// </summary>
35+
public class SanitizedCameraSample : CameraSample, ISanitizable
36+
{
37+
public void Sanitize(Scene scene, SceneImportOptions importOptions)
38+
{
39+
if (importOptions.changeHandedness != BasisTransformation.FastWithNegativeScale)
40+
ConvertTransform();
41+
}
42+
}
43+
3244
/// <summary>
3345
/// A sanitizable version of a MeshSample. Enable automatic triangulation/handedness change/attribute interpolation conversion.
3446
/// </summary>
@@ -69,14 +81,15 @@ public class SanitizedMeshSample : MeshSample, ISanitizable
6981
/// </summary>
7082
public void Sanitize(Scene scene, SceneImportOptions importOptions)
7183
{
84+
var changeHandedness = importOptions.changeHandedness == BasisTransformation.SlowAndSafe ||
85+
importOptions.changeHandedness == BasisTransformation.SlowAndSafeAsFBX;
7286
// Start with the xform
73-
if (importOptions.changeHandedness != BasisTransformation.FastWithNegativeScale)
87+
if (changeHandedness)
7488
ConvertTransform();
7589

7690
var santizePrimvars = importOptions.ShouldBindMaterials ||
7791
scene.IsPopulatingAccessMask || scene.AccessMask != null; //this is true when reading from the timeline
7892

79-
var changeHandedness = true;
8093
var unwindVertices = ShouldUnwindVertices(changeHandedness);
8194
if (points == null)
8295
return;

package/com.unity.formats.usd/Runtime/Scripts/IO/Scene/SceneImporter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,11 +711,12 @@ public static IEnumerator BuildScene(Scene scene,
711711
if (importOptions.importCameras)
712712
{
713713
Profiler.BeginSample("USD: Cameras");
714-
foreach (var pathAndSample in scene.ReadAll<CameraSample>(primMap.Cameras))
714+
foreach (var pathAndSample in scene.ReadAll<SanitizedCameraSample>(primMap.Cameras))
715715
{
716716
try
717717
{
718718
GameObject go = primMap[pathAndSample.path];
719+
pathAndSample.sample.Sanitize(scene, importOptions);
719720
NativeImporter.ImportObject(scene, go, scene.GetPrimAtPath(pathAndSample.path), importOptions);
720721
XformImporter.BuildXform(pathAndSample.path, pathAndSample.sample, go, importOptions, scene);
721722

0 commit comments

Comments
 (0)