Update VA_ModelBaker.cs

Removed LitGUI debug logs.
Updated VA_ModelBaker material creation and setting update.
Added mesh finalize function to optimize and upload the mesh data.
This commit is contained in:
max 2021-02-17 00:49:03 +01:00
parent a8ffefa9d6
commit 3c14c98cf9
4 changed files with 54 additions and 28 deletions

View File

@ -116,12 +116,10 @@ namespace TAO.VertexAnimation.Editor
if (EditorGUI.EndChangeCheck()) if (EditorGUI.EndChangeCheck())
{ {
Debug.Log(value);
SetKeyword("USE_INTERPOLATION_ON", value); SetKeyword("USE_INTERPOLATION_ON", value);
} }
} }
{ {
bool value = mat.IsKeywordEnabled("USE_NORMALA_ON"); bool value = mat.IsKeywordEnabled("USE_NORMALA_ON");
MaterialProperty useNormalA = FindProperty("USE_NORMALA", properties); MaterialProperty useNormalA = FindProperty("USE_NORMALA", properties);
@ -148,7 +146,6 @@ namespace TAO.VertexAnimation.Editor
if (EditorGUI.EndChangeCheck()) if (EditorGUI.EndChangeCheck())
{ {
Debug.Log(value);
SetKeyword("VA_FLIP_UVS_ON", value); SetKeyword("VA_FLIP_UVS_ON", value);
} }
} }

View File

@ -113,6 +113,7 @@ namespace TAO.VertexAnimation.Editor
foreach (var m in meshes) foreach (var m in meshes)
{ {
m.Finalize();
AssetDatabase.AddObjectToAsset(m, this); AssetDatabase.AddObjectToAsset(m, this);
} }
@ -141,40 +142,20 @@ namespace TAO.VertexAnimation.Editor
path = path.Remove(start, path.Length - start); path = path.Remove(start, path.Length - start);
path += "/" + name + ".prefab"; path += "/" + name + ".prefab";
// Get info.
NamingConventionUtils.PositionMapInfo info = bakedData.GetPositionMap.name.GetTextureInfo();
// Generate Material // Generate Material
if (!AssetDatabaseUtils.HasChildAsset(this, material)) if (!AssetDatabaseUtils.HasChildAsset(this, material))
{ {
material = AnimationMaterial.Create(name, materialShader); material = AnimationMaterial.Create(name, materialShader, positionMap, useNormalA, useInterpolation, info.maxFrames);
AssetDatabase.AddObjectToAsset(material, this); AssetDatabase.AddObjectToAsset(material, this);
} }
else else
{ {
material.shader = materialShader; material.Update(name, materialShader, positionMap, useNormalA, useInterpolation, info.maxFrames);
} }
material.SetTexture("_PositionMap", positionMap);
material.SetInt("_MaxFrames", bakedData.maxFrames);
if (useNormalA)
{
material.EnableKeyword("USE_NORMALA_ON");
}
else
{
material.DisableKeyword("USE_NORMALA_ON");
}
if(useInterpolation)
{
material.EnableKeyword("USE_INTERPOLATION_ON");
}
else
{
material.DisableKeyword("USE_INTERPOLATION_ON");
}
material.enableInstancing = true;
// Generate Prefab // Generate Prefab
prefab = AnimationPrefab.Create(path, name, meshes, material, lodSettings.GetTransitionSettings()); prefab = AnimationPrefab.Create(path, name, meshes, material, lodSettings.GetTransitionSettings());
} }

View File

@ -14,5 +14,45 @@ namespace TAO.VertexAnimation
return material; return material;
} }
public static Material Create(string name, Shader shader, Texture2DArray positionMap, bool useNormalA, bool useInterpolation, int maxFrames)
{
Material material = Create(name, shader);
material.Update(name, shader, positionMap, useNormalA, useInterpolation, maxFrames);
return material;
}
public static void Update(this Material material, string name, Shader shader, Texture2DArray positionMap, bool useNormalA, bool useInterpolation, int maxFrames)
{
material.name = name;
if (material.shader != shader)
{
material.shader = shader;
}
material.SetTexture("_PositionMap", positionMap);
material.SetInt("_MaxFrames", maxFrames);
if (useNormalA)
{
material.EnableKeyword("USE_NORMALA_ON");
}
else
{
material.DisableKeyword("USE_NORMALA_ON");
}
if (useInterpolation)
{
material.EnableKeyword("USE_INTERPOLATION_ON");
}
else
{
material.DisableKeyword("USE_INTERPOLATION_ON");
}
}
} }
} }

View File

@ -4,6 +4,7 @@ namespace TAO.VertexAnimation
{ {
public static class MeshUtils public static class MeshUtils
{ {
// Copy a mesh and it's properties.
public static Mesh Copy(this Mesh mesh) public static Mesh Copy(this Mesh mesh)
{ {
Mesh copy = new Mesh Mesh copy = new Mesh
@ -29,5 +30,12 @@ namespace TAO.VertexAnimation
return copy; return copy;
} }
// Optimize the mesh and upload the mesh data, makes the mesh no longer readable.
public static void Finalize(this Mesh mesh)
{
mesh.Optimize();
mesh.UploadMeshData(true);
}
} }
} }