본문으로 바로가기

FBX Export Geometry options

category Technical Report/Graphics Tech Reports 2023. 10. 26. 17:26
반응형

FBX Animation options : http://illu.tistory.com/1337
2016년 버전에서 조금 업데이트 이문서 많이들 보시길래...

FBX Option

Geometry

2014 version FBX export option
2022 version. 큰 차이는 없고 몇가지 옵션이 추가되었다.

Geometry option : https://help.autodesk.com/view/3DSMAX/2024/ENU/?guid=GUID-249100FE-67BE-43B8-AF12-D20703CDF8D1

Animation Only(Do not Export Geometry) : Animation 정보만 추출하는 옵션으로 보임.(테스트 안해봄.. ㅎㅎ)

Smoothing Group
: 스무싱 그룹 설정을 포함하여 export. 상용 엔진에서 smoothing group을 재계산 할 수도 있지만 대게 3DSMAX 에서 필요에 따라 나눠주고 export하는 것을 권장한다. Maya에서 이야기하는 Hard edge, Soft Edge 정보가 이 항목이다.


* import 시 Smoothing group 옵션은 좀 다른 방식으로 작동한다.

import option에서는 geometry 설정이 Smoothing Group 하나만 체크된다.

이경우 FBX의 Smoothing group의 정보를 체크하면 smoothing group 정보가 없는 상태로 import 되고 체크를 해제하면 메쉬의 smoothing group 정보가 포함된 상태로 들어온다.

Smoothing Group 체크를 하고 import 한 상태

 

Smoothing Group 체크를 끄고 import 한 상태

1번의 경우 Autodesk manual에서는 아래와 같이 설명한다.

The Smoothing Groups option in the FBX Collada importer does not import Smoothing Groups from the FBX file. Instead, when you activate this option, the Importer creates the Smoothing Groups during the import process. The Collada importer must create Smoothing Groups on Import because the FBX Collada exporter does not export Smoothing Groups data from 3ds Max. If you disable the Smoothing Groups option, no Smoothing Groups are generated by the Importer.

즉 편집 가능한 상태로 smoothing group을 생성하는데 문제는 이 상태에서는 기존에 가지고 있는 smoohing group 정보가 모두 삭제되고 편집가능한 상태로 변환된 것.

체크를 해제하고 import 했을때는 이상태에서 smoothing group 편집이 불가능하다.
https://download.autodesk.com/us/fbx/2013/3ds_Max_FBX_Plug-in_Help/index.html?url=files/GUID-E4505FF5-704D-4687-A8C9-E38003A7B3C9.htm,topicNumber=d30e4443

망토부분을 smoothing group을 하나로 합쳐도 노멀 정보를 확인해보면 버텍스가 분리된걸 확인할 수 있다.



Split per-vertex Normals : 버텍스 노멀에 따라 버텍스를 분리. Unity 내부에서 버텍스 노멀값에 따라 버텍스를 자동으로 나누어 주게 되므로 이를 체크할경우 버텍스 수만 늘어난다.(걍 체크하지 마삼. 알아서 해줌). 매뉴얼의 정보는 아래와 같다.

엣지의 연속성을 기준으로 지오메트리의 버텍스 노멀을 분할하려면 이 옵션을 활성화 한다.
Note :
이 옵션은 이전 MotionBuilder work flow에만 적용되므로 표면 연속성의 시각적 충실도를 보장할 수 있다. 이를 통해 하드 에지 정보를 MotionBuilder로 보낼 수 있게된다. 이 전송은 2010 및 이전 버전의 MotionBuilder 제한으로 인해 필요하다.

MotionBuilder에서 하드 엣지가 필요하지 않은 경우 이 옵션을 사용하지 말것. 이 작업은 버텍스 정보를 복사하고 지오메트리를 변환하기 때문


그럼 이걸 언제 쓰는가?


3ds Max 또는 Maya와 MotionBuilder 2010 및 이전 버전 간에 작업할 때 엣지가 하드(분할)되었는지 아닌지(연속-소프트) 여부를 유지하려면 이 옵션을 사용한다. 이 옵션을 비활성화하면 3ds Max의 모든 스무딩 그룹은 물론 Maya의 모든 하드/소프트 가장자리 정보도 무시된다.

예를 들어 일반적으로 가장자리를 정의한 3ds Max에서 생성된 상자는 MotionBuilder에서 가장자리를 분할하지 않고 모든 면이 시각적으로 연결되어 엣지가 손실된다. 이 결과는 유기물에서는 거의 눈에 띄지 않지만, 테이블이나 자동차 등 딱딱한 표면에서는 매우 눈에 띄게 된다.

3ds Max로 다시 가져오기 위해 원래 3ds Max 엣지의 연속성을 유지하면서 적절한 엣지 연속성을 사용하여 3ds Max에서 내보낸 FBX 파일을 MotionBuilder로 가져오려면 버텍스 노멀 분할 workflow를 참조.
(더 자세한 정보가 궁금하면 위 링크로 이동 !!)



Tangents and Binormals : FBX 데이터에 탄젠트와 바이노멀 값을 포함. 이를 사용할 경우(특히 노멀맵)에만 체크해줌

유니티의 경우 해당 Model에서 Normal과 Tangents값을 엔진 내부에서 어떻게 사용할지 선택할 수 있게 옵션을 제공 한다. import의 경우 fbx의 값을 그대로 사용하고 Calculate의 경우 다시 계산, None의 경우 계산하지 않는 옵션이다. 최신버전은 Mikkt를 지원하면서 좀 더 복잡해졌다. 본 포스팅에서는 여기까지는 설명하지 않는다.

Unity에서 Tangents 값의 설정. 최근 버전은 탄젠트는 Mikktspace가 기본 설정이다.


