Пример #1
0
        /**
         * Create a new BSPTree instance from @mesh using @transform
         * to transform all vertices, normals, and tangents.
         */
        public static BSPTree FromMesh(Mesh mesh, Matrix4x4 transform)
        {
            BSPTree tree = new BSPTree();

            // get a list of all triangles in @mesh
            List <Triangle> meshTriangles = GetMeshTriangles(mesh);

            // loop through each triangle and transform its vertices by @transform
            for (int i = 0; i < meshTriangles.Count; i++)
            {
                Triangle tri = meshTriangles[i];

                for (int vi = 0; vi < 3; vi++)
                {
                    Vertex vtx = TransformVertex(tri.GetVertexByIndex(vi), transform);
                    tri.SetVertexByIndex(vi, vtx);
                }

                tri.RebuildOrientationPlane();
                meshTriangles[i] = tri;
            }

            tree.AddTriangles(meshTriangles);
            return(tree);
        }