您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
54 行
1.8 KiB
54 行
1.8 KiB
using UniGLTF;
|
|
using UniGLTF.Extensions.VRMC_materials_mtoon;
|
|
using UnityEngine;
|
|
|
|
namespace UniVRM10
|
|
{
|
|
public static class Vrm10MaterialExportUtils
|
|
{
|
|
public static void ExportTextureTransform(glTFTextureInfo textureInfo, Vector2 unityScale, Vector2 unityOffset)
|
|
{
|
|
if (textureInfo == null)
|
|
{
|
|
return;
|
|
}
|
|
var scale = unityScale;
|
|
var offset = new Vector2(unityOffset.x, 1.0f - unityOffset.y - unityScale.y);
|
|
|
|
glTF_KHR_texture_transform.Serialize(textureInfo, (offset.x, offset.y), (scale.x, scale.y));
|
|
}
|
|
|
|
public static void ExportTextureTransform(TextureInfo textureInfo, Vector2 unityScale, Vector2 unityOffset)
|
|
{
|
|
if (textureInfo == null)
|
|
{
|
|
return;
|
|
}
|
|
// Generate extension to empty holder.
|
|
var gltfTextureInfo = new EmptyGltfTextureInfo();
|
|
ExportTextureTransform(gltfTextureInfo, unityScale, unityOffset);
|
|
|
|
// Copy extension from empty holder.
|
|
textureInfo.Extensions = gltfTextureInfo.extensions;
|
|
}
|
|
|
|
public static void ExportTextureTransform(ShadingShiftTextureInfo textureInfo, Vector2 unityScale, Vector2 unityOffset)
|
|
{
|
|
if (textureInfo == null)
|
|
{
|
|
return;
|
|
}
|
|
// Generate extension to empty holder.
|
|
var gltfTextureInfo = new EmptyGltfTextureInfo();
|
|
ExportTextureTransform(gltfTextureInfo, unityScale, unityOffset);
|
|
|
|
// Copy extension from empty holder.
|
|
textureInfo.Extensions = gltfTextureInfo.extensions;
|
|
}
|
|
|
|
private sealed class EmptyGltfTextureInfo : glTFTextureInfo
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|