elsa in mac

[3D 프린터 출력기] Hellboy, 파트1 - 모델 분석 & Slicer 선택 본문

3D 프린터/3D 프린팅 갤러리

[3D 프린터 출력기] Hellboy, 파트1 - 모델 분석 & Slicer 선택

elsa in mac 2019. 9. 16. 06:54

이번 포스트를 시작으로 몇 차례에 걸처 Printed Obeession의 Hellboy 모델 (MyMiniFactory) 출력과 관련된 글을 써 볼까합니다. 
무료로 얻을 수 있는 굉장히 멋진 모델 중 하나이지만, FDM 3D프린터로 이 녀석을 멋지게 출력하려면 이것저것 좀 생각을 해 봐야 할 것들이 있습니다. 모델은 높이 기준으로 235mm 정도의 크기 이지만, 제가 보유한 프린터의 출력사이즈를 고려하여 140mm 정도의 크기로 출력을 할 예정입니다. 결론적으로 대략 출력 예상시간이 20시간 정도 되기 때문에, 실제 출력은 이번주 주말에 시작을 하게 될 것입니다. 

프롤로그..  
3D프린터.. 일반적으로 가장 많은 사용자 층을 가지고 있는 FDM 방식의 3D프린터에서 위와 같은 복잡한 구조의 3D 모델을 출력하기란 생각보다 쉽지 않습니다. 

흔히 3D프린터에 입문을 하게 되면, 대부분 거의 90%는 3D프린터의 성능과 출력품질을 보강하기 위한 3D프린터 파트 업그레이드 모델을 출력하는 것으로 시작하게 됩니다. 물론, 이러한 업그레이드 자체가 쉽지도 않고, 또 매번 성능향상을 얻을 수도 없기 때문에, 최초 예상과는 달리 언제 끝날지 모를 업그레이드 무한반복에 빠져 시간과 돈과 좌절을 맛보다가 그냥 포기하는 분들도 정말 많이 보아왔습니다.  

일반 취미로 사용하는 3D 프린터는 얼핏 보기엔 매우 단순한 구조를 갖습니다. 반면 출력 품질에 영향을 미치는 요소들은 너무너무 많아서 실제 입문을 하고 보면, 만만한 것이 하나도 없을 지경이지요. 4차 혁명의 아이템으로 매번 거론되지만(물론 산업용 3D 프린터를 지칭하는 것이지만.. ^^) 그 관심만큼 실제 사용하거나 3D프린터를 활용하는 분들이 많지 않은 이유이기도 합니다. 

성공적이고 근사한 출력품질을 얻기 위해서는 3D프린터의 내구성, 정밀도, 좋은 품질의 필라멘트, 적절한 운영환경 등이 우선 고려되어야 하며, 다양한 모델에 대한 출력 경험과 그로부터 비롯된 노하우도 필요 합니다. 아울러 출력하고자 하는 3D모델에 대한 분석과 그에 걸맞는 슬라이스 준비 또한 빼 놓을 수 없지요.  XYZ 큐브를 출력하기 위해 고려해야할 프린트 및 Slicer 설정과 Figure를 출력하기 위한 설정이 같을 수는 없습니다.

앞으로도 많이 올리겠지만, 3D 프린팅 출력기 포스트에서는 출력품질을 높이기 위한 3D프린터 자체의 튜닝(속도, 가속도, Jerk, 벨트 텐션, 마이크로 스테핑, 압출, Z와블 등등.)에 3D프린터 자체와 관련된 부분은 꼭 필요한 경우를 제외하고는 가급적 다루지 않을 예정입니다. 이유는 이러한 3D프린터의 자체특성은 객관적인 일반화된 정답이 존재할 수 없는 부분들이기 때문입니다. ^^  

슬라이서(Slicer)의 선택
3D 프린터 유저들이 사용하는 슬라이서는 십중팔구 Cura, PrusaSlicer(Slic3r), Simplify3D 이 3중 하나 입니다. 물론, 이 외에도 많은 Slicer들이 존재하지만 대체적으로 이 3을 사용합니다. 그 중에서도 Simplify3D는 유료 소프트웨어인 만큼 Open Source인 Cura, 혹은 PrusaSlicer(Slic3r) 둘 중의 하나를 많이 사용하시죠.

어떤 슬라이서를 사용하는 것이 가장 좋은가 ? 라는 질문에 정답은 없습니다.
그것은 각 Slicer에 대한 이해와 숙련도에 따라 다른 Slicer를 사용하는 것 보다 훨씬 좋은 결과를 얻을 수 있기 때문입니다. 분명한 것은 그 어떤 슬라이서도 우월적인 탁월한 만능은 아니라는 점입니다.  

