1
This commit is contained in:
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user