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

kmin2850님의 프로필 이미지
kmin2850

작성한 질문수

Three.js로 시작하는 3D 인터랙티브 웹

축, 그리드 헬퍼

두 개의 glb 파일에서 skinnedMesh 추출하여 하나에 합치기

작성

·

333

0

- 질문에 대한 답변은 강의자가 하는 경우도 있고, 수강생 여러분들이 해주시는 경우도 있습니다. 같이 도와가며 공부해요! :)
- 작성하신 소스코드 자체의 오류보다는, 개념이나 원리가 이해되지 않는 부분을 질문해주시는게 좋습니다. 그대로 따라했는데 소스코드에서 버그가 나는 경우는 99%가 오타에 의한거라서, 완성된 소스랑 찬찬히 비교해보시면 직접 찾으실 수 있을 거예요. 개발자도구 console에 오류로 표시된 부분만 완성 코드에서 복사->붙여넣기를 해보시는 것도 방법입니다.
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

hair.glb, body.glb 두 개의 모델은 동일한 bone 구조를 가지고 있습니다.
body.glb 모델에 hair.glb의 머리 모양을 결정하는 skinnedMesh 를 가져와 넣어 주었는데요
hair.glb 모델을 단독으로 import 해서 띄웠을 때와 다른 크기와 위치에 skinnedMesh가 적용되어 나타납니다.

기대값.png
이렇게 머리에 헤어 스타일이 적용된게 기대값이었는데요

hair단독.pnghair.glb 파일을 단독 import하면 body.glb에 맞는 위치, 크기로 import 되지만

위에 기재한 대로 skinnedMesh를 가져오면

실제적용값.png이렇게 보여집니다. 뒤에 하얗게 보이는게 hair.glb의 skinnedMesh 입니다.

기대값으로 원하는 모델과 같은 위치에 skinnedMesh를 넣었으나 적용이 되지 않는데 어떻게 해야할까요??

답변 1

0

안녕하세요, 인프런 AI 인턴이에요. glb 파일에서 skinnedMesh를 추출하여 다른 glb 파일에 합치는 작업에 대해 궁금하시군요.

glb 파일은 3D 모델과 애니메이션 데이터를 포함한 파일 형식이기 때문에, 단독으로 불러올 경우 모델과 애니메이션 데이터가 제대로 표현됩니다. 하지만 다른 파일에 해당 skinnedMesh를 넣게 되면 크기와 위치 등이 변경되어 표현될 수 있습니다.

이러한 문제를 해결하기 위해서는 합치고자 하는 두 개의 glb 파일에서 동일한 coordinate system을 사용하고 있는지 확인해야 합니다. 두 개의 파일을 불러와서 coordinate system을 맞춰주기 위해 필요한 변환 작업을 수행해야합니다. 이를 위해 각 파일의 크기와 위치에 대한 정보를 파악하여, 필요에 따라 변환 작업을 수행해야 합니다.

또한, skinnedMesh는 해당 파일에서 사용되는 bone 구조에 직접적으로 의존하기 때문에, 합치고자 하는 두 개의 glb 파일이 동일한 bone 구조를 가지고 있는지도 확인해야합니다. 만약 동일한 bone 구조를 가지고 있다면, skinnedMesh를 추출하여 다른 glb 파일에 추가하는 작업을 수행할 수 있습니다. 하지만 만약 두 개의 파일이 다른 bone 구조를 가지고 있다면, 추가적인 변환 작업이 필요할 수 있습니다.

이러한 작업을 위해서는 3D 그래픽 라이브러리나 3D 모델링 툴을 사용하여 파일을 처리하는 방법이 있습니다. 예를 들어, Three.js나 Unity 같은 3D 그래픽 라이브러리를 사용하여 glb 파일을 불러온 후, 필요한 변환 작업과 mesh 합치기 작업을 수행할 수 있습니다. 해당 라이브러리들에는 이러한 작업을 수행하는 예제나 문서가 제공되고 있으니 참고하시면 도움이 될 것입니다.

하지만 기존의 glb 파일에 대한 수정은 어려운 작업이므로, 원하는 결과를 얻기 위해서는 3D 모델링에 대한 경험이 필요한 경우도 있습니다. 이런 경우에는 3D 그래픽 디자이너나 개발자에게 도움을 요청하는 것이 좋습니다.

추가적으로 필요한 구체적인 내용이나 코드 예시가 있다면 더 자세한 도움을 드릴 수 있을 것입니다. 이해에 도움이 되었기를 바라며, 더 궁금한 사항이 있으면 언제든지 물어보세요!

kmin2850님의 프로필 이미지
kmin2850

작성한 질문수

질문하기