Exemplo n.º 1
0
        /// <summary>
        /// Extract をテスト
        /// </summary>
        /// <param name="gltf"></param>
        /// <param name="root"></param>
        static void EditorLoad(FileInfo gltf, int subStrStart)
        {
            GltfData data = null;

            try
            {
                data = new AutoGltfFileParser(gltf.FullName).Parse();
            }
            catch (Exception ex)
            {
                Debug.LogError($"ParseError: {gltf}");
                Debug.LogException(ex);
            }

            // should unique
            using (data)
            {
                var gltfTextures = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable()
                                   .Select(x => x.SubAssetKey)
                                   .ToArray();
                var distinct = gltfTextures.Distinct().ToArray();
                Assert.True(gltfTextures.Length == distinct.Length);
                Assert.True(gltfTextures.SequenceEqual(distinct));
            }
        }
Exemplo n.º 2
0
        public void TextureEnumerationTest()
        {
            {
                var data  = CreateGltfData(TwoTexture());
                var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
                Assert.AreEqual(2, items.Length);
            }

            {
                var data  = CreateGltfData(TwoTextureOneUri());
                var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
                Assert.AreEqual(1, items.Length);
            }

            {
                var data  = CreateGltfData(TwoTextureOneImage());
                var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
                Assert.AreEqual(1, items.Length);
            }

            {
                var data  = CreateGltfData(CombineMetallicSmoothOcclusion());
                var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
                Assert.AreEqual(1, items.Length);
            }
        }
Exemplo n.º 3
0
        public override void OnEnable()
        {
            base.OnEnable();

            m_importer = target as ZipArchivedGltfScriptedImporter;
            m_data     = new AutoGltfFileParser(m_importer.assetPath).Parse();

            var materialGenerator = new GltfMaterialDescriptorGenerator();
            var materialKeys      = m_data.GLTF.materials.Select((_, i) => materialGenerator.Get(m_data, i).SubAssetKey);
            var textureKeys       = new GltfTextureDescriptorGenerator(m_data).Get().GetEnumerable().Select(x => x.SubAssetKey);

            m_materialEditor  = new RemapEditorMaterial(materialKeys.Concat(textureKeys), GetEditorMap, SetEditorMap);
            m_animationEditor = new RemapEditorAnimation(AnimationImporterUtil.EnumerateSubAssetKeys(m_data.GLTF), GetEditorMap, SetEditorMap);
        }
Exemplo n.º 4
0
        public ImporterContext(
            GltfData data,
            IReadOnlyDictionary <SubAssetKey, UnityEngine.Object> externalObjectMap = null,
            ITextureDeserializer textureDeserializer = null)
        {
            Data = data;
            TextureDescriptorGenerator  = new GltfTextureDescriptorGenerator(Data);
            MaterialDescriptorGenerator = new GltfMaterialDescriptorGenerator();

            ExternalObjectMap   = externalObjectMap ?? new Dictionary <SubAssetKey, UnityEngine.Object>();
            textureDeserializer = textureDeserializer ?? new UnityTextureDeserializer();

            TextureFactory = new TextureFactory(textureDeserializer, ExternalObjectMap
                                                .Where(x => x.Value is Texture)
                                                .ToDictionary(x => x.Key, x => (Texture)x.Value),
                                                Data.MigrationFlags.IsRoughnessTextureValueSquared);
            MaterialFactory = new MaterialFactory(ExternalObjectMap
                                                  .Where(x => x.Value is Material)
                                                  .ToDictionary(x => x.Key, x => (Material)x.Value));
            AnimationClipFactory = new AnimationClipFactory(ExternalObjectMap
                                                            .Where(x => x.Value is AnimationClip)
                                                            .ToDictionary(x => x.Key, x => (AnimationClip)x.Value));
        }