일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- REVIT
- Nested Prefab
- automotive
- Unity
- 건축
- 건설
- HDRP
- Architecture
- Alembic
- VOLUMETRIC
- 2018.3
- XC40
- Cinemachine
- 영상
- 사운즈한남
- Bolt #볼트 #2D #유니티 #게임 #비주얼스크립팅 #Unity #Platformer #플랫포머게임 #유니티튜토리얼 #유니티기본튜토리얼 #게임제작 #쉬운게임
- 유니티
- 알램빅
- Pixyz-Plugin_RuleEngine
- AR/VR
- 3D
- realtime
- GAMEENGINE
- 시네머신
- Unity Reflect
- 프리팹
- interior
- animation
- Unite2019 #Unity #ProBuilder #ProGrid
- 유니티 리플렉트
- Today
- Total
#아드리
[DEMO] From CAD to Unity_ PiXYZ! 본문
Intro
이제 PiXYZ를 통해 대규모 CAD데이타를 신속하게 간소화해서 Unity에 임포트 할 수 있게 되었습니다. PiXYZ에서는 PlugIn, Studio, & Review로 제품군이 3가지가 있습니다. 먼저, PiXYZ PLUGIN은 설치하면 Unity에서 자동으로 메시를 테셀레이션하고 LOD 및 UV 생성을 통해 폴리곤 수를 줄여 즉시 사용 가능합니다. PiXYZ STUDIO는 개별 프로그램으로서 좀 더 세밀하게 테셀레이션, 데시메이션 그리고 UV를 생성할 수 있습니다. 그리고 Python Script을 통해 좀 더 빠른 워크플로우를 생성 할 수 있습니다. 마지막으로 PiXYZ Review는 AR, VR을 이용한 프로젝트를 하실 때 Viewer로 사용하실 수 있습니다. 이 글에서는 PiXYZ STUDIO를 이용해 CATiA 에서 모델링한 NURBS 데이타를 폴리건화 시켜 FBX로 Import해서 Unity에서 사용할 수 있게 해보겠습니다.
PiXYZ 에서 불러들일 수 있는 Format
예시로 사용된 CAD file 다운받기: [SAMPLE]-PiXYZ-DEMO-BRAKES-v2017
Navigation Control
PiXYZ에서는 2가지 Navigation 시스템을 제공합니다. Default로는 Standard Navigation으로 셋팅 되어있으니, Catia-Like Navigation으로 변경하고 싶다면 Preference에서 Mode를 변경 할 수 있습니다.
Standard Navigation
ALT Key + Left-click | Rotate camera. |
ALT Key + Middle-click | Pan camera. |
ALT Key + Right-click (or Mouse wheel) | Zoom camera. |
Catia-Like Navigation
Center-click + Left-click | Rotate camera. |
Center-click + Middle-click | Pan camera. |
Center-click + Right-click (or Mouse wheel) | Zoom camera. |
Camera Rotation Center
Mouse Middle-click | 카메라 로테이션 Pivot을 변경. |
Fit Camera View
- CTRL + F keyboard shortcut
- The Fit view button from the STUDIO Toolbar:
Keyboard Shortcut (click here for more)
Import Model
PiXYZ에서 제공하는 PiXYZ CAD 데이타로 Demo를 진행해 보겠습니다.
제가 사용한 Model은 PiXYZ-DEMO-BRAKES.CATProduct입니다.
[File] -> [Import Model] -> [PiXYZ-DEMO-BRAKES-CATProduct] -> [OPEN]
모델을 오픈했을때 이미지와 같은 모델이 보이실것 입니다. Grid가 눈에 계속 거슬릴것 같으니 꺼보겠습니다.
[Edit] -> [Preferences] -> [Viewer] -> [Grid] -> [EnableGrid]
개인적으로 Background Color도 좀 어두웠음 좋을것 같아 색을 좀 어둡게 해보겠습니다.
오른쪽에 보시면 Visualization이 보이실 것 입니다. Setting을 눌러서 Background Color을 바꿔주세요.
* Modifiers 창은 일종의 History가 남습니다. PiXYZ에는 Undo 기능이 없지만 Modifier 창에서 히스토리를 지우고
Apply 할 경우 UNDO 기능 비슷하게 할 수 있습니다. 옆에 Visualization과 Measurement 창도 한번 확인 해 보세요.
Tessellation
CATiA 모델은 Nurbs 로 모델링 되었기 때문에 Unity로 불러들이기 위해서 Polygon으로 변환시켜야 합니다. 이 과정을 Tessellation 이라고 합니다. Tessellation 하기 전에 Repair CAD를 한번 해주겠습니다. 이 과정은 전반적으로 CAD 모델의 모양을 Repair해주고, Face들을 Assemble해주고, 반복되는 Faces들을 지워줍니다.
Repair CAD: [CAD] -> [Repair CAD] -> [Execute]
Repair CAD가 끝났다면 이제 Tessellation을 해보겠습니다.
Tessellation: [CAD] -> [Tessellation] -> [Execute]
Preset을 보시면 High, Medium, Low로 나누어져 있습니다. High는 더 높은 모양 보존을 해 줍니다. Low로 내려갈 수록 모양 보존은 떨어지지만 Triangles 수는 더 적어질 것 입니다. Triangles 수가 적어지면 적어질 수록 더 가벼운 데이타가 되기 때문에 최적화에는 좋습니다. 하지만 모양은 최대치로 보존하면서 Triangle수는 적으면 좋기 때문에 적절한 수치값을 조절하면서 Tessellation을 합니다. 그리고 Preset 옆에 + 사인을 눌르면 Customize 수치값을 입력할 수도 있으니 테스트해 보세요. 저는 Customize 수치 값 "Adri" 라고 해놓고 Tessellation을 해보겠습니다.
After Tessellation [ Triangles: 1, 135, 765 ]
테셀레이션 후 모델을 보시면 Triangles 수가 생겨난 것을 확인 하실 수 있습니다. 이 숫자가 낮으면 낮을수록 Unity에서 최적화하기 좋기 때문에 줄여보겠습니다.
Remove Holes
모델에 구멍이 있다면 이 구멍 하나하나가 많은 Triangles 수를 잡아 먹기때문에 꼭 필요 하지 않으면 매꾸는 것을 권장합니다. 저는 이 모델에서 아래와 같은 방법으로 구멍들을 매꿔 보겠습니다.
Remove Holes: [Optimize] -> [Remove Holes] 들어가서 Advanced에서 10mm 보다 작은 뚤려진 구멍을 모두 매꾸는 Setting을 하였습니다.
After Remove Holes [ Triangles: 568,709 ]
작은 구멍들이 다 매꿔진걸 확인해 보실 수 있습니다. Wireframe을 켜보니 원래 구멍이 있던자리에 자국이 남아 있습니다. [Shortkey F5]
Hidden Removal
이 모델을 Explode해서 보았습니다. 원래 View에서는 볼 수 없었던 안쪽에 많은 부속품들이 있습니다.
Hidden Removal는 Camera에서 어떻게 돌려봐도 볼 수 없는 부품들을 지워 주는 역할을 합니다. 어차피 안보이는데 Triangles 숫자만 늘리고 있기 때문에 한번 지워 보겠습니다.
Hidden Removal: [Optimize Mesh] -> [Hidden Removal] 에서 Level을 Patches로 해놓고 지우겠습니다.
*Parts나 Polygon을 지워야 할 경우 Level에서 설정해 주세요.
After Hidden Removal [ Triangles: 414,968 ]
Triangle수가 조금 더 줄어들고, Hidden Removal하기 전의 이미지와 비교해 보면 없어진 부품들을 확인하실 수 있을겁니다.
Decimate
Decimate은 Vertices을 없애면서 Polygon 숫자를 줄여주는 작업입니다. Preset을 보시면 Strong / Medium / Low로 나뉘어져 있습니다. Strong은 더 많은 숫자의 Polygon을 줄여주고, Low는 좀 더 적은 숫자의 Polygon숫자를 줄여 줍니다. Strong을 선택했을경우 모양이 망가질수 있기에 적절한 Preset을 선택해서 사용해 주세요. 저는 Low에 Set 해놓고 일단 Execute해보겠습니다.
*.stl 파일은 Normal이 생성되어 있지 않기 때문에, [Mesh] -> [Create Normal] -> [Execute] 해서 Normal을 생성해 주셔야 Decimate이 가능합니다.
After Decimate [ Triangles : 66,287 ]
오른쪽 Modifier 창에서 DecimateModifier을 누른다음에 NormalTolerance를 15로 증가 시켜서
다시 Apply해보았습니다. 여러 숫자를 Test해서 최적화 해보세요.
*숫자 변경 후 다른 곳을 한번 눌러야 Apply 버튼을 확인/클릭 하실 수 있습니다.
Repair Mesh
마지막으로 Repair Mesh를 한번 해주겠습니다. 혹시 Mesh가 끊어졌거나 면이 뒤집혀졌을때에도 Repair Mesh를 한번 눌러 Mesh를 점검해 주세요. *면이 뒤집혔을 경우 핫핑크로 보여집니다.
Repair Mesh: [Mesh] -> [Repair Mesh] -> [Execute]
After Decimate [ Triangles : 65, 608 ]
Material
PiXYZ에서는 CAD에서 작업한 Color Id 값을 가지고 있습니다. 재질을 입히는것은 Unity에서 하시는것이 좋으나, 원하신다면 PiXYZ에서 입혀보실 수 있습니다. 오른쪽 Properties창에서 [No Material] click, 위쪽 Tool Bar (Ribbon)에 보시면 Material아이콘을 클릭 또는 [Materials] -> [Material Library] 에서 Material을 지정하실 수 있습니다.
Merge Parts by Material
색을 입힌 뒤 같은 색 (material)끼리 하나의 Parts로 만들어 보겠습니다. [Scene] -> [Merge Parts by Material]
76개 였던 Parts들이 6개로 줄어드는걸 보실 수 있습니다. Occurrence 한 개당 batch의 수가 늘어나기 때문에 줄여주는것이 매우 중요합니다. *batch가 늘어나면 Rendering 을 계산하는 시간이 늘어납니다.
Run Generic Process
지금까지 하나 하나씩 최적화를 해보았는데, 이 모든걸 Run Generic Process 버튼으로 한번에 하실 수도 있습니다. [Scenario] -> [Run Generic Process] 이 버튼을 클릭하시면 Modifiers창에 모든 Process들을 보실 수 있습니다. 하나씩 클릭하셔서 수치 값을 바꾸실 수 있으니 Test 해보세요.
* 만약 원치 않은 Step이 들어가 있다면, 지우고 Apply를 하게 되면 그 Step은 뺄 수 있습니다.
Script
PiXYZ는 Python을 기본으로 하고 있습니다. Modifiers 창 아래쪽에 보면 Generate script라는 버튼을 보실 수 있습니다. STUDIO에서 실행했던 모든 Process를 스크립트에 저장해 다른 모델에도 똑같이 적용하실 수 있습니다.
Note:
만약 Sample Scripts를 확인해 보고 싶으시다면, [ Help -> Open Sample Scripts Directory ]를 체크해 보세요.
참고하거나, 유용하게 쓰일 수 있는 Script들을 보실 수 있습니다.
FBX Export
PiXYZ에서 Export할때 여러가지 Format(*.fbx,*3dml으로 뽑아 내실 수 있습니다. FBX로 뽑으실 때에는 버전이 Default로 2017로 지정 되어 있어 혹시나 그 전 버전이 필요 하실 경우 [Preference] -> [IO] -> [Export]-> [FBXVersion]에서 변경하시거나 Script로 작성 하신 다음에 Export하시면 됩니다.
Automation Batch | IO
*이 프로세스를 하시기 위해서는 IO 토큰이 필요합니다.
[Help] -> [License Manger] -> [Tokens Management] 가서 IO 토큰이 있나 확인해 보세요.
PiXYZ는 Python 스크립트를 사용해 파이프라인 시나리오를 구축해 자동으로 Batch를 실행 할 수 있습니다. 일단 이해를 돕기 위해 바로 보여드리겠습니다. 제 컴퓨터 D: 드라이브에 Demo라는 폴더 생성 후 이 안에 input / output 폴더를 생성해 주겠습니다. 그리고 input에 Sample-PiXYZ-DEMO-BRAKES-v2017에 있는 Parts들을 모두 넣어 보겠습니다.
그리고 미리 만들어둔 Python Script를 PiXYZ Script에 Copy/ Paste 해서 Execute(ctrl+e) 하겠습니다.
Python Script Download : sample_script.py
* 스크립트를 확인해 보시고 경로가 다르시다면 수정해서 사용하세요.
그리고 output 폴더를 확인해 보시면 스크립트로 최적화 되어 나온 Parts들을 확인하실 수 있습니다.
PiXYZ-DEMO-BRAKES.fbx 파일을 열어 확인해 보세요.
'Unity > PiXYZ' 카테고리의 다른 글
[DEMO] PiXYZ Plug-in Residence Demo (2) | 2019.01.02 |
---|