본문 바로가기

Robot/Robot Program - ROS

Open SCAD에서 다면체(polyhedron) 이해하기

제가 최근 3D 프린터를 연재했었죠.^^.[바로가기] 그리고 그때 이야기했던 것 중 하나가 어차피 프린터를 해야할 3D 모델은 사용자가 만들던지, 혹은 구해야하는 거라고 했습니다. 3D 프린터 연재하기 전에 이미 저는 3D 모델을 그릴 수 있는 여러가지 방법중에서 초보자가 가장 쉽게 접근할 수 있을 것 같아서 구글 스케치업을 소개했는데요.[바로가기] 요건 어떤 복잡한 모양이나 반복적인 모양을 그릴때는 살짝 어려울 - 아니 귀찮을 수도 있구요. 또 3D 모델 자체를 나중에 다시 프로그램에서 다룰려면 좌표의 역산에 어려움을 겪을 수도 있습니다. 그래서 프로그램 코드를 짜면서 3D 모델을 얻는 또다른 툴도 소개를 했었죠. 그게 Open SCAD였는데요.[바로가기] OpenSCAD는 자체적으로 가지고 있는 예제와 공식 홈페이지의 Document[바로가기]로도 충분히 혼자서 학습이 가능합니다. 

그런데 그 중 기초스런 부분에서 살짝 머뭇거리게 되는게 있는데요. 바로, 다면체(polyhedron)입니다. 사면체, 육면체, 사각뿔, 삼각뿔 등등 정말 많이 사용되는 것인데 고게 좀 막히거든요^^ (저만 그런걸까요?^^) 특히 위에서 이야기한 Document의 Polyhedron부분[바로가기]은 더 이해를 어렵게 할 수도 있습니다. 오늘은 그걸 살짝 풀어서 설명할까 하고 키보드를 붙잡았습니다.^^.

일단 공식 홈페이지의 매뉴얼을 통해 Polyhedron 다면체를 그리는 문법을 보면

polyhedron (
      points = [   [x, y, z], ... ],
      triangles = [ [p1, p2, p3], ... ],
      convexity = N
);

라는 문법을 가지고 있습니다. 여기서 points는 다면체의 꼭지점의 좌표를 나열하면 됩니다. 쉽죠.^^. 문제는 저놈의 triangles입니다. 뭘까요??? 그걸 알기 위해 아래 그림들을 보면서 이야기를 하겠습니다.

네 OpenSCAD에서 저렇게 입력했습니다. 아무것도 보이지 않네요^^. points의 의미는 뭐 간단합니다. 높이 10, 가로 세로는 20짜리 직육면체를 만들고 싶었던 거죠..ㅠㅠ. 여기서부터 저 triangles라는 옵션의 의미를 알아가보도록 하겠습니다.

triangles에 [0,1,4]라고 하나를 넣어봤더니, 저렇게 삼각형이 나타나네요. 뭔지 아실 수 있을까요? 하나 더 보죠.

일단 뭐 triangles에 좌표스러운 느낌의 집합 세 개를 넣었더니 삼각형(triangle)이 세개가 만들어 지는 군요. 이제 대충 감을 잡으셨을 겁니다. OpenSCAD에서는 다면체를 삼각형으로 구현하고 있으며, 다면체를 만들기 위해서는 저렇게 삼각형이 어떻게 구성되어 있다는 것을 알려줘야하는 겁니다. 그런데..ㅠㅠ. triangles에 어떤 내용인지는 알겠는데 여전히 숫자는 뭘 의미하는지 궁금하시죠??

위 그림의 왼쪽에 표시한 points가 있을겁니다. 직육면체를 그리고 싶었던 제가 좌표로 표기한건데요. 이때 제가 좌표를 적은 순서대로 0번 부터 숫자가 부여된다고 보면 됩니다. 그러면 첫번째, (10,10,0)에 있는 점은 0번점, (10,-10,0)에 있는 점은 1번 점... 이렇게 되는 거죠. 그럼 이제 triangles에서 [0,1,4]의 의미는 0번, 1번, 4번점을 이어서 삼각형, [1,4,5]의 의미는 1번, 4번, 5번 점을 이어서 삼각형, 마지막으로는 0,1,3번 점을 이어서 삼각형을 만들라는 겁니다. 그러면 저렇게 구성이 됩니다.

이렇게 해서 다면체를 구성하는 OpenSCAD의 polyhedron 명령을 보았습니다. 위 그림은 구분을 짓기 위해서 일부러 두 면은 만들지 않고 오픈했습니다. 즉, 직육면체 중에서 네 개의 면만 보여 주고 있는 것이지요. 저 삼각형의 선들이 눈게 거슬리면, View 메뉴의 Show Edge를 꺼버리면 됩니다.

그러면 이렇게 나타나지요. 뭐 별거 아닙니다만, 그냥 Cube로 그릴 수도 있겠지만, polyhedron 명령을 익힌다는 면에서 살짝 언급했습니다. OpenSCAD의 도형은 Cube, Sphere, Cylinder, Polyhedron만 알면 일단 기본은 알고 가는건데, 나머지 아이들은 모두 [바로가기]의 문서대로 따라가면 되는데, 다면체(Polyhedron)만 약간 혼돈이 와서 살짝 정리했습니다.^^.

반응형