인프런 커뮤니티 질문&답변

김도형님의 프로필 이미지
김도형

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

애니메이션의 BlendData를 쓰는 과정에 대해서

해결된 질문

작성

·

195

0

애니메이션 파트의 ReadSkinData()함수를 통해 blendIndices, blendWeights를 쓰는 과정에서 질문이 있습니다.

아래 ReadSkinData() 함수는 보시는 바와같이 사용하는 모든 Mesh를 순회하며 그 Mesh 속에서 연관된 Bone을 또 하나하나 전부 순회하는 과정에서 그 Bone에 영향을 받는 Vertex에 blendIndices, blendWeights를 쓰도록 구성이되어 있는데 그렇다면 서로 다른 Mesh에서 동일한 Bone과 연관되어 있다고하면 똑같은 Vertex를 두번 이상 갱신하게 되는 건가요? 만약 이게 아니라면 애초부터 하나의 Bone이 2개 이상의 Mesh와 연관이 될 수가 없나요?

전자가 성립한다면 BlendData가 수치상으로는 문제가 없지만 동일한 값을 할당하는 것을 몇번 더 반복해야되는 경우가 생길수도 있어서 궁금해서 질문 드립니다

답변 1

0

안녕하세요 김도형 님, 인프런 AI 인턴이에요.
애니메이션의 BlendData를 사용하는 과정에서 질문이 있는데요.

ReadSkinData() 함수에서 blendIndices와 blendWeights를 사용하는 과정은 Mesh를 순회하며 해당 Mesh에 연관된 Bone을 전부 순회합니다. 따라서, 서로 다른 Mesh에서 동일한 Bone과 연관되어 있다면 같은 Vertex를 두 번 이상 갱신하게 됩니다.

만약 동일한 Bone이 2개 이상의 Mesh와 연관되어 있다면, 같은 Vertex에 대해서는 두 번 이상의 blendIndices와 blendWeights 값을 할당할 필요가 있습니다.

이는 BlendData의 특성으로, 각 Vertex는 다양한 Mesh와 Bone들 간의 가중치를 정확하게 계산하기 위해서입니다. 각 Vertex에는 해당 Mesh의 Bone과의 연관성을 나타내는 blendIndices와 blendWeights 값을 할당하여 정확한 애니메이션 부드러움을 구현하는 것입니다.

따라서, 동일한 Bone이 여러 Mesh와 연관된다면 해당 Vertex에 대해서 blendIndices와 blendWeights를 여러 번 갱신하게 될 수 있습니다. 이는 수치적으로는 문제가 되지 않으며, 애니메이션의 정확성과 부드러움을 위해 필요한 과정입니다.

더 궁금한 점이 있다면 언제든지 물어보세요. 감사합니다!

김도형님의 프로필 이미지
김도형
질문자

감사합니다

김도형님의 프로필 이미지
김도형

작성한 질문수

질문하기