AR Foundation演示项目,使用 AR Foundation 4.1.7 并围绕某些功能演示更高级功能。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

81 行
1.9 KiB

// Based on: https://catlikecoding.com/unity/tutorials/advanced-rendering/flat-and-wireframe-shading/
using UnityEngine;
public class BarycentricDataBuilder : MonoBehaviour
{
private Mesh m_Mesh;
void Start()
{
//GenerateBarycentricData();
}
public void GenerateData(Mesh sharedMesh)
{
SplitMesh(sharedMesh);
SetVertexColors(sharedMesh);
}
void GenerateBarycentricData()
{
m_Mesh = GetComponent<MeshFilter>().sharedMesh;
SplitMesh(m_Mesh);
SetVertexColors(m_Mesh);
}
void SetVertexColors(Mesh mesh)
{
Color[] colorCoords = new[]
{
new Color(1, 0, 0),
new Color(0, 1, 0),
new Color(0, 0, 1),
};
Color32[] vertexColors = new Color32[mesh.vertexCount];
for (int i = 0; i < vertexColors.Length; i += 3)
{
vertexColors[i] = colorCoords[0];
vertexColors[i + 1] = colorCoords[1];
vertexColors[i + 2] = colorCoords[2];
}
mesh.colors32 = vertexColors;
}
void SplitMesh(Mesh mesh)
{
int[] triangles = mesh.triangles;
Vector3[] verts = mesh.vertices;
Vector3[] normals = mesh.normals;
//Vector2[] uvs = mesh.uv;
Vector3[] newVerts;
Vector3[] newNormals;
//Vector2[] newUvs;
int n = triangles.Length;
newVerts = new Vector3[n];
newNormals = new Vector3[n];
//newUvs = new Vector2[n];
for (int i = 0; i < n; i++)
{
newVerts[i] = verts[triangles[i]];
newNormals[i] = normals[triangles[i]];
//if (uvs.Length > 0)
//{
// newUvs[i] = uvs[triangles[i]];
//}
triangles[i] = i;
}
mesh.vertices = newVerts;
mesh.normals = newNormals;
//mesh.uv = newUvs;
mesh.triangles = triangles;
}
}