Exemple #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));
            }
        }
Exemple #2
0
        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);
        }