스켈 레탈 애니메이션을 잃어 버렸습니다. 나는 이것에 관해 몇 가지 것을 읽었지 만 그것들은 여전히 내가 이해하지 못하는 한 가지이다. 이것은 내가 가진 결론입니다. 나는 뼈와 메쉬를 애니메이션하는 3 가지 방법 보았다Directx 11 스켈 레탈 애니메이션
내가 버텍스, 버텍스 버퍼, 인덱스 버퍼 및 텍스처 쉐이더를 포함하는 메쉬 클래스가 있고, 변환 행렬을. 나는 각 뼈에 대해 클래스를 사용하여 가중치를 추가 할 수 있으며, 모델을 애니메이션화하기가 쉽습니다. 그러나 저장된 것은 저장되어있는 한 번만 사용해야하기 때문에 너무 많은 메모리를 사용한다는 의미입니다.
버텍스 쉐이더를 사용하십시오. 입력 버텍스 매개 변수에 가중치 및 뼈 인덱스를 추가하고 행렬 배열을 전역 변수로 사용하므로 쉐이더에서 뼈대의 매트릭스를 사용해야합니다. 이 솔루션은 나를 위해 더 효율적으로 보이지만 directx 11 튜토리얼 (Rastertek의)에서 그는 HLSL이 너무 빨랐다는 것을 기억합니다. 많은 시간이 소요 되었기 때문에 너무 무거울 것이라고 생각합니다. 어쨌든 이것은 시도해 볼만한 해결책입니다. 최소한 그것이 작동하는지 아닌지를 아는 것입니다.
각 본에 대해 행렬 및 역행렬을 사용하십시오. 읽기에 관해서는, 이것이 방법입니다. 그러나 이것이 내가 이해하지 못한 방식입니다. 왜 여기서 역행렬을 사용하고 행렬을 정점에 "링크"시키는 지에 대해 설명합니다. 나는 오른손 뼈대를위한 행렬을 움직인다면, 오른손 버텍스 만 사용된다는 코드에서 말한 것은 무엇입니까?
- 두 번째 방법은 가능한인가? 또는 일부 메쉬와 애니메이션이있는 GPU에 너무 많이 사용됩니까?
- 행렬이 정점에 연결되는 방식을 설명 할 수 있고 왜 역행렬을 사용합니까? 또는 이것에 관해 나에게 어떤 것을 링크해라.
내가 잘 설명했는지 확신 할 수 없기 때문에 당신이 나를 이해했기를 바랍니다. 그리고 제 영어를 용서해주십시오, 제가 할 수있는만큼 좋은 결과를 냈습니다. 미리 감사드립니다.
두 번째 방법은 픽셀 쉐이더가 아니라 버텍스 쉐이더를 사용하여 포스트 편집을하는 것입니다. 그러나 나는 그 문제를 이해했다고 생각한다. 정적 모델을 렌더링하고 싶을 때, 쉐이더 클래스의 렌더링 함수를 한 번만 사용합니다. 그러나 애니메이션 모델을 사용하면 각 뼈에 대해이 변환 함수를 뼈 변환으로 곱한 세계 행렬을 사용해야합니다. 세계 행렬 매개 변수가 맞습니까? Btw는 설명에 감사드립니다. – Aulaulz
아니요, 매트릭스 및 정점 가중치를 포함하여 필요한 모든 정보를 제공하는 그리기 호출을 하나만 발행합니다. –
그렇다면 나는 여전히 팔뚝의 픽셀이 팔뚝 행렬과 관련되어 있다는 것을 셰이더가 어떻게 알지 못합니다. – Aulaulz