728x90
3D Model의 Transform을 업데이트하면서 회전시키도록 구현해보았다.
💡 3D Model 회전
ModelDemo 클래스의 Update 함수에서 탱크 객체의 포탑부분이 빙글빙글 돌아가도록 회전시켜보았다.
탱크의 포탑 부분의 Bone 인덱스는 10 이므로 인덱스를 통한 Bone을 불러오고, Transform의 회전값(rotation)을 sinf 함수로 변화시켰다.
Delta 값과 PI 값을 가져와서 회전속도(100)에 맞춰 Rotation의 Yaw값을 변화시켜주었다.
💡 Update Transform
ModelRender 클래스의 UpdateTransform 함수에서는 Update 시킬 Bone과 변환된 Transform 정보(Matrix)를 매개변수로 받아온다.
Bone이 존재한다면 UpdateBones 함수를 통해 Root Bone부터 자식의 Bone까지 반복문을 돌며, 부모의 Transform(Matrix)을 자신의 Transform(Matrix)에 곱하여 자신의 Transform을 다시 초기화해주었다.
Bone의 Transform 연산이 끝났으면 ModelRender 객체에 존재하는 transform 변수를 연산된 Bone의 Transform으로 초기화하여 적용시켜주었고,
Bone에 맞춰 Mesh의 Transform도 초기화 해 주었다.
프로그램 실행 결과 아래와 같다.
728x90
'🎨DirectX' 카테고리의 다른 글
[DX] Animation Read Clip (0) | 2023.05.25 |
---|---|
[DX] Animation Skin 데이터 : Skinning 기법 (0) | 2023.05.11 |
[DX] Model Material Render (DiffuseMap) (0) | 2023.05.08 |
[DX] Model Material Export (.material, TINYXML) (0) | 2023.05.03 |
[DX] 3D Model Render -2(Shader) (0) | 2023.05.02 |