OpenSCAD

 

공식 홈페이지

1. 개요
2. 특징
3. 사용 방법
4. 다운로드


1. 개요


OpenSCAD는 3D 모델을 만드는 프리웨어이다. 일반적으로 사용하는 GUI기반의 모델러들과 달리 C언어와 유사한 형태의 스크립트와 CSG[1]를 이용해서 모델을 만든다. 윈도우, 리눅스, 에서 모두 이용할 수 있는 오픈소스 소프트웨어다.
GPLv2 라이선스를 이용하고 있다.

2. 특징


모든 3D오브젝트를 코드로 기술하기 때문에, 협업과 버전 관리가 쉽다는 장점을 가진다. 때문에 오픈소스 3D프린터 프로젝트인 RepRap진영에서 가장 사랑받는 CAD 프로그램이다.
OpenSCAD 언어에는 변수가 없다.[2][3] 복잡한 계산을 하고자 하면 루프와 상태변수를 사용하는 대신 순수 함수형 언어에서 하듯 재귀함수를 짜야한다. 그렇다고 함수형언어라고 볼 수도 없는 것이, 람다표현식도 없고, 함수간 연산도 지원하지 않는다. 하지만 List Comprehension이 있기 때문에 하스켈등 함수형 언어 사용 경험이 있다면 좀 불편하긴 해도 어렵지 않게 대부분의 알고리즘은 구현할 수 있다.[4]
CGAL의 래퍼(wrapper)이기도 하다. CGAL은 방대한 크기의 기하학 계산용 오픈소스 라이브러리인데 그중 CSG부분만을 따 와서 간략한 문법으로 사용할 수 있게 한 것. 실제로 구현은 OpenSCAD스크립트를 CGAL을 불러오는 C코드로 변환 하고 CGAL을 통해 STL파일을 얻는 식으로 되어있다. 덕분에 OpenSCAD의 성능은 CGAL을 따라간다.
'''느리다.''' 이는 하드웨어 가속은 커녕 멀티코어도 지원하지 않는 CGAL탓이기도 하지만, 작업물을 메모리에 올려놓고 수정사항만 반영하며 진행하는 일반적인 CAD와는 달리, 렌더링 버튼을 누르는 순간 처음부터 3D오브젝트를 만들기 때문이다. render()[5] 명령을 군데군데 배치함으로서 사용자가 직접 최적화를 할 수도 있지만 잘 생각해서 배치하지 않으면 거꾸로 느려지는 결과를 낳기도 한다.

3. 사용 방법



4. 다운로드


홈페이지에서 운영체제별로 다운로드 할 수 있다.

[1] CSG는 Constructive solid geometry의 약자로 합, 차, 교집합의 개념을 이용해서 모델을 만들어내는 방식이다. 영문 위키 CSG 항목[2] 상수는 있다. x=0;은 x를 0으로 정의하는 적법한 문장이지만, x=x+1; 또는 x=1;x=2; 는 틀린 문장.[3] C와 같은 절차적 언어의 변수에 대응하는 개념이 없다는 뜻. 어떠한 값이든 가질 수 있지만 한번 값이 정해지면 바뀌지 않는 콘테이너를 OpenSCAD에서는 변수라 부르며, 이는 함수형 언어나 수학에서의 변수와 같고, 절차적 언어에서의 상수에 대응된다.[4] 한동안 C++만 쓰다가 C를 쓸 때와 비슷한 느낌이다.[5] 하위의 오브젝트의 렌더링 결과물을 저장해놓고 다음 렌더링 때 이를 활용한다