mirror of
https://github.com/maxartz15/VertexAnimation.git
synced 2024-11-09 22:32:55 +01:00
39 lines
850 B
C#
39 lines
850 B
C#
using UnityEngine;
|
|
|
|
namespace TAO.VertexAnimation
|
|
{
|
|
public static class MeshLodGenerator
|
|
{
|
|
public static Mesh[] GenerateLOD(this Mesh mesh, int lods, float[] quality)
|
|
{
|
|
Mesh[] lodMeshes = new Mesh[lods];
|
|
|
|
for (int lm = 0; lm < lodMeshes.Length; lm++)
|
|
{
|
|
lodMeshes[lm] = mesh.Copy();
|
|
|
|
// Only simplify when needed.
|
|
if (quality[lm] < 1.0f)
|
|
{
|
|
lodMeshes[lm] = lodMeshes[lm].Simplify(quality[lm]);
|
|
}
|
|
|
|
lodMeshes[lm].name = string.Format("{0}_LOD{1}", lodMeshes[lm].name, lm);
|
|
}
|
|
|
|
return lodMeshes;
|
|
}
|
|
|
|
public static Mesh[] GenerateLOD(this Mesh mesh, int lods, AnimationCurve qualityCurve)
|
|
{
|
|
float[] quality = new float[lods];
|
|
|
|
for (int q = 0; q < quality.Length; q++)
|
|
{
|
|
quality[q] = qualityCurve.Evaluate(1f / quality.Length * q);
|
|
}
|
|
|
|
return GenerateLOD(mesh, lods, quality);
|
|
}
|
|
}
|
|
} |