UnityMol  0.9.6-875
UnityMol viewer / In developement
CullTriangles.cs
Go to the documentation of this file.
1 using UnityEngine;
2 using System.Collections;
3 using System.Collections.Generic;
4 
5 public class CullTriangles {
6  private static Dictionary<string, bool> triDict;
7  private static int[] triangles;
8  private static string key;
9  private static int[] indices;
10  private static List<int> culledTriangles;
11 
12 
13  public static void Cull(Mesh mesh) {
14  triangles = mesh.triangles;
15  triDict = new Dictionary<string, bool>();
16  indices = new int[3];
17  culledTriangles = new List<int>();
18 
19  for(int i=0; i<triangles.Length; i+=3) {
20  indices[0] = triangles[i];
21  indices[1] = triangles[i+1];
22  indices[2] = triangles[i+2];
23  System.Array.Sort(indices);
24 
25  key = indices[0] + "," + indices[1] + "," + indices[2];
26  if(!triDict.ContainsKey(key)) {
27  triDict.Add(key, true);
28  culledTriangles.Add(triangles[i]);
29  culledTriangles.Add(triangles[i+1]);
30  culledTriangles.Add(triangles[i+2]);
31  }
32  }
33 
34  triangles = culledTriangles.ToArray();
35  mesh.triangles = triangles;
36 
37  Debug.Log("CullTriangles::Cull() > Number of triangles after culling:");
38  Debug.Log((mesh.triangles.Length / 3).ToString());
39  Debug.Log((culledTriangles.Count / 3).ToString());
40  }
41 }
static void Cull(Mesh mesh)
static List< int > culledTriangles
static string key
Definition: CullTriangles.cs:8
static Dictionary< string, bool > triDict
Definition: CullTriangles.cs:6
static int[] indices
Definition: CullTriangles.cs:9
static int[] triangles
Definition: CullTriangles.cs:7