示例#1
0
        public static PShape3D CreateMesh(ParallelMeshData parallelMeshData, Fix64Vec3 scale)
        {
            if (!initialized)
            {
                Initialize();
            }

            IntPtr m_NativeObject = NativeParallel3D.CreateMesh(parallelMeshData.vertices, parallelMeshData.vertexCount, parallelMeshData.triangles, parallelMeshData.triangleCount, scale);

            return(new PShape3D(m_NativeObject));
        }
        void Reset()
        {
            MeshFilter meshFilter = GetComponent <MeshFilter>();

            Mesh mesh = meshFilter.sharedMesh;

            verts      = mesh.vertices;
            vertsCount = verts.Length;

            int[] triangles     = mesh.triangles;
            int   triangleCount = triangles.Length;

            meshData               = new ParallelMeshData();
            meshData.vertexCount   = (UInt32)vertsCount;
            meshData.vertices      = new Fix64Vec3[meshData.vertexCount];
            meshData.triangleCount = (UInt32)(triangleCount / 3);
            meshData.triangles     = new ParallelTriangle[meshData.triangleCount];

            for (int i = 0; i < vertsCount; i++)
            {
                meshData.vertices[i] = (Fix64Vec3)verts[i];
            }

            for (int i = 0; i < triangleCount; i++)
            {
                int vIndex = i % 3;
                int tIndex = i / 3;

                if (vIndex == 0)
                {
                    meshData.triangles[tIndex].v1 = (UInt32)triangles[i];
                }
                else if (vIndex == 1)
                {
                    meshData.triangles[tIndex].v2 = (UInt32)triangles[i];
                }
                else
                {
                    meshData.triangles[tIndex].v3 = (UInt32)triangles[i];
                }
            }
        }