#아드리

[DEMO] From CAD to Unity_ PiXYZ! 본문

Unity /PiXYZ

[DEMO] From CAD to Unity_ PiXYZ!

아두리두리 2018. 8. 28. 14:19


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에서 사용할 수 있게 해보겠습니다. 




7days Trial 다운받기

PiXYZ 에서 불러들일 수 있는 Format 

예시로 사용된 CAD file 다운받기: [SAMPLE]-PiXYZ-DEMO-BRAKES-v2017

Getting Started!



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
Comments