C# 및 XNA 4.0을 사용하여 FBX 모델의 정점을 반복적으로 시도하고 있습니다. 저는 정점에 접근 할 수 있다면면 법선, 모서리, PolygonVertexIndex
등의 다른 부분에 직접 액세스 할 수 있다고 생각합니다. XNA 4.0을 사용하여 fbx 모델에서 정점 추출
, 그는 다음과 같이 정점에 액세스 :
Vector3[] a = new Vector3[myModelMeshPart.NumVertices];
myModelMesh.VertexBuffer.GetData<Vector3>(myModelMeshPart.StreamOffset + myModelMeshPart.BaseVertex * myModelMeshPart.VertexStride,
a, 0, myModelMeshPart.NumVertices, myModelMeshPart.VertexStride);
하지만 XNA 4
,VertexBuffer
이
MeshModel
의 속성 될 것 같지 않습니다.
아무도 Model
의 정점 기본 반복을 안내해 줄 수 있습니까?
감사합니다.
@ user2340610 답장을 보내 주셔서 감사합니다.
내 사용 시도가 실제 verts보다 적습니다.
VertexBuffer를 어떻게 사용하는지 모르겠습니다. 이 코드에 대해 말씀해 주시겠습니까?
private void getVerts(Model mdl)
{
foreach (ModelMesh mm in mdl.Meshes)
{
foreach (ModelMeshPart mp in mm.MeshParts)
{
VertexBuffer vb = mp.VertexBuffer;
short[] s = new short[mp.PrimitiveCount * 3];
IndexBuffer ib = mp.IndexBuffer;
ib.GetData<short>(mp.StartIndex * 2, s, 0, mp.PrimitiveCount * 3);
Vector3[] v = new Vector3[4];
VertexPositionNormalTexture[] vert = new VertexPositionNormalTexture[4];
mp.VertexBuffer.GetData<VertexPositionNormalTexture>(vert, 0, mp.NumVertices);
for (int i = 0; i < v.Length; i++)
{
v[i] = vert[i].Position;
trace("(" + v[i].X.ToString() + ", " + v[i].Y.ToString() + ", " + v[i].Z.ToString() + ")");
}
}
}
}
verts를 반복하는 샘플이 있습니까?
고마워,이게 내가 정점을 갖도록 해줄거야.너무 나쁜 다른 데이터에 대한 해당 버퍼가 없습니다. – user2340426
법선 벡터에 대한 버퍼가 필요하다. 버퍼는 실제로 드로잉 용입니다. – user2340634