/// <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++; } }
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()); }