From 3fa8ec8a07087d2ddde0435d6c3f10c7a595c3bc Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Mon, 29 Jul 2024 23:34:39 +0900 Subject: [PATCH 1/5] Fixed an issue where unnecessary files were left behind after running tests. --- Assets/UniGLTF/Tests/UniGLTF/AssetTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Assets/UniGLTF/Tests/UniGLTF/AssetTests.cs b/Assets/UniGLTF/Tests/UniGLTF/AssetTests.cs index 50b0a6867..1fddabbee 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/AssetTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/AssetTests.cs @@ -33,6 +33,8 @@ namespace UniGLTF var tmp = AssetDatabase.LoadAssetAtPath(assetPath); Assert.Null(tmp); + + AssetDatabase.DeleteAsset(assetPath); } AssetDatabase.Refresh(); From c4e3f53d5d97c099d0481e84230db0fcc2e0dc58 Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Mon, 29 Jul 2024 23:52:55 +0900 Subject: [PATCH 2/5] Move Test Assets --- Assets/UniGLTF/Tests/Objects.meta | 8 ++++ .../4x4_gray_import_as_linear.png | Bin .../4x4_gray_import_as_linear.png.meta | 17 +++++++- .../4x4_gray_import_as_normal_map.png | Bin .../4x4_gray_import_as_normal_map.png.meta | 17 +++++++- .../4x4_gray_import_as_srgb.png | Bin .../4x4_gray_import_as_srgb.png.meta | 17 +++++++- .../{UniGLTF => Objects}/4x4_non_readable.png | Bin .../4x4_non_readable.png.meta | 0 .../4x4_non_readable_compressed.DDS | Bin .../4x4_non_readable_compressed.DDS.meta | 0 .../{UniGLTF => Objects}/New Material.mat | 0 .../New Material.mat.meta | 0 .../UniGLTF/Tests/UniGLTF/CopyTextureTests.cs | 9 ++--- .../UniGLTF/EditorTextureSerializerTests.cs | 37 ++++++++++-------- Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs | 12 ++++++ .../UniGLTF/Tests/UniGLTF/TestAssets.cs.meta | 3 ++ .../Tests/UniGLTF/TextureBytesTests.cs | 7 +--- 18 files changed, 96 insertions(+), 31 deletions(-) create mode 100644 Assets/UniGLTF/Tests/Objects.meta rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_linear.png (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_linear.png.meta (86%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_normal_map.png (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_normal_map.png.meta (86%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_srgb.png (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_gray_import_as_srgb.png.meta (86%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_non_readable.png (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_non_readable.png.meta (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_non_readable_compressed.DDS (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/4x4_non_readable_compressed.DDS.meta (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/New Material.mat (100%) rename Assets/UniGLTF/Tests/{UniGLTF => Objects}/New Material.mat.meta (100%) create mode 100644 Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs create mode 100644 Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs.meta diff --git a/Assets/UniGLTF/Tests/Objects.meta b/Assets/UniGLTF/Tests/Objects.meta new file mode 100644 index 000000000..895ef31b1 --- /dev/null +++ b/Assets/UniGLTF/Tests/Objects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 257f9efac603801459934018928760de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_linear.png b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_linear.png similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_linear.png rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_linear.png diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_linear.png.meta b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_linear.png.meta similarity index 86% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_linear.png.meta rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_linear.png.meta index 34e2b319c..8cff80177 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_linear.png.meta +++ b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_linear.png.meta @@ -3,7 +3,7 @@ guid: fc1ba24d4a4141d4d9e9ae0a0d3ecd0a TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 12 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -24,6 +24,7 @@ TextureImporter: streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMasterTextureLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -99,6 +101,18 @@ TextureImporter: overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -112,6 +126,7 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + nameFileIdTable: {} spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_normal_map.png b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_normal_map.png similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_normal_map.png rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_normal_map.png diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_normal_map.png.meta b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_normal_map.png.meta similarity index 86% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_normal_map.png.meta rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_normal_map.png.meta index 4862a8127..aa67d0199 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_normal_map.png.meta +++ b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_normal_map.png.meta @@ -3,7 +3,7 @@ guid: b5d17df8d14f2324692a7c69f24cf658 TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 12 mipmaps: mipMapMode: 0 enableMipMap: 1 @@ -24,6 +24,7 @@ TextureImporter: streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMasterTextureLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -99,6 +101,18 @@ TextureImporter: overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -112,6 +126,7 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + nameFileIdTable: {} spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_srgb.png b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_srgb.png similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_srgb.png rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_srgb.png diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_srgb.png.meta b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_srgb.png.meta similarity index 86% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_srgb.png.meta rename to Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_srgb.png.meta index 39acaa02f..c2e9bfc6f 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/4x4_gray_import_as_srgb.png.meta +++ b/Assets/UniGLTF/Tests/Objects/4x4_gray_import_as_srgb.png.meta @@ -3,7 +3,7 @@ guid: 0f7acf68f1798ae48a5505519abac457 TextureImporter: internalIDToNameTable: [] externalObjects: {} - serializedVersion: 11 + serializedVersion: 12 mipmaps: mipMapMode: 0 enableMipMap: 0 @@ -24,6 +24,7 @@ TextureImporter: streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 + ignoreMasterTextureLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -62,6 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 + cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -99,6 +101,18 @@ TextureImporter: overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] @@ -112,6 +126,7 @@ TextureImporter: edges: [] weights: [] secondaryTextures: [] + nameFileIdTable: {} spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable.png b/Assets/UniGLTF/Tests/Objects/4x4_non_readable.png similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable.png rename to Assets/UniGLTF/Tests/Objects/4x4_non_readable.png diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable.png.meta b/Assets/UniGLTF/Tests/Objects/4x4_non_readable.png.meta similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable.png.meta rename to Assets/UniGLTF/Tests/Objects/4x4_non_readable.png.meta diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable_compressed.DDS b/Assets/UniGLTF/Tests/Objects/4x4_non_readable_compressed.DDS similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable_compressed.DDS rename to Assets/UniGLTF/Tests/Objects/4x4_non_readable_compressed.DDS diff --git a/Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable_compressed.DDS.meta b/Assets/UniGLTF/Tests/Objects/4x4_non_readable_compressed.DDS.meta similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/4x4_non_readable_compressed.DDS.meta rename to Assets/UniGLTF/Tests/Objects/4x4_non_readable_compressed.DDS.meta diff --git a/Assets/UniGLTF/Tests/UniGLTF/New Material.mat b/Assets/UniGLTF/Tests/Objects/New Material.mat similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/New Material.mat rename to Assets/UniGLTF/Tests/Objects/New Material.mat diff --git a/Assets/UniGLTF/Tests/UniGLTF/New Material.mat.meta b/Assets/UniGLTF/Tests/Objects/New Material.mat.meta similarity index 100% rename from Assets/UniGLTF/Tests/UniGLTF/New Material.mat.meta rename to Assets/UniGLTF/Tests/Objects/New Material.mat.meta diff --git a/Assets/UniGLTF/Tests/UniGLTF/CopyTextureTests.cs b/Assets/UniGLTF/Tests/UniGLTF/CopyTextureTests.cs index 8170541d9..d8304c00b 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/CopyTextureTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/CopyTextureTests.cs @@ -1,13 +1,10 @@ using NUnit.Framework; -using UnityEditor; using UnityEngine; namespace UniGLTF { public sealed class CopyTextureTests { - private static string AssetPath = "Assets/VRMShaders/GLTF/IO/Tests"; - private static readonly Color32 Black = new Color32(0, 0, 0, 255); private static readonly Color32 Gray = new Color32(127, 127, 127, 255); private static readonly Color32 White = new Color32(255, 255, 255, 255); @@ -32,7 +29,7 @@ namespace UniGLTF [Test] public void CopyFromNonReadableSRgbPng() { - var nonReadableTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/4x4_non_readable.png"); + var nonReadableTex = TestAssets.LoadAsset("4x4_non_readable.png"); Assert.False(nonReadableTex.isReadable); var copiedTex = TextureConverter.CopyTexture(nonReadableTex, ColorSpace.sRGB, true, null); var pixels = copiedTex.GetPixels32(miplevel: 0); @@ -46,7 +43,7 @@ namespace UniGLTF [Test] public void CopyFromNonReadableSRgbDds() { - var compressedTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/4x4_non_readable_compressed.dds"); + var compressedTex = TestAssets.LoadAsset("4x4_non_readable_compressed.dds"); Assert.False(compressedTex.isReadable); var copiedTex = TextureConverter.CopyTexture(compressedTex, ColorSpace.sRGB, true, null); var pixels = copiedTex.GetPixels32(miplevel: 0); @@ -60,7 +57,7 @@ namespace UniGLTF [Test] public void CopyAttributes() { - var src = AssetDatabase.LoadAssetAtPath($"{AssetPath}/4x4_non_readable.png"); + var src = TestAssets.LoadAsset("4x4_non_readable.png"); var dst = TextureConverter.CopyTexture(src, ColorSpace.sRGB, false, null); Assert.AreEqual(src.name, dst.name); Assert.AreEqual(src.anisoLevel, dst.anisoLevel); diff --git a/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs b/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs index dbc1349e9..a0a128da1 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs @@ -1,18 +1,16 @@ using NUnit.Framework; -using UnityEditor; using UnityEngine; namespace UniGLTF { public sealed class EditorTextureSerializerTests { - private static readonly string AssetPath = "Assets/UniGLTF/Tests/UniGLTF"; private static readonly string SrgbGrayImageName = "4x4_gray_import_as_srgb"; private static readonly string LinearGrayImageName = "4x4_gray_import_as_linear"; private static readonly string NormalMapGrayImageName = "4x4_gray_import_as_normal_map"; - private static readonly Texture2D SrgbGrayTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/{SrgbGrayImageName}.png"); - private static readonly Texture2D LinearGrayTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/{LinearGrayImageName}.png"); - private static readonly Texture2D NormalMapGrayTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/{NormalMapGrayImageName}.png"); + private static readonly Texture2D SrgbGrayTex = TestAssets.LoadAsset($"{SrgbGrayImageName}.png"); + private static readonly Texture2D LinearGrayTex = TestAssets.LoadAsset($"{LinearGrayImageName}.png"); + private static readonly Texture2D NormalMapGrayTex = TestAssets.LoadAsset($"{NormalMapGrayImageName}.png"); private static readonly Color32 JustGray = new Color32(127, 127, 127, 255); private static readonly Color32 SrgbGrayInSrgb = JustGray; private static readonly Color32 SrgbGrayInLinear = ((Color)SrgbGrayInSrgb).linear; @@ -113,23 +111,28 @@ namespace UniGLTF { // Prepare var root = GameObject.CreatePrimitive(PrimitiveType.Cube); - var mat = new Material(Shader.Find("Standard")); + var mat = new Material(Shader.Find(BuiltInStandardMaterialExporter.TargetShaderName)); mat.SetTexture(propertyName, srcTex); root.GetComponentOrThrow().sharedMaterial = mat; // Export glTF var data = new ExportingGltfData(); - using (var exporter = new gltfExporter(data, new GltfExportSettings - { - InverseAxis = Axes.X, - ExportOnlyBlendShapePosition = false, - UseSparseAccessorForMorphTarget = false, - DivideVertexBuffer = false, - }, textureSerializer: new EditorTextureSerializer())) - { - exporter.Prepare(root); - exporter.Export(); - } + using var exporter = new gltfExporter( + data, + new GltfExportSettings + { + InverseAxis = Axes.X, + ExportOnlyBlendShapePosition = false, + UseSparseAccessorForMorphTarget = false, + DivideVertexBuffer = false, + }, + materialExporter: new BuiltInGltfMaterialExporter(), + textureSerializer: new EditorTextureSerializer() + ); + + exporter.Prepare(root); + exporter.Export(); + var gltf = data.Gltf; Assert.AreEqual(1, gltf.images.Count); var exportedImage = gltf.images[0]; diff --git a/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs b/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs new file mode 100644 index 000000000..96319bbf4 --- /dev/null +++ b/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs @@ -0,0 +1,12 @@ +namespace UniGLTF +{ + public static class TestAssets + { + public static readonly string AssetPath = "Assets/UniGLTF/Tests/Objects"; + + public static T LoadAsset(string filename) where T : UnityEngine.Object + { + return UnityEditor.AssetDatabase.LoadAssetAtPath($"{AssetPath}/{filename}"); + } + } +} \ No newline at end of file diff --git a/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs.meta b/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs.meta new file mode 100644 index 000000000..ce8bf83a6 --- /dev/null +++ b/Assets/UniGLTF/Tests/UniGLTF/TestAssets.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8519ebb2f0f84833a752bb564b59c47c +timeCreated: 1722263712 \ No newline at end of file diff --git a/Assets/UniGLTF/Tests/UniGLTF/TextureBytesTests.cs b/Assets/UniGLTF/Tests/UniGLTF/TextureBytesTests.cs index f4ef96a2f..f99019151 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/TextureBytesTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/TextureBytesTests.cs @@ -1,17 +1,14 @@ using NUnit.Framework; -using UnityEditor; using UnityEngine; namespace UniGLTF { public class TextureBytesTests { - static string AssetPath = "Assets/VRMShaders/GLTF/IO/Tests"; - [Test] public void NonReadablePng() { - var nonReadableTex = AssetDatabase.LoadAssetAtPath($"{AssetPath}/4x4_non_readable.png"); + var nonReadableTex = TestAssets.LoadAsset("4x4_non_readable.png"); Assert.False(nonReadableTex.isReadable); var (bytes, mime) = new EditorTextureSerializer().ExportBytesWithMime(nonReadableTex, ColorSpace.sRGB); Assert.NotNull(bytes); @@ -20,7 +17,7 @@ namespace UniGLTF [Test] public void NonReadableDds() { - var readonlyTexture = AssetDatabase.LoadAssetAtPath($"{AssetPath}/4x4_non_readable_compressed.dds"); + var readonlyTexture = TestAssets.LoadAsset("4x4_non_readable_compressed.dds"); Assert.False(readonlyTexture.isReadable); var (bytes, mime) = new EditorTextureSerializer().ExportBytesWithMime(readonlyTexture, ColorSpace.sRGB); Assert.NotNull(bytes); From eff55a9465dbb397b83ed8f413b84981595869f9 Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Tue, 30 Jul 2024 00:05:24 +0900 Subject: [PATCH 3/5] Fix Vrm10 Tests --- Assets/VRM10/Tests/ApiSampleTests.cs | 41 ++++------------------------ Assets/VRM10/Tests/MigrationTests.cs | 6 ++-- Assets/VRM10/Tests/TestAsset.cs | 5 +--- Assets/VRM10/Tests/TestVrm10.cs | 37 +++++++++++++++++++++++++ Assets/VRM10/Tests/TestVrm10.cs.meta | 3 ++ 5 files changed, 50 insertions(+), 42 deletions(-) create mode 100644 Assets/VRM10/Tests/TestVrm10.cs create mode 100644 Assets/VRM10/Tests/TestVrm10.cs.meta diff --git a/Assets/VRM10/Tests/ApiSampleTests.cs b/Assets/VRM10/Tests/ApiSampleTests.cs index cc50aec15..3f9d1f58f 100644 --- a/Assets/VRM10/Tests/ApiSampleTests.cs +++ b/Assets/VRM10/Tests/ApiSampleTests.cs @@ -7,49 +7,20 @@ namespace UniVRM10.Test { public class ApiSampleTests { - VrmLib.Model ReadModel(string path) - { - var bytes = MigrationVrm.Migrate(File.ReadAllBytes(path)); - - var data = new GlbLowLevelParser(path, bytes).Parse(); - - var model = ModelReader.Read(data); - return model; - } - - GameObject BuildGameObject(Vrm10Data data, bool showMesh) - { - using (var loader = new Vrm10Importer(data, null)) - { - var loaded = loader.Load(); - if (showMesh) - { - loaded.ShowMeshes(); - } - loaded.EnableUpdateWhenOffscreen(); - return loaded.gameObject; - } - } - [Test] public void Sample() { var path = "Tests/Models/Alicia_vrm-0.51/AliciaSolid_vrm-0.51.vrm"; Debug.Log($"load: {path}"); - using (var data = new GlbFileParser(path).Parse()) - using (var migrated = Vrm10Data.Migrate(data, out Vrm10Data result, out MigrationData migration)) - { - Assert.NotNull(result); + var instance = TestVrm10.LoadPathAsBuiltInRP(path, canLoadVrm0X: true); + Assert.NotNull(instance); - var go = BuildGameObject(result, true); - Debug.Log(go); + var go = instance.gameObject; + Debug.Log(go); - // export - var vrmBytes = Vrm10Exporter.Export(go, textureSerializer: new EditorTextureSerializer()); - - Debug.Log($"export {vrmBytes.Length} bytes"); - } + var vrmBytes = TestVrm10.ExportAsBuiltInRP(go); + Debug.Log($"export {vrmBytes.Length} bytes"); } } } diff --git a/Assets/VRM10/Tests/MigrationTests.cs b/Assets/VRM10/Tests/MigrationTests.cs index 09add1b02..999584449 100644 --- a/Assets/VRM10/Tests/MigrationTests.cs +++ b/Assets/VRM10/Tests/MigrationTests.cs @@ -197,7 +197,7 @@ namespace UniVRM10 { try { - Vrm10.LoadPathAsync(gltf.FullName, true, controlRigGenerationOption: ControlRigGenerationOption.None).Wait(); + TestVrm10.LoadPathAsBuiltInRP(gltf.FullName); } catch (UnNormalizedException) { @@ -372,7 +372,7 @@ namespace UniVRM10 new Color(2.0f, 2.0f, 2.0f, 1), }; - var instance106 = Vrm10.LoadBytesAsync(model106, awaitCaller: new ImmediateCaller()).Result; + var instance106 = TestVrm10.LoadBytesAsBuiltInRP(model106); var materials106 = instance106.GetComponent().Materials; Assert.AreEqual(materialCount, materials106.Count); for (var idx = 0; idx < materialCount; ++idx) @@ -384,7 +384,7 @@ namespace UniVRM10 if (correctEmissions[idx].HasValue) AssertAreApproximatelyEqualColor(correctEmissions[idx].Value, material.GetColor(emissionName)); } - var instance107 = Vrm10.LoadBytesAsync(model107, awaitCaller: new ImmediateCaller()).Result; + var instance107 = TestVrm10.LoadBytesAsBuiltInRP(model107); var materials107 = instance107.GetComponent().Materials; Assert.AreEqual(materialCount, materials107.Count); for (var idx = 0; idx < materialCount; ++idx) diff --git a/Assets/VRM10/Tests/TestAsset.cs b/Assets/VRM10/Tests/TestAsset.cs index 6077c2c44..5982583ee 100644 --- a/Assets/VRM10/Tests/TestAsset.cs +++ b/Assets/VRM10/Tests/TestAsset.cs @@ -16,10 +16,7 @@ namespace UniVRM10 public static Vrm10Instance LoadAlicia() { - var task = Vrm10.LoadPathAsync(AliciaPath, canLoadVrm0X: true); - task.Wait(); - var instance = task.Result; - + var instance = TestVrm10.LoadPathAsBuiltInRP(AliciaPath, canLoadVrm0X: true); return instance.GetComponent(); } } diff --git a/Assets/VRM10/Tests/TestVrm10.cs b/Assets/VRM10/Tests/TestVrm10.cs new file mode 100644 index 000000000..108c6d321 --- /dev/null +++ b/Assets/VRM10/Tests/TestVrm10.cs @@ -0,0 +1,37 @@ +using UniGLTF; +using UnityEngine; + +namespace UniVRM10 +{ + public static class TestVrm10 + { + public static Vrm10Instance LoadBytesAsBuiltInRP(byte[] bytes, bool canLoadVrm0X = true) + { + return Vrm10.LoadBytesAsync( + bytes, + canLoadVrm0X: canLoadVrm0X, + awaitCaller: new ImmediateCaller(), + materialGenerator: new BuiltInVrm10MaterialDescriptorGenerator() + ).Result; + } + + public static Vrm10Instance LoadPathAsBuiltInRP(string path, bool canLoadVrm0X = true) + { + return Vrm10.LoadPathAsync( + path, + canLoadVrm0X: canLoadVrm0X, + awaitCaller: new ImmediateCaller(), + materialGenerator: new BuiltInVrm10MaterialDescriptorGenerator() + ).Result; + } + + public static byte[] ExportAsBuiltInRP(GameObject gameObject) + { + return Vrm10Exporter.Export( + gameObject, + materialExporter: new BuiltInVrm10MaterialExporter(), + textureSerializer: new EditorTextureSerializer() + ); + } + } +} \ No newline at end of file diff --git a/Assets/VRM10/Tests/TestVrm10.cs.meta b/Assets/VRM10/Tests/TestVrm10.cs.meta new file mode 100644 index 000000000..69837185f --- /dev/null +++ b/Assets/VRM10/Tests/TestVrm10.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4c9e0897ac194db3b7a55132871e6d75 +timeCreated: 1722265007 \ No newline at end of file From ccf3a16b98512dabf735b794b72ef2f1da5d187c Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Tue, 30 Jul 2024 00:30:22 +0900 Subject: [PATCH 4/5] Fix VRM0X Tests --- Assets/VRM/Editor/Format/VRMEditorExporter.cs | 19 ++++++--- .../Tests/SampleTests/VRMImportExportTests.cs | 22 +++++++---- Assets/VRM/Tests/TestVrm0X.cs | 32 +++++++++++++++ Assets/VRM/Tests/TestVrm0X.cs.meta | 3 ++ Assets/VRM/Tests/VRMLookAtTests.cs | 39 +++++++------------ Assets/VRM/Tests/VrmDividedMeshTests.cs | 12 +++++- 6 files changed, 86 insertions(+), 41 deletions(-) create mode 100644 Assets/VRM/Tests/TestVrm0X.cs create mode 100644 Assets/VRM/Tests/TestVrm0X.cs.meta diff --git a/Assets/VRM/Editor/Format/VRMEditorExporter.cs b/Assets/VRM/Editor/Format/VRMEditorExporter.cs index c4489d7a4..6e48f7d88 100644 --- a/Assets/VRM/Editor/Format/VRMEditorExporter.cs +++ b/Assets/VRM/Editor/Format/VRMEditorExporter.cs @@ -16,12 +16,17 @@ namespace VRM /// /// 出力先 /// エクスポート設定 - public static byte[] Export(GameObject exportRoot, VRMMetaObject meta, VRMExportSettings settings) + public static byte[] Export( + GameObject exportRoot, + VRMMetaObject meta, + VRMExportSettings settings, + IMaterialExporter materialExporter = null + ) { List destroy = new List(); try { - return Export(exportRoot, meta, settings, destroy); + return Export(exportRoot, meta, settings, materialExporter, destroy); } finally { @@ -143,9 +148,12 @@ namespace VRM /// /// /// 作業が終わったらDestoryするべき一時オブジェクト - static byte[] Export(GameObject exportRoot, VRMMetaObject meta, - VRMExportSettings settings, - List destroy) + private static byte[] Export( + GameObject exportRoot, + VRMMetaObject meta, + VRMExportSettings settings, + IMaterialExporter materialExporter, + List destroy) { var target = exportRoot; @@ -227,6 +235,7 @@ namespace VRM var gltfExportSettings = settings.GltfExportSettings; using (var exporter = new VRMExporter(data, gltfExportSettings, animationExporter: settings.KeepAnimation ? new EditorAnimationExporter() : null, + materialExporter: materialExporter, textureSerializer: new EditorTextureSerializer())) { exporter.Prepare(target); diff --git a/Assets/VRM/Tests/SampleTests/VRMImportExportTests.cs b/Assets/VRM/Tests/SampleTests/VRMImportExportTests.cs index 9cf0e3591..d0ce6b581 100644 --- a/Assets/VRM/Tests/SampleTests/VRMImportExportTests.cs +++ b/Assets/VRM/Tests/SampleTests/VRMImportExportTests.cs @@ -33,9 +33,11 @@ namespace VRM.Samples public void ImportExportTest() { var path = AliciaPath; - using (var data = new GlbFileParser(path).Parse()) - using (var context = new VRMImporterContext(new VRMData(data))) - using (var loaded = context.Load()) + using var data = new GlbFileParser(path).Parse(); + var vrmData = new VRMData(data); + var materialGenerator = new BuiltInVrmMaterialDescriptorGenerator(vrmData.VrmExtension); + using var context = new VRMImporterContext(vrmData, materialGenerator: materialGenerator); + using var loaded = context.Load(); { loaded.ShowMeshes(); loaded.EnableUpdateWhenOffscreen(); @@ -126,9 +128,11 @@ namespace VRM.Samples public void MeshCopyTest() { var path = AliciaPath; - using (var data = new GlbFileParser(path).Parse()) - using (var context = new VRMImporterContext(new VRMData(data))) - using (var loaded = context.Load()) + using var data = new GlbFileParser(path).Parse(); + var vrmData = new VRMData(data); + var materialGenerator = new BuiltInVrmMaterialDescriptorGenerator(vrmData.VrmExtension); + using var context = new VRMImporterContext(vrmData, materialGenerator: materialGenerator); + using var loaded = context.Load(); { loaded.ShowMeshes(); loaded.EnableUpdateWhenOffscreen(); @@ -147,8 +151,10 @@ namespace VRM.Samples // Aliciaを古いデシリアライザでロードする var path = AliciaPath; - using (var data = new GlbFileParser(path).Parse()) - using (var context = new VRMImporterContext(new VRMData(data))) + using var data = new GlbFileParser(path).Parse(); + var vrmData = new VRMData(data); + var materialGenerator = new BuiltInVrmMaterialDescriptorGenerator(vrmData.VrmExtension); + using var context = new VRMImporterContext(vrmData, materialGenerator: materialGenerator); { var oldJson = context.GLTF.ToJson().ParseAsJson().ToString(" "); diff --git a/Assets/VRM/Tests/TestVrm0X.cs b/Assets/VRM/Tests/TestVrm0X.cs new file mode 100644 index 000000000..6f99e905d --- /dev/null +++ b/Assets/VRM/Tests/TestVrm0X.cs @@ -0,0 +1,32 @@ +using UniGLTF; +using UnityEngine; + +namespace VRM +{ + public static class TestVrm0X + { + public static RuntimeGltfInstance LoadBytesAsBuiltInRP(byte[] bytes) + { + return VrmUtility.LoadBytesAsync( + "", + bytes, + awaitCaller: new ImmediateCaller(), + materialGeneratorCallback: x => new BuiltInVrmMaterialDescriptorGenerator(x) + ).Result; + } + + public static RuntimeGltfInstance LoadPathAsBuiltInRP(string path) + { + return VrmUtility.LoadAsync( + path, + awaitCaller: new ImmediateCaller(), + materialGeneratorCallback: x => new BuiltInVrmMaterialDescriptorGenerator(x) + ).Result; + } + + public static byte[] ExportAsBuiltInRP(GameObject gameObject, VRMExportSettings exportSettings) + { + return VRMEditorExporter.Export(gameObject, null, exportSettings, new BuiltInVrmMaterialExporter()); + } + } +} \ No newline at end of file diff --git a/Assets/VRM/Tests/TestVrm0X.cs.meta b/Assets/VRM/Tests/TestVrm0X.cs.meta new file mode 100644 index 000000000..32d715a00 --- /dev/null +++ b/Assets/VRM/Tests/TestVrm0X.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 47b1209d83114ccbaa0bf02436b8eb04 +timeCreated: 1722265572 \ No newline at end of file diff --git a/Assets/VRM/Tests/VRMLookAtTests.cs b/Assets/VRM/Tests/VRMLookAtTests.cs index a9a07b4a3..40d9424aa 100644 --- a/Assets/VRM/Tests/VRMLookAtTests.cs +++ b/Assets/VRM/Tests/VRMLookAtTests.cs @@ -21,11 +21,8 @@ namespace VRM [Test] public void VRMLookAtTest() { - var data = new GlbFileParser(AliciaPath).Parse(); byte[] bytes = default; - using (data) - using (var loader = new VRMImporterContext(new VRMData(data))) - using (var loaded = loader.Load()) + using var loaded = TestVrm0X.LoadPathAsBuiltInRP(AliciaPath); { loaded.ShowMeshes(); @@ -35,12 +32,12 @@ namespace VRM var lookAt = go.AddComponent(); var settings = (VRMExportSettings)ScriptableObject.CreateInstance(); settings.PoseFreeze = true; - bytes = VRMEditorExporter.Export(go, null, settings); - } + bytes = TestVrm0X.ExportAsBuiltInRP(go, settings); + } - using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) - using (var loader2 = new VRMImporterContext(new VRMData(data2))) { + using var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse(); + using var loader2 = new VRMImporterContext(new VRMData(data2)); Assert.AreEqual(LookAtType.BlendShape, loader2.VRM.firstPerson.lookAtType); } } @@ -48,13 +45,10 @@ namespace VRM [Test] public void VRMLookAtCurveMapWithFreezeTest() { - var data = new GlbFileParser(AliciaPath).Parse(); - byte[] bytes = default; + byte[] bytes; CurveMapper horizontalInner = default; - using (data) - using (var loader = new VRMImporterContext(new VRMData(data))) - using (var loaded = loader.Load()) { + using var loaded = TestVrm0X.LoadPathAsBuiltInRP(AliciaPath); loaded.ShowMeshes(); var go = loaded.gameObject; @@ -63,13 +57,11 @@ namespace VRM horizontalInner = lookAt.HorizontalInner; var settings = ScriptableObject.CreateInstance(); settings.PoseFreeze = true; - bytes = VRMEditorExporter.Export(go, null, settings); + bytes = TestVrm0X.ExportAsBuiltInRP(go, settings); } - using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) - using (var loader = new VRMImporterContext(new VRMData(data2))) - using (var loaded = loader.Load()) { + using var loaded = TestVrm0X.LoadBytesAsBuiltInRP(bytes); loaded.ShowMeshes(); var lookAt = loaded.GetComponent(); @@ -81,13 +73,10 @@ namespace VRM [Test] public void VRMLookAtCurveMapTest() { - var data = new GlbFileParser(AliciaPath).Parse(); - byte[] bytes = default; + byte[] bytes; CurveMapper horizontalInner = default; - using (data) - using (var loader = new VRMImporterContext(new VRMData(data))) - using (var loaded = loader.Load()) { + using var loaded = TestVrm0X.LoadPathAsBuiltInRP(AliciaPath); loaded.ShowMeshes(); var go = loaded.gameObject; @@ -96,13 +85,11 @@ namespace VRM horizontalInner = lookAt.HorizontalInner; var settings = (VRMExportSettings)ScriptableObject.CreateInstance(); settings.PoseFreeze = false; - bytes = VRMEditorExporter.Export(go, null, settings); + bytes = TestVrm0X.ExportAsBuiltInRP(go, settings); } - using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) - using (var loader = new VRMImporterContext(new VRMData(data2))) - using (var loaded = loader.Load()) { + using var loaded = TestVrm0X.LoadBytesAsBuiltInRP(bytes); loaded.ShowMeshes(); var lookAt = loaded.GetComponent(); diff --git a/Assets/VRM/Tests/VrmDividedMeshTests.cs b/Assets/VRM/Tests/VrmDividedMeshTests.cs index 543b10486..658cda4eb 100644 --- a/Assets/VRM/Tests/VrmDividedMeshTests.cs +++ b/Assets/VRM/Tests/VrmDividedMeshTests.cs @@ -67,13 +67,21 @@ namespace VRM var path = AliciaPath; var loaded = Load(File.ReadAllBytes(path), path); - var exported = VRMExporter.Export(new UniGLTF.GltfExportSettings + var exportSettings = new GltfExportSettings { DivideVertexBuffer = true, // test this ExportOnlyBlendShapePosition = true, ExportTangents = false, UseSparseAccessorForMorphTarget = true, - }, loaded, new EditorTextureSerializer()); + }; + var exported = new ExportingGltfData(); + using var exporter = new VRMExporter( + exported, + exportSettings, + textureSerializer: new EditorTextureSerializer(), + materialExporter: new BuiltInVrmMaterialExporter()); + exporter.Prepare(loaded); + exporter.Export(); var bytes = exported.ToGlbBytes(); var divided = Load(bytes, path); From 9171280dffa4b85325b6c173c4d15686f83714fb Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Tue, 30 Jul 2024 00:46:08 +0900 Subject: [PATCH 5/5] Fix GLTF tests --- Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs | 52 ++++++++++++++ Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs.meta | 3 + Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs | 67 ++++++------------- 3 files changed, 74 insertions(+), 48 deletions(-) create mode 100644 Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs create mode 100644 Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs.meta diff --git a/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs b/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs new file mode 100644 index 000000000..36baddf65 --- /dev/null +++ b/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs @@ -0,0 +1,52 @@ +using UnityEngine; + +namespace UniGLTF +{ + public static class TestGltf + { + public static RuntimeGltfInstance LoadBytesAsBuiltInRP(byte[] bytes) + { + return GltfUtility.LoadBytesAsync( + "", + bytes, + awaitCaller: new ImmediateCaller(), + materialGenerator: new BuiltInGltfMaterialDescriptorGenerator() + ).Result; + } + + public static RuntimeGltfInstance LoadPathAsBuiltInRP(string path) + { + return GltfUtility.LoadAsync( + path, + awaitCaller: new ImmediateCaller(), + materialGenerator: new BuiltInGltfMaterialDescriptorGenerator() + ).Result; + } + + public static ExportingGltfData ExportAsBuiltInRP(GameObject gameObject, GltfExportSettings exportSettings = null) + { + var data = new ExportingGltfData(); + using var exporter = new gltfExporter( + data, + exportSettings ?? new GltfExportSettings(), + progress: new EditorProgress(), + animationExporter: new EditorAnimationExporter(), + materialExporter: new BuiltInGltfMaterialExporter(), + textureSerializer: new EditorTextureSerializer() + ); + exporter.Prepare(gameObject); + exporter.Export(); + + return data; + } + + public static GameObject CreatePrimitiveAsBuiltInRP(PrimitiveType primitiveType) + { + var go = GameObject.CreatePrimitive(primitiveType); + var shader = Shader.Find("Standard"); + var material = new Material(shader); + go.GetComponent().sharedMaterial = material; + return go; + } + } +} \ No newline at end of file diff --git a/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs.meta b/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs.meta new file mode 100644 index 000000000..affb261b4 --- /dev/null +++ b/Assets/UniGLTF/Tests/UniGLTF/TestGltf.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 11719ab072944cc2b7c0eaafa0cdff2e +timeCreated: 1722267047 \ No newline at end of file diff --git a/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs b/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs index 99ad080f6..a96368fc3 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs @@ -100,18 +100,17 @@ namespace UniGLTF // export var data = new ExportingGltfData(); + using var exporter = new gltfExporter( + data, + new GltfExportSettings(), + materialExporter: new BuiltInGltfMaterialExporter()); + exporter.Prepare(go); + exporter.Export(); - string json = null; - using (var exporter = new gltfExporter(data, new GltfExportSettings())) - { - exporter.Prepare(go); - exporter.Export(); + // remove empty buffer + data.Gltf.buffers.Clear(); - // remove empty buffer - data.Gltf.buffers.Clear(); - - json = data.Gltf.ToJson(); - } + var json = data.Gltf.ToJson(); // parse using (var parsed = GltfData.CreateFromExportForTest(data)) @@ -353,12 +352,7 @@ namespace UniGLTF [Test] public void GlTFToJsonTest() { - var data = new ExportingGltfData(); - using (var exporter = new gltfExporter(data, new GltfExportSettings())) - { - exporter.Prepare(CreateSimpleScene()); - exporter.Export(); - } + var data = TestGltf.ExportAsBuiltInRP(CreateSimpleScene()); var expected = data.Gltf.ToJson().ParseAsJson(); expected.AddKey(Utf8String.From("meshes")); @@ -565,7 +559,7 @@ namespace UniGLTF { var shader = Shader.Find("Unlit/Color"); - var cubeA = GameObject.CreatePrimitive(PrimitiveType.Cube); + var cubeA = TestGltf.CreatePrimitiveAsBuiltInRP(PrimitiveType.Cube); { cubeA.transform.SetParent(go.transform); var material = new Material(shader); @@ -586,16 +580,8 @@ namespace UniGLTF } // export - var data = new ExportingGltfData(); + var data = TestGltf.ExportAsBuiltInRP(go); var gltf = data.Gltf; - var json = default(string); - using (var exporter = new gltfExporter(data, new GltfExportSettings())) - { - exporter.Prepare(go); - exporter.Export(); - - json = gltf.ToJson(); - } Assert.AreEqual(2, gltf.meshes.Count); @@ -658,22 +644,14 @@ namespace UniGLTF try { { - var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); + var cube = TestGltf.CreatePrimitiveAsBuiltInRP(PrimitiveType.Cube); cube.transform.SetParent(go.transform); UnityEngine.Object.DestroyImmediate(cube.GetComponent()); } // export - var data = new ExportingGltfData(); + var data = TestGltf.ExportAsBuiltInRP(go); var gltf = data.Gltf; - string json; - using (var exporter = new gltfExporter(data, new GltfExportSettings())) - { - exporter.Prepare(go); - exporter.Export(); - - json = gltf.ToJson(); - } Assert.AreEqual(0, gltf.meshes.Count); Assert.AreEqual(1, gltf.nodes.Count); @@ -682,7 +660,7 @@ namespace UniGLTF // import using (var parsed = GltfData.CreateFromExportForTest(data)) { - using (var context = new ImporterContext(parsed)) + using (var context = new ImporterContext(parsed, materialGenerator: new BuiltInGltfMaterialDescriptorGenerator())) using (var loaded = context.Load()) { Assert.AreEqual(1, loaded.transform.GetChildren().Count()); @@ -708,14 +686,14 @@ namespace UniGLTF try { { - var child = GameObject.CreatePrimitive(PrimitiveType.Cube); + var child = TestGltf.CreatePrimitiveAsBuiltInRP(PrimitiveType.Cube); child.transform.SetParent(root.transform); // remove MeshFilter Component.DestroyImmediate(child.GetComponent()); } { - var child = GameObject.CreatePrimitive(PrimitiveType.Cube); + var child = TestGltf.CreatePrimitiveAsBuiltInRP(PrimitiveType.Cube); child.transform.SetParent(root.transform); // set null child.GetComponent().sharedMesh = null; @@ -727,16 +705,9 @@ namespace UniGLTF Assert.True(vs.All(x => x.CanExport)); // export - var data = new ExportingGltfData(); + var data = TestGltf.ExportAsBuiltInRP(root); var gltf = data.Gltf; - string json; - using (var exporter = new gltfExporter(data, new GltfExportSettings())) - { - exporter.Prepare(root); - exporter.Export(); - - json = gltf.ToJson(); - } + var json = gltf.ToJson(); Assert.AreEqual(0, gltf.meshes.Count); Assert.AreEqual(2, gltf.nodes.Count);