1. 서 론
최근 3차원 프린터에 대한 관심이 높아지면서, 일반 사용자를 위한 다양한 3차원 프린터가 출시되고 있다. 각각의 3차원 프린터는 출력할 수 있는 정해진 공간의 크기가 있다. 일반적으로 2차원 종이 프린터가 A4 용지까지 출력되는 데스크탑형, A3 용지까지 출력되는 사무용, 포스터가 출력되는 전문 출력소용 플로터 등으로 구분되듯이, 3차원 프린터도 이와 유사하게 제품을 구분하고 있다. 세계 최대 3차원 프린터 제조사 중 하나인 3D Systems[1]의 경우, 3D 프린터를 프린팅 재료, 출력 방식 등에 따라 데스크탑, 프로페셔널, 프러덕션으로 구분하고 있다. 데스크탑과 프로페셔널 모델의 경우 대체로 수 센티미터에서 약 30 센티미터 정도의 프린팅 공간을 가지고 있으며, 프러덕션 모델은 약 1미터 정도의 큰 물체도 한번에 프린팅 가능하다. 하지만, 대부분의 보급형 3차원 프린터는 대부분 30 센티미터를 넘지 않는 프린팅 볼륨을 가지고 있어서 출력할 객체의 크기에 제한을 받는다. 따라서, 3차원 프린터의 활용도를 높이고, 3차원 프린팅 기술을 다양한 응용분야에 적용하기 위해서는 3차원 프린터가 지원하는 출력 공간의 크기보다 큰 물체를 출력할 필요가 있다. 일반 사용자가 산업용 3차원 프린터를 구비하는 데는 비용과 공간면에서 많은 어려움이 있기 때문에 크기가 큰 3차원 물체를 3차원 프린터로 출력하기 위해서 소프트웨어를 이용하여 메쉬를 분할하고, 출력한 후에 결합하는 방법을 생각해 볼 수 있다. 이를 위해, 3차원 메쉬를 작은 부분으로 나누어 프린팅이 가능한 3차원 메쉬로 만들고, 출력한 조각 메쉬를 조립할 수 있는 구조를 생성하는 과정을 거쳐야 한다. 이와 같은 과정을 일반적인 3차원 컴퓨터 그래픽스 소프트웨어를 통해 수행할 수 있지만, 사용법을 익히기 어려울 뿐만 아니라, 프린팅 객체를 만들기 위한 전용 기능이 없기 때문에 수작업이 많아지는 단점이 있다. 또한, 3차원 프린터의 출력 공간에 포함되는지 검증할 수 없기 때문에 이러한 검증은 별도의 소프트웨어가 필요하다.
본 논문에서는 3차원 프린터가 지원하는 출력 범위보다 큰 물체를 3차원 프린팅하기 위해서 3차원 메쉬를 3차원 프린터의 출력 범위에 들어갈 수 있도록 절단하여 체결부를 추가하는 절차를 3차원 그래픽스에 대한 전문 디자이너가 아니더라도 쉽게 할 수 있는 3차원 편집 시스템을 제안한다. 제안한 시스템은 평면 기반으로 3차원 모델을 분할하고, 분할한 면에 사용자가 여러 가지 형태의 체결부를 추가할 수 있다. 또한, 3차원 출력이 가능한 형태의 3차원 모델을 입력으로 하고, 사용자가 편집 후에도 바로 3차원 출력이 가능하다.
본 논문의 구성은 다음과 같다. 2장에서 본 논문에서 제안한 편집 시스템과 관련된 선행 연구들을 소개한다. 3장에서 제안한 편집 시스템에 대해 서술한다. 4장에서 실험 결과와 실제 출력한 결과물을 제시하고, 마지막 5장에서 결론을 맺는다.
2. 관련 연구
3차원 프린팅에서는 기존의 상용 컴퓨터 그래픽스 소프트웨어에서 지원하는 3차원 메쉬 편집 기능 외에 3차원 프린팅에서 요구되는 특화된 기능이 필요하다. 예를 들어, 3D 프린팅 재료의 특성을 고려한 사전 내구성 검증, 3차원 프린팅 출력시 원하는 형태로 서 있게 하기 위한 모델의 균형 향상, 재료 절감을 위한 3D 모델의 내부공간 생성, 3D 프린터의 출력 가능한 크기보다 큰 물체를 프린트하기 위한 3D 모델의 분할 및 체결부 생성, 제조된 실물에 운동성을 부여하기 위한 구조생성 등의 기능이 요구된다[2]. 최근들어 3차원 프린팅 기술의 관심이 높아지면서, 3차원 프린터의 활용성을 높이기 위한 여러 가지 연구들이 진행되고 있고, 그중에 하나로 3차원 프린터의 출력 공간보다 큰 물체를 출력하기 위한 연구들이 진행되고 있다. 본 장에서는 제안한 인터랙티브 3차원 메쉬 편집 시스템과 관련된 선행연구에 대해 서술한다.
3차원 프린팅을 위해 메쉬를 분할할 때는 출력한 조각 메쉬들을 조립할 수 있도록 체결부 생성을 고려하여 분할해야 한다. Li 등은 메쉬의 뼈대 구조(skeleton)에 대해 수직인 스윕 평면(sweep plane)을 이용하여 토폴로지 변화를 감지하여 3차원 메쉬를 여러 단위로 분할함으로써 충돌검사(collision detection) 등에 적용할 수 있음을 보였다[3]. 하지만 주로 스켈레톤이 여러 방향으로 분기하는 부분에서 분할되기 때문에 단면적이 좁은 부분에서 분할되는 단점이 있다. 최근에는 3차원 프린팅을 고려한 메쉬 분할 기술이 연구되었다. Luo 등은 프린팅 가능성, 조립 가능성, 조각 메쉬 체결부 생성 가능성, 미적 감각 등을 고려하여 3차원 메쉬를 자동 분할하고 체결부를 생성하는 방법을 제안하였으나, 계산 시간이 많이 걸리는 단점이 있다[4]. Song 등은 3차원 메쉬를 복셀화(voxelization)하여 각 복셀의 연결성 분석을 통해 별도의 체결부없이 맞물림(interlocking) 형식으로 조립할 수 있도록 3차원 메쉬를 분할하는 알고리즘을 제안하였으나, 외형을 변형(deform)하는 단점이 있다[5].
한편, 가구와 같이 각각의 파트를 조립하여 생산하는 물품을 실제와 같이 조립할 수 있도록 3차원 모델을 분할하는 방법에 대한 연구가 수행되었다. Lau 등은 캐비넷, 테이블 등의 가구에 대한 형식적인 문법을 정의한 뒤, 3차원 모델 분석을 통해 메쉬를 파트별로 분할하고, 못, 나사 등의 연결 장치를 생성하는 방법을 제안하였고[6], Fu 등은 별도의 연결 장치를 사용하지 않고, 맞물림(interlocking) 형식으로 조립할 수 있도록 3차원 메쉬를 분할하고 조인트를 생성하는 방법을 제안하였다[7].
3차원 프린터는 배치(batch) 출력이 불가능하기 때문에 분할한 조각 메쉬를 한꺼번에 출력하기 위한 패킹(packing) 방법도 같이 고려할 필요가 있다. Chen 등이 제안한 Dapper는 3D 메쉬가 효과적으로 패킹되기 위한 작은 개수의 조각 메쉬로 분할하는 최적화 알고리즘으로, 분말 방식 및 FDM(Fused Deposition Modeling) 방식의 3D 프린터에 적용할 수 있다[8]. 한편, Yao 등은 분할되는 부분의 하중과 결합 부위 최소화, 패킹되는 부피의 최소화 등을 고려하여 메쉬를 분할하는 레벨셋(Level-Set)에 기반한 알고리즘을 제안했다[9].
유사한 연구로, 게임 분야에서는 3차원 메쉬에 전처리를 통해 조립부를 설정하고, 충돌 검사, 물리 구조를 활용하여 조립하는 3차원 퍼즐형 게임 제작 기법에 대한 연구가 진행되었다[10].
이와 같은 3차원 메쉬 분할 및 체결부 생성 연구들은 입력 3차원 메쉬가 3차원 프린팅이 가능한 2-manifold 구조를 가지고 있다고 가정하고 있으며, 분할한 3차원 메쉬 역시 프린팅 가능한 구조를 가질 수 있도록 한다. 본 논문에서 제안한 3차원 메쉬 편집 시스템에서도 같은 가정을 하고 있으며, 분할한 3차원 메쉬 역시 3차원 출력 가능한 형태이다. 일반적으로 3차원 프린팅 분야에서 3차원 메쉬의 출력 가능성은 Materialize사의 Magics[11], Autodesk사의 Netfabb[12]과 같은 전문 소프트웨어를 통해 검증 및 보정을 수행한다.
3. 인터랙티브 3차원 메쉬 편집
본 장에서는 제안한 인터랙티브 3차원 메쉬 편집 시스템의 메쉬 분할과 체결부 생성에 대해 서술한다.
2.1 메쉬 분할
제안한 시스템은 사용자의 라인 입력을 3차원 평면으로 인식하여, 3차원 평면 기반으로 메쉬를 분할한다. 직교투영(Orthographic) 렌더링을 통해 화면에 표시된 모델 위에 사용자는 분할할 위치에 선분을 표시한다. Fig. 1에 나타낸 것과 같이 선분 을 이용하여 3차원 평면의 법선 벡터 을 식 (1)과 같이 계산한다.
Fig. 1.3D plane normal vector from user’s line drawing.
여기서 R은 카메라 좌표계를 월드 좌표계로 변환하는 회전 행렬로, 카메라 좌표계의 방향 벡터를 월드 좌표계의 방향 벡터로 변환한다. 식 (1)의 는 사용자가 표시한 분할 선분의 방향 벡터이고, 은 렌더링용 카메라의 시선 반대 방향을 나타낸다. 분할 평면의 방정식은 법선 벡터 과 평면위의 임의의 한 점으로 계산할 수 있다. 제안한 시스템에서는 OpenGL[13]로 렌더링한 깊이버퍼에서 사용자가 지정한 선분의 중점에서의 깊이값을 가져와서 3차원 평면 방정식을 계산하기 위한 점으로 사용한다.
3차원 메쉬 M의 모든 면(face)은 절단 평면을 기준으로 M+, M-로 분할한다. 이때, M+ = {△v0v1v2 | f(v0) ≥ 0, f(v1) ≥ f(v2) ≥ f(v0) + f(v1) + f(v2) > 0}, M- = {△v0v1v2 | f(v0) ≤ 0, f(v1) ≤ f(v2) ≤ f(v0) + f(v1) + f(v2) < 0},이고, f(x,y,z) = n1x + n2y + n3z + a, (a는 상수)이다. 면의 세 정점 중 일부의 f값이 서로 다른 부호이면, Fig. 2와 같이 절단 평면과 면이 서로 교차하는 경우를 나타낸다. 이런 경우에는 Fig. 2와 같이 교차점을 이용하여 M+ 또는 M-에 속하도록 면을 분할한다.
Fig. 2.The configuration of intersecting cutting plane and triangle: (a), (c) intersecting at two edges and (b) intersecting at one edge and one vertex of the triangle.
이와 같이 절단한 M+, M-는 분할 단면에 메쉬가 생성되지 않은 상태이다. Fig. 2와 같이 평면과 면이 만나는 교차점들을 이용하여 윤곽선(contour)를 형성하고, 윤곽선 내부를 삼각화(triangulation)하여 2-manifold를 유지할 수 있도록 한다. Fig. 3은 사용자가 표시한 분할선과 분할을 실시한 예를 나타낸다.
Fig. 3.Cut example: (a) User-specified cutting lines on dog model and (b) partitioned part models.
2.2 체결부 생성
평면으로 분할된 절단면에 여러 가지 형태의 체결부를 추가할 수 있다. 제안한 편집 시스템에서는 직사각형, 원기둥, 육각뿔 등의 프리미티브 도형을 체결부로 사용할 수 있도록 정의하였다. 뿐만 아니라, 절단면의 윤곽선을 이용하여 맞물림 형태로 체결할 수도 있다. 사용자는 프리미티브 체결부가 들어갈 위치를 선택하고, 각각의 체결부는 가로, 세로, 깊이 등의 파라미터를 설정할 수 있다. 또한, 프리미티브 도형 체결부는 음각/양각, 음각/음각 형태로 생성할 있다. 이와 같은 체결부 생성은 불리언(boolean) 연산([14], [15])을 사용하여 분할 단면에 수직으로 생성한다. Fig. 4에서는 여러 가지 체결부를 적용한 결과를 보인다. 여러 가지 체결부를 한 개의 단면에 섞어 사용할 수 있기 때문에 체결 위치가 혼돈되는 것을 막을 수 있고, 결속력을 높힐 수 있다. 특히, Fig. 4 (b)와 같이 윤곽선을 이용하여 맞물림 형식의 체결부에 프리미티브 도형 형식의 체결부를 생성하여 결속력을 더욱 높힐 수 있다.
Fig. 4.Various connectors: (a)the result of generating connectors to Fig. 3(b) and (b)several connectors can be mixed. It shows the 3rd and 4th part of (a).
4. 실험 결과 및 고찰
본 장에서는 제안한 편집 시스템을 이용하여 분할한 결과에 대해 서술한다. 실제 3D 프린터로 출력할 때는 프린팅 재료의 물성에 따라 출력물이 팽창, 수축하는 정도가 다르기 때문에 이를 고려하여, 음각(intaglio)/양각(relievo) 형태와 맞물림 체결부를 생성할 때는 0.1 mm의 유격을 가지도록 했다. 하지만, 출력재료의 팽창으로 인해 출력한 후에 양각부분을 사포로 후처리한 후에야 삽입이 가능했다. 프린팅한 각 조각 메쉬는 조립한 형태를 유지하기 위해 접착제를 사용하여 부착할 수 있다. 또한, Fig. 5와 같이 음각/음각 체결부에 자석을 부착하여 체결력을 가지도록 할 수 있다. 절단 평면을 기반으로 절단하였기 때문에, 음각/음각만으로 체결할 경우 체결부가 옆으로 빗겨날 수 있으나, 음각/양각 또는 맞물림 체결부를 같이 사용하여 이러한 현상을 제거할 수 있고, 체결방향을 혼돈하지 않고 쉽게 조립할 수 있다. Fig. 6은 편집한 결과물을 출력하여 조립한 결과를 나타낸다. 특히, Fig. 6 (b)에서 나타낸 것과 같이 높이 30cm가 넘는 모델을 제안한 편집 시스템을 통해 출력할 수 있다.
Fig. 5.Magnets are glued to assemble parts with intaglio/intaglio type connectors.
Fig. 6.Real output with powder-type 3D printer: (a) output of Fig. 4(a) and assembled model, (b) memento model parts and assembled model, which is over 30cm in height. They are fabricated using a powder-based 3D printer.
한편, FDM 방식의 3D 프린터 출력물은 수축, 팽창의 방향이 일관되지 않아서, 후처리가 어려웠고, 출력재료에 따라 체결부에 유격을 다르게 적용해야 함을 알 수 있었다.
Fig. 7은 제안한 시스템을 이용하여 메쉬를 분할하여 체결부를 생성한 결과이다. Fig. 7 (c)는 분할된 조각 메쉬를 한꺼번에 출력하기 위해 출력 공간내에 배치한 결과이다. 배치를 위해 Greedy 기반의 자동배치 알고리즘[16]를 사용하였다.
Fig. 7.Mesh cut and connector generation results: (a) input model, (b) the output of the proposed system, and (c) placement for printing multi-parts at once.
5. 결 론
본 논문에서는 3차원 프린터에서 지원하는 출력 공간보다 큰 물체를 출력하기 위한 인터랙티브 3차원 메쉬 편집 시스템을 제안하였다. 제안한 시스템에서는 사용자가 지정한 평면으로 메쉬를 분할하고, 분할한 평면에 불리언 연산을 통해 체결부를 부착하였으며, 이러한 편집 결과가 3차원 프린팅 가능하도록 2-manifold 메쉬가 되도록 하였다. 또한, 실험을 통해 편집한 3차원 메쉬를 출력, 조립하여 프린팅 볼륨보다 큰 메쉬를 출력할 수 있음을 보였다. 제안한 시스템은 전문 3차원 디자이너가 아니더라도 간단한 조작을 통해 3차원 메쉬를 분할하고 연결장치를 추가할 수 있는 장점이 있다. 향후 연구로는 3차원 메쉬의 형태와 물리적 힘을 고려하여 3차원 프린터의 출력 공간 내에 들어갈 수 있도록 자동 분할하고, 연결 부위에 가해지는 힘을 고려하여 최적의 연결장치를 자동으로 생성하는 방법에 대한 연구를 진행할 예정이다.
References
- 3D Systems, http://www.3dsystems.com/, (accessed July, 26, 2016).
- S.H. Pyo and J.S. Choi, "Trends of 3D Printing Software Technologies," Electronics and Telecommunications Trends, Vol. 29, No. 1, pp. 1-10, 2014.
- X. Li, T.W. Woon, T.S. Tan, and Z. Huang, "Decomposing Polygon Meshes for Interactive Applications," Proceeding of ACM Symposium On Interactive 3D Graphics, pp. 35-42, 2001.
- L. Luo, I. Baran, S. Rusinkiewicz, and W. Matusik, "Chopper: Partitioning Models into 3D Printable Parts," ACM Transactions on Graphics, Vol. 31, No. 6, 2012.
- P. Song, Z. Fu, L. Liu, and C.W. Fu, "Printing 3D Objects with Interlocking Parts," Computer Aided Geometric Design, Vol. 35, pp. 137-148, 2015. https://doi.org/10.1016/j.cagd.2015.03.020
- M. Lau, A. Ohgawara, J. Mitani, and T. Igarashi, "Converting 3D Furniture Models to Fabricatable Parts and Connectors," ACM Transactions on Graphics, Vol. 30, No. 4, 2011. https://doi.org/10.1145/2010324.1964980
- C.W. Fu, P. Song, X. Yan, L.W. Yang, P.K. Jayaraman, and D. Cohen-Or, "Computational Interlocking Furniture Assembly," ACM Transactions on Graphics, Vol. 34, No. 4, 2015.
- X. Chen, H. Zhang, J. Lin, R. Hu, L. Lu, Q. Huang, et al, "Dapper: Decompose-and-Pack for 3D Printing," ACM Transactions on Graphics, Vol. 34, No. 6, 2015.
- M. Yao, Z. Chen, L. Luo, R. Wang, and H. Wang, "Level-set-based Partitioning and Packing Optimization of a Printable Model," ACM Transactions on Graphics, Vol. 34, No. 6, 2015. https://doi.org/10.1145/2816795.2818064
- J. Kim and H. Cho, "Structure Assembling Method for 3D Puzzle System," Journal of Korea Multimedia Society Vol. 12, No. 1, pp.58-68, Jan. 2009.
- Materialise Magics, http://software.materialise.com/magics, (accessed July, 26, 2016).
- Autodesk Netfabb, https://www.netfabb.com/, (accessed July, 26, 2016).
- OpenGL, https://www.opengl.org/, (accessed July, 26, 2016).
- D. Hearn and M.P. Baker, Computer Graphics C Version, Prentice-Hall, Inc., Upper Saddle River, New Jersey, 1997.
- G. Mei and J.C. Tipper, Simple and Robust Boolean Operations for Triangulated Surfaces, arXiv:1308.4434v2, 2013.
- C.W. Chu, K.K. Kim, C.H. Park, and J.S. Choi, "An Implementation of Automatic Object Deployment for Multiple Object 3D Printing," Proceeding of The 17th Conferenceon Electronics and Information Communications, pp. 41-43, 2015.