This commit is contained in:
MuHua-123
2024-11-29 18:10:02 +08:00
parent 84243e75a8
commit 698464b9d7
81 changed files with 3073 additions and 671 deletions
@@ -10,12 +10,12 @@ using UnityEngine;
/// <summary>
/// 三角形合并网格
/// </summary>
public class UnitAlgorithmMergeTriangle : UnitAlgorithm<DataPlate> {
public class UnitAlgorithmMergeTriangle : UnitAlgorithm<DataPlateDesign>, UnitAlgorithm<DataPlateBaking> {
/// <summary> 三角形合并网格 </summary>
public UnitAlgorithmMergeTriangle() { }
public void Compute(DataPlate data) {
List<DataTriangle> polygons = data.triangles;
public void Compute(DataPlateDesign plateDesign) {
List<DataTriangle> polygons = plateDesign.triangles;
//三角形合并
List<Vector3> vertices = vertices = MergeVertices(polygons);
List<int> triangles = JobFindTriangleIndex(polygons, vertices);
@@ -23,12 +23,28 @@ public class UnitAlgorithmMergeTriangle : UnitAlgorithm<DataPlate> {
List<Vector2> uv = new List<Vector2>();
for (int i = 0; i < vertices.Count; i++) { uv.Add(vertices[i]); }
//附加数据
data.designMesh = new Mesh();
data.designMesh.vertices = vertices.ToArray();
data.designMesh.uv = uv.ToArray();
data.designMesh.triangles = triangles.ToArray();
data.designMesh.RecalculateBounds();
data.designMesh.RecalculateNormals();
plateDesign.mesh = new Mesh();
plateDesign.mesh.vertices = vertices.ToArray();
plateDesign.mesh.uv = uv.ToArray();
plateDesign.mesh.triangles = triangles.ToArray();
plateDesign.mesh.RecalculateBounds();
plateDesign.mesh.RecalculateNormals();
}
public void Compute(DataPlateBaking plateBaking) {
//List<DataTriangle> polygons = plateBaking.triangles;
////三角形合并
//List<Vector3> vertices = vertices = MergeVertices(polygons);
//List<int> triangles = JobFindTriangleIndex(polygons, vertices);
////展开uv (顶点去掉z坐标就是未缩放的平面UV)
//List<Vector2> uv = new List<Vector2>();
//for (int i = 0; i < vertices.Count; i++) { uv.Add(vertices[i]); }
////附加数据
//plateBaking.mesh = new Mesh();
//plateBaking.mesh.vertices = vertices.ToArray();
//plateBaking.mesh.uv = uv.ToArray();
//plateBaking.mesh.triangles = triangles.ToArray();
//plateBaking.mesh.RecalculateBounds();
//plateBaking.mesh.RecalculateNormals();
}
/// <summary> 合并顶点 </summary>
private List<Vector3> MergeVertices(List<DataTriangle> polygons) {
@@ -54,7 +70,7 @@ public class UnitAlgorithmMergeTriangle : UnitAlgorithm<DataPlate> {
triangleIndex.triangles = trianglesArray;
JobHandle dependency = new JobHandle();
JobHandle handle = triangleIndex.ScheduleParallel(polygons.Count, 2048, dependency);
JobHandle handle = triangleIndex.ScheduleParallel(polygons.Count, 32, dependency);
handle.Complete();
List<int> triangles = new List<int>();