2011-11-03 3 views
2

나는 내 자신의 스킨 된 메쉬 로더를 만들었습니다. 괜찮아요,하지만 내 문제는 변형 (정점 & 회전) 스킨 메쉬를 변환하는 방법을 모르므로 변환이 정점에 "구워집니다". 마치 기하학이라면 꼭지점을 변형하는 것이 케이크 조각이지만, 이제는 스키닝 정보가 관련되어 있습니다. 예를 들어 척도를 사용하면 메시가 모두 늘어납니다. 내 skinning 데이터도 변환해야하지만, 어떤 부분이 필요한지 압니까? 모든 Bind Pose 행렬? Inverse Bind Pose Matrices? 나는 이것에 대해 어떻게 움직이는 지 이해할 수없는 것 같습니다.메쉬로드 및 처리 중에 스킨이있는 메쉬를 어떻게 변환합니까?

내 구현은 C# & OpenTK이고 Blender 2.6에서 내 보낸 Skinned Collada 파일을로드하고 있습니다.

미리 감사드립니다.

답변

0

C#과 OpenTK는 잘 모르지만 이론적 측면에서 도움을줍니다. 정점은 가중 된 전역 변환 행렬에 의해 변환됩니다. 전역 변환을 형성하려면 각 관절의 로컬 변환을 연결해야합니다. 로컬 변환을 만들려면 로컬 변환, 회전 및 크기 조절을 연결해야합니다. 무게는 관절에서 올 것입니다. 그래서 바인드 포즈의 공동 회전/변환/스케일링을 얻고 로컬 매트릭스를 조작하여 글로벌 매트릭스로 구성해야한다고 생각합니다. 그런 다음 전역 변환에 가중치를 적용한 다음 정점을 변환합니다.

다음 링크는 귀하의 질문과 유사 수도 있습니다. COLLADA: Inverse bind pose in the wrong space?

나는이 collada 파일 플레이어를 만들었지 만 C++을 사용했습니다. http://www.youtube.com/watch?v=bXBfVl-msYw