Exemple #1
0
 /// <summary>
 /// 頂点の設定
 /// </summary>
 private void SetVertex()
 {
     message.LabelReflesh("モデル読み込み: 頂点");
     message.StatusBar.Maximum = pmx.Vertex.Count;
     for (int vertexidx = 0; vertexidx < pmx.Vertex.Count; vertexidx++)
     {
         IPXVertex v = pmx.Vertex[vertexidx];
         VertexArray[vertexidx] = new CustomVertex.PositionOnly(new SlimDX.Vector3(v.UV.U, v.UV.V, 0));
         message.StatusBar.Value++;
     }
 }
Exemple #2
0
        private void ConvertMeshtoMesh2D(Mesh old)
        {
            CustomVertex.PositionOnly[] oldVertexArray = new CustomVertex.PositionOnly[old.VertexCount];
            using (DataStream data = old.LockVertexBuffer(LockFlags.None))
            {
                for (int i = 0; i < old.VertexCount; i++)
                {
                    float[] vertexdata = new float[8];
                    for (int j = 0; j < 8; j++)
                    {
                        vertexdata[j] = data.Read <float>();
                    }
                    oldVertexArray[i] = new CustomVertex.PositionOnly(new Vector3(vertexdata[6], vertexdata[7], 0));
                }

                old.UnlockVertexBuffer();
            }

            Int16[] oldIndexArray = new Int16[old.FaceCount * 3];
            using (DataStream data = old.LockIndexBuffer(LockFlags.None))
            {
                for (int i = 0; i < old.FaceCount * 3; i++)
                {
                    oldIndexArray[i] = data.Read <Int16>();
                }
                old.UnlockIndexBuffer();
            }

            List <int> oldAttributeArray = new List <int>();

            using (DataStream data = old.LockAttributeBuffer(LockFlags.None))
            {
                while (data.Position < data.Length)
                {
                    oldAttributeArray.Add(data.Read <int>());
                }
                old.UnlockAttributeBuffer();
            }
            this.mesh = new Mesh(device, old.FaceCount, old.VertexCount, MeshFlags.Managed, VertexFormat.Position);

            using (DataStream data = this.mesh.LockVertexBuffer(LockFlags.None))
            {
                data.WriteRange(oldVertexArray);
                mesh.UnlockVertexBuffer();
            }

            using (DataStream data = this.mesh.LockIndexBuffer(LockFlags.None))
            {
                data.WriteRange(oldIndexArray);
                mesh.UnlockIndexBuffer();
            }

            using (DataStream data = this.mesh.LockAttributeBuffer(LockFlags.None))
            {
                for (int i = 0; i < oldAttributeArray.Count; i++)
                {
                    data.Write(oldAttributeArray[i]);
                }
                mesh.UnlockAttributeBuffer();
            }
            // AttributeRange[] ars = old.GetAttributeTable();
            //this.mesh.SetAttributeTable(ars);
            this.mesh.SetMaterials(old.GetMaterials());
            this.mesh.SetAdjacency(old.GetAdjacency());

            //this.mypmx = new MyPMX(oldVertexArray,oldIndexArray,old.GetMaterials(),old.GetAttributeTable());
        }