Inheritance: IJsonSerializable
コード例 #1
0
 public static (Vector2, Vector2) GetTextureOffsetAndScale(glTFTextureInfo textureInfo)
 {
     if (glTF_KHR_texture_transform.TryGet(textureInfo, out var textureTransform))
     {
         return(GetTextureOffsetAndScale(textureTransform));
     }
     return(new Vector2(0, 0), new Vector2(1, 1));
 }
コード例 #2
0
        static void Export_TextureTransform(Material m, glTFTextureInfo textureInfo, string propertyName)
        {
            if (textureInfo != null && m.HasProperty(propertyName))
            {
                var offset = m.GetTextureOffset(propertyName);
                var scale  = m.GetTextureScale(propertyName);
                offset.y = 1.0f - offset.y - scale.y;

                glTF_KHR_texture_transform.Serialize(textureInfo, (offset.x, offset.y), (scale.x, scale.y));
            }
        }
コード例 #3
0
        public static bool TryGet(glTFTextureInfo info, out glTF_KHR_texture_transform t)
        {
            if (info != null && info.extensions is glTFExtensionImport imported)
            {
                foreach (var kv in imported.ObjectItems())
                {
                    if (kv.Key.GetUtf8String() == ExtensionNameUt8)
                    {
                        t = Deserialize(kv.Value);
                        return(true);
                    }
                }
            }

            t = default;
            return(false);
        }
コード例 #4
0
        static void Export_TextureTransform(Material m, glTFTextureInfo textureInfo, string propertyName)
        {
            if (textureInfo != null && m.HasProperty(propertyName))
            {
                var offset = m.GetTextureOffset(propertyName);
                var scale  = m.GetTextureScale(propertyName);
                offset.y = (offset.y + scale.y - 1) * -1.0f;

                textureInfo.extensions = new glTFTextureInfo_extensions
                {
                    KHR_texture_transform = new glTF_KHR_texture_transform()
                    {
                        offset = new float[] { offset.x, offset.y },
                        scale  = new float[] { scale.x, scale.y },
                    }
                };
            }
        }
コード例 #5
0
        public static (Vector2, Vector2) GetTextureOffsetAndScale(glTFTextureInfo textureInfo)
        {
            Vector2 offset = new Vector2(0, 0);
            Vector2 scale  = new Vector2(1, 1);

            if (glTF_KHR_texture_transform.TryGet(textureInfo, out glTF_KHR_texture_transform textureTransform))
            {
                if (textureTransform.offset != null && textureTransform.offset.Length == 2)
                {
                    offset = new Vector2(textureTransform.offset[0], textureTransform.offset[1]);
                }
                if (textureTransform.scale != null && textureTransform.scale.Length == 2)
                {
                    scale = new Vector2(textureTransform.scale[0], textureTransform.scale[1]);
                }

                offset.y = (offset.y + scale.y - 1.0f) * -1.0f;
            }
            return(offset, scale);
        }
コード例 #6
0
ファイル: MaterialImporter.cs プロジェクト: benjymanm/UniVRM
        private static void SetTextureOffsetAndScale(Material material, glTFTextureInfo textureInfo, string propertyName)
        {
            if (glTF_KHR_texture_transform.TryGet(textureInfo, out glTF_KHR_texture_transform textureTransform))
            {
                Vector2 offset = new Vector2(0, 0);
                Vector2 scale  = new Vector2(1, 1);
                if (textureTransform.offset != null && textureTransform.offset.Length == 2)
                {
                    offset = new Vector2(textureTransform.offset[0], textureTransform.offset[1]);
                }
                if (textureTransform.scale != null && textureTransform.scale.Length == 2)
                {
                    scale = new Vector2(textureTransform.scale[0], textureTransform.scale[1]);
                }

                offset.y = (offset.y + scale.y - 1.0f) * -1.0f;

                material.SetTextureOffset(propertyName, offset);
                material.SetTextureScale(propertyName, scale);
            }
        }
コード例 #7
0
 static void Export_MainTextureTransform(Material m, glTFTextureInfo textureInfo)
 {
     Export_TextureTransform(m, textureInfo, "_MainTex");
 }
コード例 #8
0
 static void Export_MainTextureTransform(Material m, glTFTextureInfo textureInfo)
 {
     Export_TextureTransform(m, textureInfo, COLOR_TEXTURE_PROP);
 }
コード例 #9
0
 public static void Serialize(glTFTextureInfo info, (float, float) offset, (float, float) scale)