따라서, 3D모델의 Slicer를 선택할 때도 각 Slicer에서의 개별 검토를 통해 비교해 봐야 하는데, 결론적으로 이번 Hellboy 출력에는 PrusaSlicer를 사용할 것입니다.  그 이유 중 주요한 몇 가지를 이번 포스트에서 좀 알아보도록 하죠. 

서포트(Support)
일반적으로 서포트 지원은 S3D(Simplify3D)가 가장 뛰어납니다. 특히나 Manual Support 기능은 너무 쉽고 간단하며 Support를 제 1 순위로 고려한다면 S3D를 따라올 Slicer는 없습니다. 

Simplify3D 4,1의 Support 자동 생성의 결과 

S3D로 생성한 Support는 매우 무난해 보입니다. 하지만, 이렇게 Slicing을 해서 실제 잘 출력될지는 여전히 미지수 입니다. 이유는 간단합니다. 이 모델을 출력해 본 경험이 없기 때문입니다. ^^ 

모델 위 Support 품질 문제  
우선 출력품질 측면에서, Support가 Bed가 아닌 출력된 부분 위에 놓여야 하는 경우, 출력물의 표면 품질을 저하 시킬 수 있습니다. 이와 관련된 부분을 표시해 보면 아래와 같습니다. 

여기서 두 가지를 생각해 볼 수 있는데, 어차피 후가공이나 페인팅등 후처리를 하는 경우라면 서포트가 모델 위에 적층되어 나중에 서포트를 제거하고 난 후의 잔존하는 표면 품질이 문제가 되지 않을 수 있습니다. 반대로 프린팅된 결과가 그대로 최종 품질이라면 문제가 될 수 있습니다. 

서프트는 그 위에 3D모델 파트가 적층될 때까지 온전히 잘 유지되어야 하기 때문에 어쩔 수 없이 하단을 기 출력된 3D모델의 표면에 붙여 고정해야 합니다. 1 레이어 정도의 이격을 주기도 하지만 그것은 경우에 따라서, 중간에 서포트가 무너져 내리거나 자리를 이탈하는 문제가 발생하여 서포트로써의 기능을 상실하게 될 수 있습니다. "경우에 따라서"라는 단서를 단 이유는 인접한 서포트가 Bed로 부터 시작해서 올라온 경우에는 그나마 이런 문제를 벗어날 수 있기 때문입니다. 그럼에도 매끄러운 표면품질을 얻으려면 모델 위에 서포트를 세우는 것은 적절한 대응법은 아닙니다. 

Tree 서포트 
모델 위 서포트 품질문제를 그 나마 개선하려면. Bed면을 기준으로 서포트를 세울 수 밖에 없는데, 가장 효과적인 방법은 Tree 서포트를 세우는 것 입니다. Tree 서포트를 만드는 일반적인 방법은 Autodesk사의 무료 S/W인 Meshmixer를 사용하는 것입니다. 

MeshMixer를 이용하여 Tree Support를 생성한 모습

서포트가 필요한 부분에 대해 거의 90% 이상을 Bed면을 기반으로 생성한 것을 확인할 수 있습니다. 나머지 10% 정도는 여전히 모델의 표면 위에 생성을 합니다. 

트리 서포트를 생성한 모델을 STL로 저장하고 다시 Slicer에 불러와서 분석을 해 보면,  Tree 서포트의 밑부분이  마치 3D모델의 일부분인 것 처럼 표면에 딱 붙여 있는 것을 확인할 수 있습니다. 이것은 트리 서포트가 하나의 점에서 원뿔 모양으로 뻗어 올라가는 형상인 관계로 모델 표면에 완전히 붙여야 하기 때문입니다. 트리 서포트를 출력하는 과정은 매우 튼튼하지만, 나중에 떼고 나면 자국이 남게 됩니다. 

물론, 이 꼭지점의 반지름은 트리 서포트 생성 옵션을 조정하여 크기를 조절할 수 있지만, 너무 작게 하면 견고하게 적층할 수 없을 수도 있기 때문에 무한정 작게 설정할 수는 없습니다. 

두 번째 문제는 트리 서포트 자체가 Overhang을 포함하고 있을 수 있다는 점 입니다. 

이 가늘고 긴 서포트를 FDM 3D프린터에서 출력하기란 거의 불가능 합니다. 물론, 위의 스샷에서 오른쪽과 같이 수동으로 트리 서포트를 보강할 수도 있고, 트리 서포트 자체의 굵기를 더 두껍게 할 수도 있지만, 유저가 원하는 적절한 트리 서포트 결과를 얻기란 그리 쉬운 문제가 아닙니다. 이와 같은 문제는 여러 곳에서 찾을 수 있습니다.

