void CreateMesh()
        {
            mesh = generator.MakeRock();

            previewMeshFilter.mesh = Convert.ToUnityMesh(mesh);

            if (previewEditor)
            {
                DestroyImmediate(previewEditor);
            }

            previewEditor = Editor.CreateEditor(previewObj);
        }
Example #2
0
 public static Mesh ToUnityMesh(MeshDecimator.Mesh dmesh)
 {
     return(new Mesh {
         vertices = dmesh.Vertices
                    .Select(v => new Vector3((float)v.x,
                                             (float)v.y,
                                             (float)v.z))
                    .ToArray(),
         // uv        = dmesh.UV1.Select(uv => new Vector2(uv.x, uv.y)).ToArray(),
         triangles = dmesh.GetIndices(0),
         normals = dmesh.Normals.Select(v => new Vector3(v.x, v.y, v.z))
                   .ToArray()
     });
 }
Example #3
0
        public static string SaveMesh(MeshDecimator.Mesh mesh, string fileName)
        {
            var fullFileName = Path.ChangeExtension(fileName, "obj");
            var data         = WaveFrontObjExporter.ToObjString(mesh);

#if UNITY_WEBGL && !UNITY_EDITOR
            TriggerDownloadTextFile(data, fullFileName);
            return(fileName);
#else
            var path = Path.Combine(Application.dataPath, fullFileName);
            File.WriteAllText(path, data);

            return(path);
#endif
        }
Example #4
0
        public MeshDecimator.Mesh ExportMDMesh()
        {
            int[] args = new int[] { 0, 1, 0, 0 };
            argBuffer.SetData(args);
            ComputeBuffer.CopyCount(appendVertexBuffer, argBuffer, 0);
            argBuffer.GetData(args);
            int numTris  = args[0];
            int numVerts = args[0] * 3;

            // 18 floats per Tri
            // x,y,z,nx,ny,nz
            // x,y,z,nx,ny,nz
            // x,y,z,nx,ny,nz

            float[] dataCPU = new float[numTris * 18];

            appendVertexBuffer.GetData(dataCPU);
            var faces = new int[numVerts];
            var verts = new MeshDecimator.Math.Vector3d[numVerts];

            int vertIndex = 0;

            for (int i = 0; i < numTris; i++)
            {
                int addr = i * 18;

                verts[vertIndex++] = new MeshDecimator.Math.Vector3d(dataCPU[addr++], dataCPU[addr++], dataCPU[addr++]);
                addr += 3;

                verts[vertIndex++] = new MeshDecimator.Math.Vector3d(dataCPU[addr++], dataCPU[addr++], dataCPU[addr++]);
                addr += 3;

                verts[vertIndex++] = new MeshDecimator.Math.Vector3d(dataCPU[addr++], dataCPU[addr++], dataCPU[addr++]);
                addr += 3;
            }

            for (int i = 0; i < numVerts; i++)
            {
                faces[i] = i;
            }

            MeshDecimator.Mesh outmesh = new MeshDecimator.Mesh(verts, faces);

            doRender = false;
            return(outmesh);
        }