Beispiel #1
0
        /// <summary>
        /// VRM-1 の thumbnail テクスチャー。gltf.textures ではなく gltf.images の参照であることに注意(sampler等の設定が無い)
        /// </summary>
        public static bool TryGetMetaThumbnailTextureImportParam(GltfData data, UniGLTF.Extensions.VRMC_vrm.VRMC_vrm vrm, out (SubAssetKey, TextureDescriptor) value)
        {
            if (vrm?.Meta?.ThumbnailImage == null)
            {
                value = default;
                return(false);
            }
            var thumbnailImage = vrm.Meta.ThumbnailImage;

            if (!thumbnailImage.HasValue)
            {
                value = default;
                return(false);
            }
            var imageIndex = thumbnailImage.Value;

            if (imageIndex < 0 || imageIndex >= data.GLTF.images.Count)
            {
                value = default;
                return(false);
            }

            var gltfImage = data.GLTF.images[imageIndex];

            // data.GLTF.textures は前処理によりユニーク性がある
            // unique な名前を振り出す
            var used      = new HashSet <string>(data.GLTF.textures.Select(x => x.name));
            var imageName = gltfImage.name;

            if (string.IsNullOrEmpty(imageName))
            {
                imageName = THUMBNAIL_NAME;
            }
            var uniqueName = GlbLowLevelParser.FixNameUnique(used, imageName);

            value = GltfTextureImporter.CreateSrgbFromOnlyImage(data, imageIndex, uniqueName, gltfImage.uri);
            return(true);
        }