Cura - Tree Support 
Meshmixer의 Tree Support가 Overhang에 대응하는 매우 유용한 솔루션이긴 하지만, 이것은 3D모델의 형태나 복잡도에 따라 달라집니다. 완전히 몹쓸 것은 아니라는 것입니다. 하지만, 출력할 Hellboy 모델에는 적절해 보이지 않습니다. 하지만, 나중에 사용하긴 할 것입니다. ^^

Meshmixer와는 달리 Cura가 지원하기 시작한 Tree Support는 몇 가지 장점이 있습니다. 아래는 Cura에서 생성한 Tree Suport의 예 입니다. 

Cura 4.3.0 Beta에서 생성한 Tree support

Cura의 트리 서포트는 Meshmixer의 그것과 달리 산처럼 생성해 줍니다. 봉오리만 뾰족뾰족 올라온 형상이지요. 이와 같은 방식은 앞서 살펴본 트리 서포트 자체가 얇아서 발생할 수 있는 출력 문제와 서포트 자체의 overhang 문제를 해결할 수 있어 보입니다. 물론 반대급부적으로 출력에 걸리는 시간은 매우 길어지게 될 것입니다. 전체적으로는 꽤 휼륭합니다. 

하지만, Cura를 사용할 경우 몇 가지 문제점이 있습니다. 첫번째로 Slicing 처리 시간이 매우 오래 걸려서 파라미터 수정 시마다 한참을 기다려야 한다는 점 입니다. 두 번째는 트리 서포트가 커버하지 못하는 Overhang 부분에 Support를 추가할 수 없다는 점 입니다.

어쩔...

세번째는 생성된 모델의 일부분을 검증하기 위한 모델의 Split 을 지원하지 않는다는 점 입니다. 서포트를 생성하긴 했지만, 실제 심각하게 고려해 볼 부분은 직접 출력을 해서 확인을 해 봐야 합니다. 그러기에 Cura는 좀 부족 합니다.

PrusaSlicer - support
이번엔 PrusaSlicer의 서포트 자동 생성 결과를 좀 봅니다.

PrusaSlicer의 Support는 매우 이론적이고 이상적으로 생성한다는데 문제가 있습니다. 실제 출력을 하기 힘들 수준의 디테일한 서포트를 생성합니다. 그리고, 서포트가 필요하지 않는 부분에까지 서포트를 만드는 버그도 있습니다. 자동생성기능의 성능으로만 따져 보면 3 종류의 Slicer에서 가장 낮은 점수를 줘도 될 정도 입니다.

대신, 사용자가 원하는 영역에 대해서만 서포트를 만들어주는 Support Enforcer 와 사용자가 원하지 않는 부분에 Support가 생성되는 것을  방지해 주는 Support Blocker 기능을 가지고 있습니다. 이게 매우 강력한 힘을 발휘합니다. 

좌로부터) support enforcer(녹색 박스), slice 결과, supprt blocker(붉은색 박스)를 추가한 경우

자동 생성기능은 좀 엉성하지만, 사용자가 직접 특정영역에 서포트를 만들거나 금지할 수 있는 기능을 넣어 놓았다는 점은 신의 한 수 입니다.  이런 기능을 이용하여 사용자가 원하는 영역에만 Support를 만들 수 있습니다 만, 아직 UI 제어 측면이 부실해 실제 사용할 때 좀 번거롭다는 단점이 있습니다.  

이 기능은 아직 최적화가 끝나지 않아서 서포트가 사용자가 지정한 영역/크기 등과 정확히 일치하지 않는 불편함도 있습니다. 따라서, 실제 Slicing 결과를 보면서 부가적인 수정 작업들을 해줘야 합니다. 

전체적으로 봤을 때, 조금 불편해도 서포터를 원하는 위치에 세우는 데 있어서는 PrusaSlicer가 탁월합니다. 하지만, 역시 모델 표면 위에 Support를 생성하는 문제는 동일합니다. 다만 나중에 이 문제를 회피 할 방법을 적용할 것입니다. 

Overhang
자 이제 Overhang 문제를 좀 살펴봐야 합니다.
Hellboy의 가장 큰 문제 중 하나는 바로 적층과정에서 모델의 일부분이 끊어졌다가 다시 이어지는 Island(아일랜드:섬) 가 존재한다는 것입니다. Island라는 표현은 일반적인 용어는 아니며, 제가 혼자 나름데로 붙인 용어 입니다. ^^

