#아드리

[DEMO] From CAD to Unity_ PiXYZ! 본문

Unity /PiXYZ

[DEMO] From CAD to Unity_ PiXYZ!

Unity Evangelist Adri 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
[DEMO] From CAD to Unity_ PiXYZ!  (5) 2018.08.28
5 Comments
  • 프로필사진 헤니 2019.01.11 18:23 잘 보고 갑니다 :)
  • 프로필사진 VR 2019.03.07 17:08 안녕하세요 좋은 내용 보고 갑니다.
    궁금한점이 있는데
    Pixyz 툴은 Undo, Redo 가 없나요??
    지금 Trial 버전으로 테스트해보고 있는데, 잘못했을 때 다시 돌리기를 못찾겠네요;;

    그리고 글중에서
    *.stl 파일은 Normal이 생성되어 있지 않기 때문에, [Mesh] -> [Create Normal] -> [Execute] 해서 Normal을 생성해 주셔야 Decimate이 가능합니다.
    가 있는데, normal 이 생성되어 있는지? 아닌지는 어떻게 판단할 수가 있나요??
  • 프로필사진 Unity Evangelist Adri 2019.03.14 11:18 신고 안녕하세요?

    1)네, 안탑깝게도 아직까지는 undo, redo 기능은 없습니다. 비슷하게 Modifier 에서 했던 기능을 지우고 apply하시면 undo 비슷하게 되긴 합니다만, Merge를 하거나 Hierarchy를 건드리면 Modifier에서도 바꿀 수가 없습니다. 2) Normal이 생성되지 않으면 Mesh 자체가 생성 되지 않을 것 입니다.

    더 궁금한게 있으신경우 adrianar@unity3d.com으로 연락주세요!
  • 프로필사진 이은성 2020.05.28 18:01 안녕하세요 궁금한 점이 있어 문의드립니다.
    Teckla를 통해 모델링을 IFC파일로 EXPORT 하였는데 IFC파일을 PiXYZ로 호환해서 3D 프린팅을 할 수 있나요?
    PiXYZ 플러그인 평가판을 다운받았는데 열리질 않는데 열려면 또 다른 프로그램이 필요한가요?
  • 프로필사진 SHIN 2020.09.23 14:09 안녕하세요.
    혹시 예제 파일을 받으라고 주신 링크로 들어가면 예제 파일이 나오지 않는데,
    이는 오래 되어서 좀 바뀐건가요?
    그렇다면 예제파일 공유좀 부탁드려도 될까요?
댓글쓰기 폼