diff --git a/package/com.unity.formats.usd/Tests/Common/BaseFixture.cs b/package/com.unity.formats.usd/Tests/Common/BaseFixture.cs index 6c5022be8..1f5278d59 100644 --- a/package/com.unity.formats.usd/Tests/Common/BaseFixture.cs +++ b/package/com.unity.formats.usd/Tests/Common/BaseFixture.cs @@ -29,6 +29,8 @@ public abstract class BaseFixture protected string ArtifactsDirectoryName => "Artifacts"; protected string ArtifactsDirectoryFullPath => Path.Combine(Application.dataPath, ArtifactsDirectoryName); protected string ArtifactsDirectoryRelativePath => Path.Combine("Assets", ArtifactsDirectoryName); + protected string TestAssetDirectoryName => TestAssetData.Directory.FolderName; + protected string TestUsdAssetDirectoryRelativePath => Path.Combine("Packages", "com.unity.formats.usd", "Tests", "Common", "Data", TestAssetDirectoryName); public string GetUnityScenePath(string sceneName = null) { @@ -60,7 +62,7 @@ public string GetUSDScenePath(string usdFileName = null) return Path.Combine(ArtifactsDirectoryFullPath, usdFileName); } - public string GetPrefabPath(string prefabName = null) + public string GetPrefabPath(string prefabName = null, bool resource = false) { if (string.IsNullOrEmpty(prefabName)) { @@ -72,7 +74,16 @@ public string GetPrefabPath(string prefabName = null) prefabName += ".prefab"; } - return Path.Combine(ArtifactsDirectoryRelativePath, prefabName); + return Path.Combine(ArtifactsDirectoryRelativePath, resource ? "Resources" : "", prefabName); + } + + public string GetTestAssetPath(string fileName) + { + if (!fileName.EndsWith(TestAssetData.Extension.Usda)) + { + fileName += TestAssetData.Extension.Usda; + } + return Path.GetFullPath(Path.Combine(TestUsdAssetDirectoryRelativePath, fileName)); } public string CreateTmpUsdFile(string fileName = "tempUsd.usda") @@ -117,14 +128,28 @@ public void CleanupTestArtifacts() Directory.Delete(ArtifactsDirectoryFullPath, true); } - if (File.Exists(ArtifactsDirectoryFullPath.TrimEnd('/') + ".meta")) + DeleteMetaFile(ArtifactsDirectoryFullPath); + +#if UNITY_EDITOR + // TODO: If materialImportMode = MaterialImportMode.ImportPreviewSurface, it creates all the texture2d files on the root assets + // Figure out if the texture2ds can be set into a different location - such as our artifacts directory + foreach (var textureArtifactGUID in AssetDatabase.FindAssets("t:texture2D", new string[] { "Assets" })) { - File.Delete(ArtifactsDirectoryFullPath.TrimEnd('/') + ".meta"); + var textureFilePath = Path.GetFullPath(AssetDatabase.GUIDToAssetPath(textureArtifactGUID)); + File.Delete(textureFilePath); + DeleteMetaFile(textureFilePath); } -#if UNITY_EDITOR AssetDatabase.Refresh(); #endif } + + private void DeleteMetaFile(string fullPath) + { + if (File.Exists(fullPath.TrimEnd('/') + ".meta")) + { + File.Delete(fullPath.TrimEnd('/') + ".meta"); + } + } } } diff --git a/package/com.unity.formats.usd/Tests/Common/CustomAsserts.meta b/package/com.unity.formats.usd/Tests/Common/CustomAsserts.meta new file mode 100644 index 000000000..3db060dbd --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/CustomAsserts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33dd655014c327443b620639dafef15d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs b/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs new file mode 100644 index 000000000..4dbf0956b --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs @@ -0,0 +1,118 @@ +using UnityEngine; +using NUnit.Framework; + +namespace Unity.Formats.USD.Tests +{ + public static class ImportAssert + { + public static class Editor + { + enum ObjectTypeName + { + UsdPlayableAsset = 0, + GameObject = 1, + Material = 2, + UsdPrimSource = 3 + } + + public static void IsValidImport(Object[] usdAsObjects, int expectedGameObjectCount, int expectedPrimSourceCount, int expectedMaterialCount) + { + Assert.NotZero(usdAsObjects.Length); + + bool playableAssetFound = false; + int gameObjectCount = 0; + int materialCount = 0; + int usdPrimSourceCount = 0; + + foreach (Object childObject in usdAsObjects) + { + switch (childObject.GetType().Name) + { + case nameof(ObjectTypeName.UsdPlayableAsset): + playableAssetFound = true; + break; + + case nameof(ObjectTypeName.GameObject): + gameObjectCount++; + break; + + case nameof(ObjectTypeName.Material): + materialCount++; + break; + + case nameof(ObjectTypeName.UsdPrimSource): + usdPrimSourceCount++; + break; + + default: + break; + } + } + + Assert.IsTrue(playableAssetFound, "No PlayableAssset was found in the prefab."); + Assert.AreEqual(expectedGameObjectCount, gameObjectCount, "Wrong GameObjects count in the prefab."); + Assert.AreEqual(expectedPrimSourceCount, usdPrimSourceCount, "Wrong USD Prim Source object in the prefab"); + Assert.AreEqual(expectedMaterialCount, materialCount, "Wrong Materials count in the prefab"); + } + } + + public static void IsTextureDataSaved(GameObject usdObject, string fileName, bool isPrefab) + { + var materials = usdObject.transform.Find(TestAssetData.ImportGameObjectName.Material); + var rootPrim = usdObject.transform.Find(TestAssetData.ImportGameObjectName.RootPrim); + + Assert.IsTrue(rootPrim.childCount == 1); + Assert.AreEqual(materials.childCount, rootPrim.childCount); + + foreach (Transform child in materials) + { + // TODO: Not sure how to access "Prim Type" + Assert.IsNotNull(child.GetComponent()); + } + + var renderer = rootPrim.Find(fileName).GetComponent(); + + Material[] allMaterials; + if (isPrefab) + { + allMaterials = renderer.sharedMaterials; + } + else + { + allMaterials = renderer.materials; + } + + foreach (var material in allMaterials) + { + IsTextureFileMapped(fileName, material); + } + } + + private static void IsTextureFileMapped(string fileName, Material material) + { + switch (fileName) + { + case TestAssetData.FileName.TexturedTransparent_Cutout: + { + Assert.AreEqual("Cutout", material.GetTag("RenderType", false)); + Assert.AreEqual("textured_transparency", material.mainTexture.name); + Assert.AreEqual(1f, material.GetFloat("_Cutoff")); + break; + } + case TestAssetData.FileName.TexturedOpaque: + { + Assert.AreEqual("Opaque", material.GetTag("RenderType", false)); + Assert.AreEqual("textured", material.mainTexture.name); + break; + } + + default: + break; + } + + Assert.AreEqual("textured_metallic.metalicRough", material.GetTexture("_MetallicGlossMap").name); + Assert.AreEqual("textured_normal", material.GetTexture("_BumpMap").name); + Assert.AreEqual("textured_emissive", material.GetTexture("_EmissionMap").name); + } + } +} diff --git a/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs.meta b/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs.meta new file mode 100644 index 000000000..dbcebc079 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/CustomAsserts/ImportAssert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5fcd11405b1262f4f885735991df4516 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data.meta b/package/com.unity.formats.usd/Tests/Common/Data.meta new file mode 100644 index 000000000..41b4c34b2 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f9d7c234df8298f418594609b48efdd2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests.meta new file mode 100644 index 000000000..8a26086f2 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3cd8f06b7409ad04caa57fbc6e542f57 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda new file mode 100644 index 000000000..149f5a286 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda @@ -0,0 +1,114 @@ +#usda 1.0 +( +""" +USDA 1.0 file created for Unity USD Import test +""" + defaultPrim = "RootPrim" + metersPerUnit = 1 + upAxis = "Y" +) + +def Xform "RootPrim" +{ + def Mesh "TexturedOpaque" + { + int[] faceVertexCounts = [4, 4, 4, 4, 4] + int[] faceVertexIndices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] + rel material:binding = + normal3f[] normals = [(-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (1, 0, 0), (1, 0, 0), (1, 0, 0), (1, 0, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 0, 1), (0, 0, 1), (0, 0, 1), (0, 0, 1)] + point3f[] points = [(0, 1, -2), (0, 1, -1), (0, 2, -1), (0, 2, -2), (1, 1, -2), (0, 1, -2), (0, 2, -2), (1, 2, -2), (1, 1, -1), (1, 1, -2), (1, 2, -2), (1, 2, -1), (0, 2, -1), (1, 2, -1), (1, 2, -2), (0, 2, -2), (0, 1, -1), (1, 1, -1), (1, 2, -1), (0, 2, -1)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1)] ( + interpolation = "vertex" + ) + } +} + +def Scope "Material" ( + kind = "model" +) +{ + def Material "TexturedOpaque" + { + token outputs:displacement.connect = + token outputs:surface.connect = + + def Shader "PreviewSurface" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor.connect = + float inputs:metallic.connect = + color3f inputs:emissiveColor.connect = + normal3f inputs:normal.connect = + float inputs:opacity = 1 + float inputs:roughness.connect = + int inputs:useSpecularWorkflow = 0 + token outputs:out + token outputs:surface + } + + def Shader "uv_reader" + { + uniform token info:id = "UsdPrimvarReader_float2" + float2 inputs:fallback = (0, 0) + token inputs:varname = "st" + float2 outputs:result + } + + def Shader "roughness_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_rough.png@ + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float outputs:r + } + + def Shader "normal_texture" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:bias = (-1, 1, -1, -1) + asset inputs:file = @./Textures/textured_normal.png@ + float4 inputs:scale = (2, -2, 2, 2) + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "main_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured.png@ + token inputs:sourceColorSpace = "sRGB" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + color3f outputs:rgb + } + + def Shader "metallic_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_metallic.png@ + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float outputs:r + } + + def Shader "emissive_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_emissive.png@ + float4 inputs:scale = (1000, 1000, 1000, 1) + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + } +} \ No newline at end of file diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda.meta new file mode 100644 index 000000000..80fde175a --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedOpaque.usda.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7df73e3eb8d6696408938e54bb9af792 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda new file mode 100644 index 000000000..735c9f1fd --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda @@ -0,0 +1,127 @@ +#usda 1.0 +( +""" +USDA 1.0 file created for Unity USD Import test +""" + defaultPrim = "RootPrim" + metersPerUnit = 1 + upAxis = "Y" +) + +def Xform "RootPrim" +{ + def Mesh "TexturedTransparent_Cutout" + { + int[] faceVertexCounts = [4, 4, 4, 4, 4] + int[] faceVertexIndices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] + rel material:binding = + normal3f[] normals = [(-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (-1, 0, 0), (0, 0, -1), (0, 0, -1), (0, 0, -1), (0, 0, -1), (1, 0, 0), (1, 0, 0), (1, 0, 0), (1, 0, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 1, 0), (0, 0, 1), (0, 0, 1), (0, 0, 1), (0, 0, 1)] + point3f[] points = [(0, 1, -2), (0, 1, -1), (0, 2, -1), (0, 2, -2), (1, 1, -2), (0, 1, -2), (0, 2, -2), (1, 2, -2), (1, 1, -1), (1, 1, -2), (1, 2, -2), (1, 2, -1), (0, 2, -1), (1, 2, -1), (1, 2, -2), (0, 2, -2), (0, 1, -1), (1, 1, -1), (1, 2, -1), (0, 2, -1)] + texCoord2f[] primvars:st = [(0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1), (0, 0), (1, 0), (1, 1), (0, 1)] ( + interpolation = "vertex" + ) + } +} + +def Scope "Material" ( + kind = "model" +) +{ + def Material "TexturedTransparent_Cutout" + { + token outputs:displacement.connect = + token outputs:surface.connect = + + def Shader "PreviewSurface" + { + uniform token info:id = "UsdPreviewSurface" + color3f inputs:diffuseColor = (0.54902, 0.741176, 0.341176) + color3f inputs:diffuseColor.connect = + float inputs:metallic.connect = + color3f inputs:emissiveColor.connect = + normal3f inputs:normal.connect = + float inputs:opacity.connect = + float inputs:opacityThreshold = 1 + float inputs:roughness.connect = + int inputs:useSpecularWorkflow = 0 + token outputs:out + token outputs:surface + } + + def Shader "uv_reader" + { + uniform token info:id = "UsdPrimvarReader_float2" + float2 inputs:fallback = (0, 0) + token inputs:varname = "st" + float2 outputs:result + } + + def Shader "roughness_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_rough.png@ + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float outputs:r + } + + def Shader "normal_texture" + { + uniform token info:id = "UsdUVTexture" + float4 inputs:bias = (-1, 1, -1, -1) + asset inputs:file = @./Textures/textured_normal.png@ + float4 inputs:scale = (2, -2, 2, 2) + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + + def Shader "main_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured.png@ + token inputs:sourceColorSpace = "sRGB" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + color3f outputs:rgb + } + + def Shader "diffuse_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_transparent.png@ + token inputs:sourceColorSpace = "sRGB" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float outputs:a + } + + def Shader "metallic_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_metallic.png@ + token inputs:sourceColorSpace = "raw" + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float outputs:r + } + + def Shader "emissive_texture" + { + uniform token info:id = "UsdUVTexture" + asset inputs:file = @./Textures/textured_emissive.png@ + float4 inputs:scale = (1000, 1000, 1000, 1) + float2 inputs:st.connect = + token inputs:wrapS = "repeat" + token inputs:wrapT = "repeat" + float3 outputs:rgb + } + } +} \ No newline at end of file diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda.meta new file mode 100644 index 000000000..cbdc0e42e --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/TexturedTransparent_Cutout.usda.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 59eedccadbb71c943819e1ef8ed94343 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures.meta new file mode 100644 index 000000000..537ca266b --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 828ae70a2fa43244abd2311cdb824892 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png new file mode 100644 index 000000000..14fb7db9d Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png.meta new file mode 100644 index 000000000..a2076f434 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 74b45cc8b7d2b4342a9240c85157a263 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png new file mode 100644 index 000000000..836139e92 Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png.meta new file mode 100644 index 000000000..1ad9dce3a --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_emissive.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 671db06b1ef0d6c408241ef4d830c61c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png new file mode 100644 index 000000000..4d3cd7afb Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png.meta new file mode 100644 index 000000000..d2a7aa939 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_metallic.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 9153beade46e11c4d926a26810ae6258 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png new file mode 100644 index 000000000..92a9d737d Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png.meta new file mode 100644 index 000000000..e0b4353fd --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_normal.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e4b326b2ef7d1f942ab965440bb82a76 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png new file mode 100644 index 000000000..490906348 Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png.meta new file mode 100644 index 000000000..c72503674 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_rough.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: debaf231747e3f046955130c9a930761 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png new file mode 100644 index 000000000..6584e10dd Binary files /dev/null and b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png differ diff --git a/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png.meta b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png.meta new file mode 100644 index 000000000..664a7d29e --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/Data/UsdImportTests/Textures/textured_transparent.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: e8d477a0638817d42bc5bb9c28ec53c9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs b/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs new file mode 100644 index 000000000..59739b2c0 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs @@ -0,0 +1,26 @@ +namespace Unity.Formats.USD.Tests +{ + public static class TestAssetData + { + public struct Directory + { + public const string FolderName = "UsdImportTests"; + } + public struct FileName + { + public const string TexturedOpaque = "TexturedOpaque"; + public const string TexturedTransparent_Cutout = "TexturedTransparent_Cutout"; + } + + public struct Extension + { + public const string Usda = ".usda"; + } + + public struct ImportGameObjectName + { + public const string Material = "Material"; + public const string RootPrim = "RootPrim"; + } + } +} diff --git a/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs.meta b/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs.meta new file mode 100644 index 000000000..29aa72d93 --- /dev/null +++ b/package/com.unity.formats.usd/Tests/Common/TestAssetData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec6bd4f2c2eb93e4a80e4067dc930eb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/com.unity.formats.usd/Tests/Editor/ImportHelpersTests.cs b/package/com.unity.formats.usd/Tests/Editor/ImportHelpersTests.cs index e77cda9bd..8c5705a3f 100644 --- a/package/com.unity.formats.usd/Tests/Editor/ImportHelpersTests.cs +++ b/package/com.unity.formats.usd/Tests/Editor/ImportHelpersTests.cs @@ -1,12 +1,7 @@ using System.IO; using NUnit.Framework; using UnityEditor; -using UnityEngine; using USD.NET; -using USD.NET.Unity; -using System.Linq; -using Object = UnityEngine.Object; -using System; namespace Unity.Formats.USD.Tests { @@ -59,7 +54,7 @@ public void ImportAsPrefabTest_ContentOk() // ExpectedGameObjectCount: The Root GameObject + Sphere GameObject added // ExpectedPrimSourceCount: Root Source + Sphere Source // ExpectedMaterialCount: The 3 default materials + 1 material from Sphere meshRender - EditorImportAssert.IsValidImport(usdAsObjects, expectedGameObjectCount: 2, expectedPrimSourceCount: 2, expectedMaterialCount: 4); + ImportAssert.Editor.IsValidImport(usdAsObjects, expectedGameObjectCount: 2, expectedPrimSourceCount: 2, expectedMaterialCount: 4); } [Test] @@ -74,65 +69,12 @@ public void ImportAsTimelineClipTest_ContentOk() // ExpectedGameObjectCount: The Root GameObject // ExpectedPrimSourceCount: 0 TODO: Shouldnt there be a prim source object for the root object? // ExpectedMaterialCount: The 3 default materials - EditorImportAssert.IsValidImport(usdAsObjects, expectedGameObjectCount: 1, expectedPrimSourceCount: 0, expectedMaterialCount: 3); + ImportAssert.Editor.IsValidImport(usdAsObjects, expectedGameObjectCount: 1, expectedPrimSourceCount: 0, expectedMaterialCount: 3); } - [TearDown] - public void ClearTestScene() + public void ImportAsPrefab_TextureDataImported() { - m_scene = null; - } - } - - public static class EditorImportAssert - { - enum ObjectTypeName - { - UsdPlayableAsset = 0, - GameObject = 1, - Material = 2, - UsdPrimSource = 3 - } - - - public static void IsValidImport(Object[] usdAsObjects, int expectedGameObjectCount, int expectedPrimSourceCount, int expectedMaterialCount) - { - Assert.NotZero(usdAsObjects.Length); - - bool playableAssetFound = false; - int gameObjectCount = 0; - int materialCount = 0; - int usdPrimSourceCount = 0; - - foreach (Object childObject in usdAsObjects) - { - switch (childObject.GetType().Name) - { - case nameof(ObjectTypeName.UsdPlayableAsset): - playableAssetFound = true; - break; - - case nameof(ObjectTypeName.GameObject): - gameObjectCount++; - break; - - case nameof(ObjectTypeName.Material): - materialCount++; - break; - - case nameof(ObjectTypeName.UsdPrimSource): - usdPrimSourceCount++; - break; - - default: - break; - } - } - - Assert.IsTrue(playableAssetFound, "No PlayableAssset was found in the prefab."); - Assert.AreEqual(expectedGameObjectCount, gameObjectCount, "Wrong GameObjects count in the prefab."); - Assert.AreEqual(expectedPrimSourceCount, usdPrimSourceCount, "Wrong USD Prim Source object count in the prefab"); - Assert.AreEqual(expectedMaterialCount, materialCount, "Wrong Materials count in the prefab"); + // TODO: Implement when we can change the SceneImportOptions when calling ImportHelpers.ImportAsPrefab } } } diff --git a/package/com.unity.formats.usd/Tests/Runtime/ImportHelpersTests.cs b/package/com.unity.formats.usd/Tests/Runtime/ImportHelpersTests.cs index dc91c41bd..37d0f1d97 100644 --- a/package/com.unity.formats.usd/Tests/Runtime/ImportHelpersTests.cs +++ b/package/com.unity.formats.usd/Tests/Runtime/ImportHelpersTests.cs @@ -116,5 +116,48 @@ public void ImportAsGameObjects_UnderInactiveParent() Assert.IsFalse(usdObject.activeInHierarchy); Assert.IsTrue(usdObject.activeSelf, "The USD Scene is self-inactive when imported under an inactive parent"); } + + [TestCase(TestAssetData.FileName.TexturedOpaque, Description = "Opaque Texture")] + [TestCase(TestAssetData.FileName.TexturedTransparent_Cutout, Description = "Transparent Cutout Texture"), Ignore("[USDU-232] Test On HDRP")] + public void ImportAsGameObjects_TextureDataImported(string fileName) + { + var scene = ImportHelpers.InitForOpen(GetTestAssetPath(fileName)); + var usdObject = ImportHelpers.ImportSceneAsGameObject(scene, importOptions: + new SceneImportOptions() + { + materialImportMode = MaterialImportMode.ImportPreviewSurface + } + ); + + ImportAssert.IsTextureDataSaved(usdObject, fileName, isPrefab: false); + } + + [Ignore("[USDU-275] | [USDU-230] | [FTV-202]")] + [TestCase(TestAssetData.FileName.TexturedOpaque, Description = "Opaque Texture")] + [TestCase(TestAssetData.FileName.TexturedTransparent_Cutout, Description = "Transparent Cutout Texture")] + public void ImportAsGameObject_TextureDataImported_FromUsdz(string fileName) + { + var scene = ImportHelpers.InitForOpen(GetTestAssetPath(fileName)); + var importedUsdObject = ImportHelpers.ImportSceneAsGameObject(scene, importOptions: + new SceneImportOptions() + { + materialImportMode = MaterialImportMode.ImportPreviewSurface + } + ); + + var usdzPath = GetUSDScenePath(importedUsdObject.name + ".usdz"); + UsdzExporter.ExportUsdz(usdzPath, importedUsdObject); + + var usdzScene = ImportHelpers.InitForOpen(usdzPath); + var usdzObject = ImportHelpers.ImportSceneAsGameObject(usdzScene, importOptions: + new SceneImportOptions() + { + materialImportMode = MaterialImportMode.ImportPreviewSurface + } + ); + + // [USDU-275] | [FTV-202] | [USDU-230] + ImportAssert.IsTextureDataSaved(usdzObject.transform.GetChild(0).gameObject, fileName, isPrefab: false); + } } }