구체적으로 살펴 볼까요 ?
Helloby 모델은 아래 보는 바와 같이 적층을 하면서 접하게되는 Island 영역이 3부분 존재 합니다. 

다리 부분은 충분히 두텁고, Bed에 붙어 있기 때문에 끊어진 상태에서 몸체와 다리가 이어지는 과정이 문제를 일으키지 않습니다.

하지만, 양팔 부분은 허공에 떠 있는 부분이고 분리된 상태로 적층되다가 몸통과 합쳐지게 됩니다. 
당연히 이 부분은 Support가 떠 받히게 되는데, 서포트는 나중에 분리를 쉽게 하기 위해 1 layer정도를 띄운다는 점을 상기할 필요가 있습니다. Support 분리의 용이성을 위해 1 layer를 띄우는 설정으로 출력을 할 경우 출력 중간에 Island 부분이 흔들이거나 심하면 Support와 떨어질 수도 있습니다. 그럼 출력이 실패하게 됩니다. 반대로 support와 island부분을 완전히 붙이게 되면 Support 제거가 힘들어 질 수 있습니다.  

사실 Figure 3D 모델에서 이러한 Island 문제는 거의 상존한다고 봐도 무관할 정도로 흔한 문제 입니다. 이 문제를 잘 해결할 수 있다면 많은 모델을 출력할 때 유용할 수 있습니다. 

이번 포스트에서는 문제만 확인하고 이 문제를 해결하기 위한 방법은 다음 포스트에서 자세히 살펴 볼 것입니다. 

Partial Infill
Hellboy 3D 모델은 특별히 Infill을 사용할 모델은 아닙니다. Infill을 사용하는 1차적인 목적은 Top 영역의 출력을 보장하기 위한 것인데, 대부분 Top 영역이 곡선으로 이뤄져 있을 뿐, 평면형태가 없기 때문입니다. 다만, 모델의 오른쪽 발의 딛고 있는 땅 부분은 비교적 Top부분이 평면이기 때문에 이 부분에서 만큼은 Infill이 필요 합니다. 

PrusaSlicer의 경우 이렇게 툭정 영역에 한정된 속성을 변경하는데 매우 효과적인 대응을 할 수 있는 Slicer 입니다. 물론 Cura나 S3D의 경우에도 모델의 특정영역에 대한 설정을 가변할 수 있는 기능이 존재하지만, 그것은 Layer 기준으로 특정 영역에 대한 속성 변경 능력은 PrusaSlicer가 여타 다른 Slicer보다 탁월합니다. 구체적으로 Modifier를 사용하면 되는데, 아래와 같이 속성을 바꾸고 싶은 영역을 블록으로 설정한 후, 해당 블럭에 대한 Infill 속성을 변경해 주면 됩니다.  

PrusaSlicer의 Modifier를 이용한 특정 영역의 Infill 속성을 변경하는 모습

전체 모델은 Infill 0% 이지만, 아래와 같이 오른발의 바닥 부분만 Modifier로 Infill - Grid - 25%를 지정하여 Top 부분이 잘 출력되도록 해 줄 수 있습니다. 

위의 Slicing 결과를 보면, Modifier 지정부분만 Infill이 체워지고 나머지 부분은 infill이 0%인 것을 확인할 수 있습니다. 

Hellboy 모델을 분석해 보면, 이렇게 Infill을 체워야 하는 부분은 대략 3군데 정도가 있습니다. 

발 부분은 앞서 살펴본 바와같이 Top 영역의 출력품질을 보장하기 위한 것이고, 왼쪽팔과 꼬리부분은 너무 가늘고 얅은 부분이기 때문입니다. 결과적으로는 필요 없을 수도 있지만, Support 제거 과정에서 힘을 받을 경우 이 얇은 부분이 끊어질 수도 있습니다. 

지 이정도로 해서 Hellboy를 출력하기 위한 분석과 Slicer 선정과 관련된 고려사항 몇 가지를 간략히 검토해 봤습니다. 
앞서 말씀드렸듯이, Slicer의 선택은 Slicer의 성능과 다양한 옵션제공 여부 자체만으로 결정되는 것은 아닙니다. 모든 Slicer들은 나름 장/단점을 가지고 있고 대부분의 경우 잘 동작합니다. 다만, 출력할 모델의 고려되어야 할 요소에 따라서는 특정 Slicer가 유리할 수 있다는 점은 분명합니다.   

다음 포스트에서는 PrusaSlicer를 이용하여 Hellboy 모델을 실제 출력하기 위한 서포터 및 보강 작업에 대해 알아보도록 하겠습니다. 

공유하기 링크
Comments