tangent 값을 포함한경우와 그렇지 않은경우의 fbx file 용량 비교

fbx export 옵션의 binormal과 tangents를 포함할때와 그렇지 않을 경우, fbx의 용량차이가 발생한다. 위 이미지의 경우 약 2배 조금 넘는 차이를 보이는데 이 경우는 smoothing group을 하나로 묶은 경우라 그렇고 스무싱 그룹의 수와 메쉬 형태에 따라 정도의 차이는 있으리라 본다.

빌드 용량에 신경을 쓴다면 binormal과 tangent를 사용하지 않는 경우에는 export옵션에서 이를 꺼주는게 mesh 용량을 줄여준다.(실제 vertex counter는 calculate하는것과 import 옵션을 사용해 받아오는 것에서 큰 차이가 없는데 노멀맵을 사용하지 않는다면 이건 쓸일 없이 용량만 잡아 먹는다는거)
노멀맵을 쓰는 경우에도 엔진에서 계산하는게 결과물에 차이가 없다면(길티기어 xrd처럼 강제로 조절하는 경우가 아니라면) 엔진에서 계산해주는 것을 권장[각주:1]

TurboSmooth : Modifierturbosmooth가 있을경우 포함. Unity에서는 지원하지 않음(이거 되나 몇번 뒤져봤는데 안됨. Unreal이랑 Cry, Vision은 지원했던거 같음). 원래 의도는 Turbo smooth 정보가 적용된 메시의 경우 원본 메시와 TurboSmooth 적용 버전이 같이 적용된 데이터로 내보내는 목적인듯 하다.

Preserve Instances : instance로 복제된 mesh 설정을 유지. 유니티에서는 복사된 메쉬로 그냥 인식됨.

Selection Sets : 셀렉션 셋을 포함해서 내보냄(이거 뭔지 잘 모르겠음) 아래는 매뉴얼 설명
Objects and all Editable Poly/Mesh & Poly/Mesh Select modifier sub-object (component) selection sets are supported for export and import with the 3ds Max FBX plug-in.

Activate this option to export Selection sets. Disable this option if you do not want Selection Sets exported with your file. This option is disabled by default. Note: To avoid name clashing, the 3ds Max FBX plug-in must rename Sub-object Named Selection sets on export. This is because the 3ds Max FBX plug-in does not distinguish between edges and borders, or polygons and elements. Because borders contain edges, and elements contain polygons, FBX must identify these Sub-objects and add a suffix. For example, if you had a Sub-object Named selection set of one vertex called “OneVertex” that belonged to Box01, on export it becomes renamed “Box01_OneVertex”. 

When Should I Not Do This?

Activating this option includes extra data with your scene so be certain that you need the Selection set data before you export. Exporting a scene with Selection Sets impacts file size and if Selection Sets are not required, it is good practice to keep the file size as small as possible by excluding unwanted data.


Convert Deforming Dummies to Bones : 본이 아닌 오브젝트를 본처럼 사용했을 때 본으로 바꿔주는 기능. 자세한 사항은 애니메이션 export 항목 참조

Triangulate : 이 옵션은 자동으로 테셀레이트된 폴리곤 지오메트리를 익스포트한다. (다각형 메시에 메시에 적용되는 옵션인데 해보면 아무런 차이가 없....)

Preserve edge orientation : 이 옵션을 사용하면 숨격진 엣지 방향 정보를 포함해 editable poly 오브젝트로 저장된다. 다각형 편집모드(Editable poly) 로 이어서 수정하려면 체크.

 

Advanced Options

Unit : 스케일을 어떻게 export 할건지 설정하는 항목. 이전버젼의 엔진에서는 이 값을 automatic을 체크하는 경우에 제대로 나가지 않는 경우가 많았으나 최신 버젼의 엔진에서는 대부분 문제없이 export된다. 하지만,  editor의 scale factor에서 제대로 import 되는지 체크해볼 필요가 있다.

Scene units converted to : 사용자가 임의로 export되는 오브젝트의 scale을 고정한다. 실제 export된 model의 정보는 import 단계에서 모델데이터로 저장되면서 고정되나 transform 항목에서 다시 스케일을 바꾸는건 비용면에서 좋지 않은 작업 방식이다. (특히 비균등 스케일 쓰지 말자....저~~~~엉~~~말 필요할때 빼고)

editor의 model option에서 scale factor와 convert Units 옵션에서 실제 모델 사이즈가 제대로 들어왔는지 체크가 가능하다.


Axis Conversion : Up Axis : Y-up, Z-up을 설정하나 이는 모델의 참고 자료일뿐 실제 모델의 좌표계가 변경되지는 않는다. 이를 정확히 바로 잡으려면 X축으로 90도 회전한 상태에서 export하면 유니티에서 정상적으로 보임. 귀찮다고 이거 안하면 Y-up 엔진에서는 모델이 모조리 드러누워 있는걸 볼 수 있다. 언렬은 그냥 잘 나온다(Z-up)

FBX File Format : Binary와 ASCII 두 종류를 선택할 수 있다. Binary로 묶이는 파일은 쉽게 접근이 어렵고[각주:2] ASCII로 저장하면 3D 정보가 제대로 저장되어있는지 메모장에서 확인이 가능하다. 거의 쓸일이 없긴 한데 fbx 자체의 오류 검출을 체크하는 목적으로 가끔 열어보는 경우가 있다.

  1. Unity Project Setting에서 Vertex compression의 Tangent의 해당하는 항목이 mesh의 Tangent값을 제거하고 엔진에서 계산한 값을 쓰는건지 아니면 그냥 FP를 낮추는건지는 모르겠다(후자라고 봄...) [본문으로]
  2. 이름 그대로 이진법으로 저장된다. https://brunch.co.kr/@ericbaek/94 [본문으로]
반응형