public static AABBTree AABBTree(Model model, AABBNodeInfo tree_info) { List<TriangleVertexIndices> indices = new List<TriangleVertexIndices>(); List<Vector3> points = new List<Vector3>(); AABBFactory.ExtractData(model, points, indices, true); VertexPositionColor[] vertices = new VertexPositionColor[indices.Count * 3]; List<float[]> triangles = new List<float[]>(); int i = 0; foreach (TriangleVertexIndices index in indices) { vertices[i++] = new VertexPositionColor(points[index.I0], Color.White); vertices[i++] = new VertexPositionColor(points[index.I1], Color.White); vertices[i++] = new VertexPositionColor(points[index.I2], Color.White); float[] tri = new float[3]; tri[0] = points[index.I0].X; tri[1] = points[index.I1].Y; tri[2] = points[index.I2].Z; triangles.Add(tri); } return new AABBTree(triangles, tree_info); }
public AABBNode(List<float[]> vertices, AABBNodeInfo tree_information, int depth) { _Marked = false; //doubly so! _tree_info = tree_information; _depth = depth; _BuildTree_PreserveTriangles(vertices); }
public static AABBTree AABBTree(Model model) { AABBNodeInfo tree_info = new AABBNodeInfo(); tree_info.leaf_min_verts = 6; tree_info.max_tree_depth = 4; return AABBTree(model, tree_info); }
public AABBTree(List<float[]> vertices, AABBNodeInfo tree_information) { root = new AABBNode(vertices, tree_information, 0); }