Пример #1
0
 public void Export()
 {
     for (int i = 0; i < mesh.Length; i++)
     {
         if (mesh[i].vertices == null)
         {
             mesh[i].vertices = new List <MeshVert>();
         }
         if (mesh[i].faces == null)
         {
             mesh[i].faces = new List <MeshFace>();
         }
         mesh[i].vertices.Clear();
         mesh[i].faces.Clear();
         for (int j = 0; j < mesh[i].Vertices.Length / 15; j++)
         {
             MeshVert m = new MeshVert();
             m.pos    = new Vector3(mesh[i].Vertices[j, 0], mesh[i].Vertices[j, 2], mesh[i].Vertices[j, 1]);
             m.normal = new Vector3(mesh[i].Vertices[j, 4], mesh[i].Vertices[j, 5], mesh[i].Vertices[j, 6]);
             m.color  = new Color(mesh[i].Vertices[j, 8], mesh[i].Vertices[j, 9], mesh[i].Vertices[j, 10], mesh[i].Vertices[j, 11]);
             m.uv     = new Vector2(mesh[i].Vertices[j, 13], mesh[i].Vertices[j, 14]);
             mesh[i].vertices.Add(m);
         }
         for (int j = 0; j < mesh[i].Faces.Length / 7; j++)
         {
             MeshFace mf = new MeshFace();
             mf.material = (int)mesh[i].Faces[j, 0];
             mf.triangle = new List <int> {
                 (int)mesh[i].Faces[j, 1], (int)mesh[i].Faces[j, 3], (int)mesh[i].Faces[j, 2]
             };
             mesh[i].faces.Add(mf);
         }
     }
 }
Пример #2
0
 public CopyLayerInstance(MeshVert _parent, MeshFace _element, int copyLayerId = -1)
 {
     parent         = _parent;
     element        = _element;
     offsetPosition = Vector3.zero;
     copyLayer      = CopyLayerManager.GetLayer(copyLayerId);
     copyLayer.Add(this);
 }
Пример #3
0
    void ConvertMesh(Mesh mesh)
    {
        meshFilter.mesh = mesh;
        var meshVertices  = mesh.vertices;
        var meshTriangles = mesh.triangles;

        // Create Verts
        foreach (var v in meshVertices)
        {
            var newVert = new MeshVert(v);
            //newVert.index = verts.Count;
            var index = MeshVerts.IndexOf(newVert);

            if (index == -1)
            {
                MeshVerts.Add(newVert);
            }
            else
            {
                MeshVerts.Add(MeshVerts[index]);
            }
        }

        // Create Tris and Find Neighbours
        for (var i = 0; i < meshTriangles.Length; i += 3)
        {
            MeshFaces.Add(new MeshTri(MeshVerts[meshTriangles[i]], MeshVerts[meshTriangles[i + 1]], MeshVerts[meshTriangles[i + 2]]));
        }

        foreach (var face in MeshFaces)
        {
            face.GetNeighbours();
        }

        // Clean Up
        MeshVerts = MeshVerts.Distinct().ToList();
        //meshFilter.mesh.MarkDynamic();
        transform.position = new Vector3(0, mesh.bounds.extents.y, 0);
        //sizeOffset = 1 + (meshTriangles.Length / 3 / 800);
        Camera.main.GetComponent <MouseOrbitZoom>().SetDesiredDistance(mesh.bounds.size.z + mesh.bounds.extents.y);
        meshCollider.sharedMesh = mesh;
    }
Пример #4
0
    //	Vertices for normal cube
    void Vertices(int side, float3 position, int index)
    {
        switch (side)
        {
        case 0:     // North
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[4] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[5] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[1] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[0] + position
            };
            break;

        case 1:     // South
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[6] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[7] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[3] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[2] + position
            };
            break;

        case 2:     // East
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[5] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[6] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[2] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[1] + position
            };
            break;

        case 3:     // West
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[7] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[4] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[0] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[3] + position
            };
            break;

        case 4:     // Up
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[7] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[6] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[5] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[4] + position
            };
            break;

        case 5:     // Down
            vertices[index + 0] = new MeshVert {
                vertex = baseVerts[0] + position
            };
            vertices[index + 1] = new MeshVert {
                vertex = baseVerts[1] + position
            };
            vertices[index + 2] = new MeshVert {
                vertex = baseVerts[2] + position
            };
            vertices[index + 3] = new MeshVert {
                vertex = baseVerts[3] + position
            };
            break;

        default: throw new System.ArgumentOutOfRangeException("Index out of range 5: " + side);
        }
    }
Пример #5
0
 public FloatingMeshVert(MeshVert _meshVert, Vector3 _pos, CopyLayerInstance _copyLayer)
 {
     meshVert      = _meshVert;
     StartPosition = _pos;
     copyLayer     = _copyLayer;
 }