2013-05-08 3 views
1

내가 묻는 것이 사소한 질문 인 경우 유감이지만 검색 엔진에서 답을 검색하는 방법을 모르는 경우도 있습니다.모델의 특정 지점을 엔진에 전달하십시오.

3ds max에서 모델을 생성하고이를 XNA (예를 들어) 프로그램에로드하는 방법을 분명히 이해했습니다. 필요한 것은 3ds MAX 앱에서 모델의 포인트를 선택하고 주어진 시점에서 내 XNA 앱의 세계 공간 위치를 추적 할 수 있습니다.

왜? 플레이어 총구 총구가 플레이어가 발동 할 때 정확한 지점에 총구 플래시 효과를 생성하는 위치를 추적해야합니다.

감사합니다. 감사합니다.

답변

1

XNA에서 문제는 포인트의 뼈 변환을 복사하여 쉽게 해결됩니다. 3D 생성 도구에서 ModelMesh로 포인트를 설정하면됩니다. E. g. 3ds MAX에서는 장면의 개별 요소로 설정합니다. 그런 다음 엔진에서 .Name propery로 ModelMesh에 액세스하고 Model.CopyAbsoluteBoneTransformsTo()를 수행하여 위치를 가져올 수 있습니다. 몇 가지 추가 단계가 있지만 CopyAbsoluteBoneTransformsTo를 검색하면 필요한 모든 항목을 찾을 수 있습니다.

Position of a modelmesh in XNA

0

보통 응용 프로그램에서 일종의 Scene Graph을 사용하여 개체와 그 변형 관계를 관리하려고합니다. 3DS Max는 장면 그래프를 사용하기 때문에 수출자 및 내보내기 파일 형식에서도 처리해야합니다.

거기에서 빈 노드 (더미 객체 등)를 3ds max의 원하는 위치에 부착하고 응용 프로그램에 내보낼 수 있습니다. 씬 그래프가 작동한다고 가정하고, 빈 노드의 월드 공간 좌표를 검색하거나 총구 플래시와 같은 다른 객체를 (자식으로) 연결할 수 있습니다.

+0

당신이 XNA 4.0에서 장면 그래프를 구현하는 방법에 어떤 기사를 제안 할 수 : 나를 도와 스택 Overfrol 기사는 여기

입니까? 나는이 주제에 대해 아무것도 찾을 수없는 것 같습니다. 내가 아는 한, 특히 코더와 아티스트간에 작업을 분리 할 수 ​​있도록 3ds MAX의 그래프를 내 엔진으로 가져올 수 있어야합니다 (모델링 소프트웨어에서 포인트를 지정하고 게임에서 읽을 수 있어야 함) 그게 맞습니까? – cubrman

+0

아직도 나는 이것이 어렵다는 것을 의심한다. 씬 그래프는 여러 가지 좋은 이유가 있지만 작은 게임의 경우에는 과잉 공격 일 수 있습니다. 나는 곧 모델링에 대해 깊이 파고들 것입니다. 그리고 이것은 특정 메쉬 부분에 이름을 붙여 구현할 수 있어야한다고 생각합니다. 하나의 애니메이션 라이브러리에서이를 보았고 애니메이션 모델의 특정 노드로 이름을 사용하여 애니메이션 모델의 한 지점에 모델을 연결했습니다. – cubrman

0

씬 그래프가 포함되지 않은 또 다른 해결책은 메쉬 (서브 메시)의 정점 위치 또는면 위치에서 위치를 결정하는 것입니다.

3ds max의 VertexID 또는 FaceID가 내 보낸 ID에 해당하는지 확실하지 않으므로이 방법은 상당히 까다로울 수 있습니다.

모델이 정적 인 경우이 picking example을 사용하여 XNA에서 얼굴의 얼굴 및 정점을 결정할 수 있습니다 (중심 좌표에 대해 이야기하기).

이제 얼굴 ID를 적어두면 모델 변환을 사용하여 언제든지 월드 공간에서 선택된 지점의 위치를 ​​계산할 수 있습니다.

관련 문제