본문 바로가기

로블록스 개발 중급

외부 툴에서 제작한 3D 모델을 로블록스에 불러오기

오토데스크의 마야, 3D MAX, 그리고 Blender 에 만든 3D 모델을 로블록스에 불러오는 방법에 대해 살펴보자.

3D 모델 업로드

가장 쉬운 방법은 Asset Manager 창(View 탭 → Asset Manager)에서 Import 버튼을 통해 모델을 로블록스 서버에 업로드시키는 것이다.

 

이 때, 아래와 같은 창이 뜬다.

  • Rescale if too large : 너무 크면 알아서 줄여주는 옵션
  • Reverse inward-pointing mesh normals : 3D 모델 툴에서 제작한 모델을 Export 할때 메쉬의 법선 벡터가 안쪽을 향하는 경우에 바깥쪽을 향하게 수정하는 옵션. 일부러 하는 경우가 아니라면, 일반적으로 메쉬의 법선 벡터는 바깥쪽을 향해야 한다. 그러므로 보통 체크를 해주자.
  • Import file as single mesh 는 여러개의 개별적인 메쉬로 구성된 모델의 경우, 하나의 싱글 메쉬로 합쳐서 불러오는 기능이다. 하나의 모델을 만들어서 볼러오는 경우라면 대부분의 경우 하나의 메쉬로 불러오는 것이 일반적이다.

불러오기가 완료되면 아래와 같이 메쉬가 보이게 된다.

 - 제한 사항 - 
1. 상위 메쉬의 하위 메쉬 중에서 하나라도 5000개 이상의 폴리곤을 사용하는 메쉬라면 부모 메쉬는 리젝된다.
2. 상위 메쉬가 하위 메쉬를 50개 이상을 가지고 있으면 모든 하위 메쉬가 리젝된다.

메쉬 추가하기

게임에 메쉬를 추가하려면 업로드한 메쉬를 선택하고 마우스 오른쪽 버튼으로 Insert를 선택하면 된다. 혹은 메쉬에 위치데이터가 포함된 경우에는 Insert With Location을 선택한다.

 

그러면 이제 업로드된 메쉬가 아래와 같이 MeshPart형태로 게임에 추가가 된다.

텍스쳐(Texture) 입히기

메쉬 파일에 이미 텍스쳐의 정보가 들어있는 경우에는 게임에 추가할 때에 자동으로 텍스쳐가 추가된 채로 추가된다.

메쉬에 텍스쳐 정보가 제대로 없어서 자동으로 입혀지지 않는다면 로블록스 스튜디오내에서 MeshPart의 TextureID 속성에 텍스쳐 아이디를 넣으면 된다. 혹은, 런타임중에도 스크립트를 통해서 텍스쳐 ID를 수정해서 입힐 수 있다.

MeshPart의 TextureID 속성에 원하는 텍스쳐의 ID를 입력하자.

TextureID를 아래의 방법들로 텍스처를 적용할 수 있다.

  • 이미 업로드한 텍스처 아이디를 입력
  • 팝업창의 아래쪽에  Add Image… 버튼을 눌러서 새로운 이미지를 업로드한다..
  • rbxassetid://0123456789 처럼, 이미 알고 있는 로블록스의 텍스처 에샛을 사용한다. 텍스처의 ID만 입력하면 된다. 

물리에 영향을 받는 충돌 범위 정하기 

메쉬파트는 CollisionFIdelity 속성을 가지고 있다. 메쉬 파트가 실제 물리에 영향을 받는 범위를 얼마나 자세하게 정할 것인가를 결정해주는 속성인데, Default(대략적으로 메쉬의 모양을 따라서), Hull(Box보다는 좀더 정밀), Box(아예 박스로 물리 범위 처리), PreciseConvexDecomposition(메쉬를 따라 정밀하게 물리 범위를 정함) 이 있다.

대략의 경우는 Default일 거라고 보지만, 중요하지 않은 배경의 나무 돌 같은 것이라면 Hull이나 Box를 해서 상관없다. 다만, PreciseConvexDecomposition를 사용할 떄는 신중하자. 메쉬가 복잡하면 할 수록 리소스를 매우 많이 잡아 먹을 것이다.

Level of Detail

메쉬파트의 RenderFidelity 속성은 precise가 디폴트이다. 폴리곤의 변화가 없어서 어디서 보든 같은 렌더링을 보여준다. 그런데 이렇게 하면 멀리서 볼 때 메쉬의 모양은 향상되지만 이러한 메시들이 많은 경우, 전체 게임 성능이 저하될 것이다. 카메라와의 거리에 따른 메쉬의 렌더링의 수준을 바꿔주려면, RenderFidelity 속성을 Automatic로 변경하자. 그러면 카메라와의 거리에 따라 메쉬가 다른 세부 수준으로 렌더링된다.

  • 거리 250 stud 이하 : 최고로 많은 폴리곤을 사용
  • 거리 250 ~ 500 사이 : 중간정도
  • 거리 500 이상 : 매우 적은 폴리곤 사용

트러블슈팅(Troubleshooting)

3D 모델을 로블록스에 불러오기에서 몇몇 문제가 발생할 수 있는데, 보통의 경우는 몇가지 일반적인 문제와 해결 방법에 대해 살펴보자.

1. 복잡한 여러 메쉬 FBX 파일을 불러올 때 올바르게 불러오지 못하는 문제

Wavefront(.obj) 포멧을 대신 사용해 보기. 특히 blender에서 불러오는 경우는 그룹화하고 보내보기.

2. 모델에 리깅 또는 애니메이션 데이터가 포함되어 있으면 제대로 불러오지 못한다.

로블록스는 현재 애니메이션 또는 리깅 데이터 가져오기를 지원하지 않음. 애니메이션/리깅 노드를 제거하고 메시를 다시 업로드하자.

3. Blender에서 보내는 매우 큰 FBX 화일

Blender는 설정에 따라 메쉬를 .fbx 파일로 내보낼 때 배율을 적용하게 되는데, 이로 인해 로블록스로 가져올 때 메쉬가 너무 커질 수 있습니다. Blender의 스케일링 factor를 적용하지 못하도록 하는 방법은 다음과 같다.
1. FBX 포맷 대신에 obj 포멧으로 내보내자. obj 포멧이면 Blender에서 스케일링 factor를 적용하지 않고 1 단위가 로블록스의 1 stud로 같아진다. 

4. 경계를 벗어난 UV

UV는 텍스처를 메시에 매핑한다. 텍스처 이미지 경계를 넘어버린 UV는 마치 텍스처 안에 있는 것처럼 그려지며 결과적으로 타일 텍스처가 생성된다. 실수한 것이라면 매핑을 다시 잘 하자.