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)); }
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)); } }
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); }
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 }, } }; } }
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); }
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); } }
static void Export_MainTextureTransform(Material m, glTFTextureInfo textureInfo) { Export_TextureTransform(m, textureInfo, "_MainTex"); }
static void Export_MainTextureTransform(Material m, glTFTextureInfo textureInfo) { Export_TextureTransform(m, textureInfo, COLOR_TEXTURE_PROP); }
public static void Serialize(glTFTextureInfo info, (float, float) offset, (float, float) scale)