Example #1
0
        void DumpStatus(DumpObjectStatus status)
        {
            switch (status)
            {
            case DumpObjectStatus.Ok:
                break;

            case DumpObjectStatus.Fail:
                ErrorPopup("Dump to .obj failed");
                break;

            case DumpObjectStatus.ColorNotExported:
                ErrorPopup("Vertex colors not exported");
                break;

            case DumpObjectStatus.TexCoord2NotExported:
                ErrorPopup("2nd Texture Coodinate not exported");
                break;
            }
        }
Example #2
0
        static void WriteVertices(ref DumpObjectStatus status, ref bool normals, ref bool texcoords, StreamWriter writer, VMeshData vms, Matrix4 mat)
        {
            if (vms.verticesVertexPositionNormalDiffuseTextureTwo != null ||
                vms.verticesVertexPositionNormalColorTexture != null)
            {
                writer.WriteLine("# WARNING: Color not exported");
                status = DumpObjectStatus.ColorNotExported;
            }
            if (vms.verticesVertexPositionNormalTextureTwo != null)
            {
                writer.WriteLine("# WARNING: 2nd texcoord not exported");
                status = DumpObjectStatus.TexCoord2NotExported;
            }
            var nm = mat.Inverted();

            nm.Transpose();
            for (int i = 0; i < vms.VertexCount; i++)
            {
                if (vms.verticesVertexPosition != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPosition[i].Position));
                }
                if (vms.verticesVertexPositionNormal != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormal[i].Position));
                    WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormal[i].Normal, nm));
                    normals = true;
                }
                if (vms.verticesVertexPositionTexture != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTexture[i].Position));
                    WriteVector(writer, vms.verticesVertexPositionNormalTexture[i].TextureCoordinate);
                    texcoords = true;
                }
                if (vms.verticesVertexPositionNormalTexture != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTexture[i].Position));
                    WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalTexture[i].Normal, nm));
                    WriteVector(writer, vms.verticesVertexPositionNormalTexture[i].TextureCoordinate);
                    normals = texcoords = true;
                }
                if (vms.verticesVertexPositionNormalTextureTwo != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTextureTwo[i].Position));
                    WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalTextureTwo[i].Normal, nm));
                    WriteVector(writer, vms.verticesVertexPositionNormalTextureTwo[i].TextureCoordinate);
                    normals = texcoords = true;
                }
                if (vms.verticesVertexPositionNormalColorTexture != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalColorTexture[i].Position));
                    WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalColorTexture[i].Normal, nm));
                    WriteVector(writer, vms.verticesVertexPositionNormalColorTexture[i].TextureCoordinate);
                    normals = texcoords = true;
                }
                if (vms.verticesVertexPositionNormalDiffuseTextureTwo != null)
                {
                    WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalDiffuseTextureTwo[i].Position));
                    WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalDiffuseTextureTwo[i].Normal, nm));
                    WriteVector(writer, vms.verticesVertexPositionNormalDiffuseTextureTwo[i].TextureCoordinate);
                    normals = texcoords = true;
                }
            }
        }