지난 글에서 텍스쳐를 불러와 화면에 표시했었는데,


이번에는 3D 모델을 불러와 화면에 표시해보려 함


오늘 쓸 3D 모델은, 아래 벌컨 튜토리얼에서 사용하는 CC라이센스 바이킹의 방 모델을 사용하기로 함ㅇㅇ


https://vulkan-tutorial.com/Loading_models


Loading models - Vulkan Tutorial

Loading models - Vulkan Tutorial

vulkan-tutorial.com



24b0d121e09c28a8699fe8b115ef046f5c4f9c96af



벌컨 튜토리얼(cpp)과 다르게 우리는 Rust를 쓰기 때문에,


Rust용 obj파일 로드 크레이트인 tobj를 사용할 것임


https://docs.rs/tobj/latest/tobj/


tobj - Rust

tobj - Rust

docs.rs



기존에 버텍스 관련 기능들을 다 만들어둔 덕에, 파싱된 결과물을 그냥 이어 붙히기만 하면 되서 편했음ㅇㅇ



그리고 실행해보면,


ac5939a70001b942813e33669735c1bcc2a977c21c773585f0dabed5e42e074dc2d2552d4ea3fd29cfa114c2d1971e9ed3f9f93b9257df1592146e82c24858d802c14327e980279444458fedec64



형태는 잘 나오는데, 텍스쳐가 입혀지지 않음.


쉐이더와, 메인 패스에 텍스쳐 관련 샘플러를 작성하고 입히면, 아래처럼 잘 나오게 됨




ac5939a70001b942813e33669735c1bcc2a977c21c773585f0dabed5e42e074dc2d2552d4ea3fd29cfa114c2d1971e9ed3f9f93b9257df1592146e82c04558d84b3c1cc27eed19869256d5d0a27d2d









웹에서는 다음 경로에서 확인 가능함


- WGPU: https://erenengine.github.io/eren/eren_render_shared/examples/test_model.html


- WebGL: https://erenengine.github.io/erenjs/eren-webgl-render-shared/examples/test-model/index.html



관련 코드들


- vulkan 구현: https://github.com/erenengine/eren/tree/main/eren_vulkan_render_shared/examples/test_model


- wgpu 구현: https://github.com/erenengine/eren/tree/main/eren_render_shared/examples/test_model


- webgpu 구현: https://github.com/erenengine/erenjs/tree/main/eren-webgpu-render-shared/examples/test-model


- webgl 구현: https://github.com/erenengine/erenjs/tree/main/eren-webgl-render-shared/examples/test-model



다음 글에서는 3D 애니메이션에 대해 다뤄볼까 함... 혹시 다뤄줬으면 하는 내용 있음?


있으면 댓글좀...



그나저나 엄청 덥다;; 모두들 건강 조심해!!




바퀴2