コード例 #1
0
        public GraphicsModelData(ModelData modelData, bool smoothing)
        {
            smoothing = true;
            var faceCount = modelData.GetFaceCount();

            faces   = new TriangleFace[faceCount];
            dataTNV = new VertexTNV[faceCount * 3];
            for (var index = 0; index < faceCount; ++index)
            {
                ModelData.Face face      = modelData.GetFace(index);
                Vector3        position1 = modelData[face.Index1];
                Vector3        position2 = modelData[face.Index2];
                Vector3        position3 = modelData[face.Index3];
                if (smoothing)
                {
                    dataTNV[3 * index]     = new VertexTNV(cheatSmoothing(modelData.GetVertex(face.Index1), face.Normal), position1);
                    dataTNV[3 * index + 1] = new VertexTNV(cheatSmoothing(modelData.GetVertex(face.Index2), face.Normal), position2);
                    dataTNV[3 * index + 2] = new VertexTNV(cheatSmoothing(modelData.GetVertex(face.Index3), face.Normal), position3);
                }
                else
                {
                    dataTNV[3 * index]     = new VertexTNV(face.Normal, position1);
                    dataTNV[3 * index + 1] = new VertexTNV(face.Normal, position2);
                    dataTNV[3 * index + 2] = new VertexTNV(face.Normal, position3);
                }
                faces[index] = new TriangleFace((uint)(3 * index), (uint)(3 * index + 1), (uint)(3 * index + 2));
            }
        }
コード例 #2
0
ファイル: ModelM3DExporter.cs プロジェクト: ye-man/M3D
 public void Save(ModelData modelData, string filename)
 {
     using (var fileStream = new FileStream(filename, FileMode.Create))
     {
         using (var binaryWriter = new BinaryWriter(fileStream))
         {
             var vertexCount = modelData.GetVertexCount();
             binaryWriter.Write(vertexCount);
             foreach (ModelData.Vertex vertex in modelData.GetAllVertexs())
             {
                 var num = -vertex.X;
                 var y   = vertex.Y;
                 var z   = vertex.Z;
                 binaryWriter.Write(y);
                 binaryWriter.Write(num);
                 binaryWriter.Write(z);
             }
             binaryWriter.Write(vertexCount);
             foreach (ModelData.Vertex vertex in modelData.GetAllVertexs())
             {
                 var num1 = 0.0f;
                 var num2 = 1f;
                 var num3 = 0.0f;
                 binaryWriter.Write(num2);
                 binaryWriter.Write(num1);
                 binaryWriter.Write(num3);
             }
             var faceCount = modelData.GetFaceCount();
             binaryWriter.Write(faceCount);
             foreach (ModelData.Face allFace in modelData.GetAllFaces())
             {
                 binaryWriter.Write(allFace.Index1);
                 binaryWriter.Write(allFace.Index2);
                 binaryWriter.Write(allFace.Index3);
                 binaryWriter.Write(0);
                 binaryWriter.Write(0);
                 binaryWriter.Write(0);
             }
             binaryWriter.Close();
         }
         fileStream.Close();
     }
     FileUtils.GrantAccess(filename);
 }
コード例 #3
0
ファイル: ModelSTLExporter.cs プロジェクト: ye-man/M3D
        public void Save(ModelData modelData, string filename)
        {
            byte[] buffer = new byte[80];
            short  num    = 0;

            using (var fileStream = new FileStream(filename, FileMode.Create))
            {
                using (var binaryWriter = new BinaryWriter(fileStream))
                {
                    binaryWriter.Write(buffer, 0, 80);
                    var faceCount = modelData.GetFaceCount();
                    binaryWriter.Write(faceCount);
                    for (var index = 0; index < faceCount; ++index)
                    {
                        Vector3 _a      = modelData[modelData.GetFace(index).Index1];
                        Vector3 _b      = modelData[modelData.GetFace(index).Index2];
                        Vector3 _c      = modelData[modelData.GetFace(index).Index3];
                        Vector3 vector3 = ModelData.CalcNormal(_a, _b, _c);
                        binaryWriter.Write(vector3.X);
                        binaryWriter.Write(vector3.Y);
                        binaryWriter.Write(vector3.Z);
                        binaryWriter.Write(_a.X);
                        binaryWriter.Write(_a.Y);
                        binaryWriter.Write(_a.Z);
                        binaryWriter.Write(_b.X);
                        binaryWriter.Write(_b.Y);
                        binaryWriter.Write(_b.Z);
                        binaryWriter.Write(_c.X);
                        binaryWriter.Write(_c.Y);
                        binaryWriter.Write(_c.Z);
                        binaryWriter.Write(num);
                    }
                    binaryWriter.Close();
                }
                fileStream.Close();
            }
            FileUtils.GrantAccess(filename);
        }