구조적 입체기하학

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

구조적 입체기하학(CSG)은 기하 기본체를 불 대수 연산을 통해 결합하여 복잡한 3차원 객체를 생성하는 모델링 기법이다. 직육면체, 원기둥, 구 등 간단한 형태의 기본체를 합집합, 교집합, 차집합 등의 연산을 통해 조합한다. CSG는 정확한 모델링, 쉬운 수정, 수밀성 보장, 내부/외부 판별 용이성 등의 장점을 가지며, 광선 추적 렌더링에 유용하게 사용된다. CAD, 게임 엔진, 3D 모델링 소프트웨어 등 다양한 분야에서 활용되며, 메쉬를 CSG 트리로 변환하는 역 CSG 기술도 연구되고 있다.

구조적 입체기하학
개요

이미지 준비중입니다.

CSG를 사용하여 만든 간단한 물체의 예
유형모델링 기법
분야컴퓨터 그래픽스
관련 항목솔리드 모델링
기하학적 모델링
표면 모델링
특징 기반 모델링
디지털 모형 제작
설명
정의구성 요소를 결합하여 복잡한 표면이나 물체를 모델링하는 기법
기본 요소프리미티브
불 대수 연산
연산합집합
교집합
차집합
응용 분야CAD
CAM
CAE
컴퓨터 그래픽스
3D 프린팅
특징
장점단순한 모양으로 복잡한 모델을 쉽게 만들 수 있음
모델의 정확성이 높음
파라메트릭 모델링에 적합함
단점곡면을 표현하기 어려움
연산 비용이 많이 들 수 있음
구현
표현 방식이진 트리
장면 그래프
알고리즘광선 추적
볼륨 렌더링
역사
최초 개발자아서 애플
이안 브레센햄
보엘러
개발 시기1960년대
📚 더 읽어볼만한 페이지
  • 유클리드 공간기하학 - 원기둥
    원기둥은 밑면이 원인 3차원 도형으로, 직사각형을 회전시켜 만들 수 있으며, 부피는 밑면의 면적과 높이의 곱으로, 겉넓이는 밑넓이와 측면적의 합으로 계산한다.
  • 유클리드 공간기하학 - 입체각
    입체각은 3차원 공간에서 한 점을 기준으로 물체가 보이는 범위를 나타내는 각도의 일반화된 개념으로, 구의 중심에서 바라본 물체의 겉넓이와 구 반지름의 제곱의 비율로 정의되며 스테라디안 단위를 사용하고, 천문학, 물리학, 컴퓨터 그래픽스 등 다양한 분야에서 활용된다.
  • 컴퓨터 지원 설계 - 빌딩 정보 모델링
    빌딩 정보 모델링(BIM)은 건축물의 전 생애주기 동안 발생하는 정보를 디지털 모델로 통합 관리하는 프로세스이다.
  • 컴퓨터 지원 설계 - 컴퓨터 지원 제조
  • 3차원 컴퓨터 그래픽스 - 픽셀 셰이더
    픽셀 셰이더는 렌더링 과정에서 픽셀의 색상을 계산하여 최종 모습을 결정하며, 텍스처, 빛, 그림자 등의 시각 효과를 구현하고, 다양한 언어로 프로그래밍되며, 그래픽 카드 및 칩셋은 지원하는 버전을 가진다.
  • 3차원 컴퓨터 그래픽스 - 모션 캡처
    모션 캡처는 물체의 움직임을 디지털 데이터로 변환하는 기술로서, CG 영상 제작에 활용되며, 센서 부착 방식에서 마커리스 방식으로 발전하여 다양한 분야에 응용된다.

2. CSG의 원리

CSG는 직육면체, 원기둥, 각기둥, 각뿔, , 원뿔 등 비교적 단순한 형태의 기하 기본체(Primitives)를 기반으로 한다. 이러한 기본체는 소프트웨어 패키지에 따라 다를 수 있으며, 일부는 곡면 객체에 대한 CSG를 지원하기도 한다.

객체는 불 대수 연산집합의 합집합, 교집합, 차집합 및 기하 변환과 같은 연산을 통해 기본체로부터 구성된다.

기본체는 몇 개의 매개변수를 받는 알고리즘으로 설명할 수 있다. 예를 들어, 구는 중심점의 좌표와 반지름 값으로 설명할 수 있다. 이러한 기본 연산을 결합하여 간단한 객체에서 매우 복잡한 객체를 만들 수 있다.

--

CSG는 단순한 기하학적 객체가 필요하거나, 수학적 정확성이 중요할 때, 언리얼 엔진과 같은 게임 엔진 등에서 사용된다. 절차적 또는 파라메트릭 CSG에서는 좌표 변경이나 부울 연산자 교체를 통해 객체의 형상을 수정할 수 있다.

CSG는 공업 제품 설계에서 객체의 수밀성을 확인하는 데 유용하며, 충돌 감지 등에도 활용된다.

2.1. 기본 연산

CSG의 핵심은 불 대수 연산을 사용하여 기본체들을 결합하는 것이다. 주요 연산은 다음과 같다.

👆
좌우로 밀어서 보기
연산설명
합집합 (Union)두 객체를 하나로 합친다.
교집합 (Intersection)두 객체의 공통된 부분만 남긴다.
차집합 (Difference)한 객체에서 다른 객체를 뺀다.


이러한 기본 연산을 결합하면 간단한 객체에서 시작하여 매우 복잡한 객체를 만들 수 있다.

2.1.1. 합집합 (Union)

조합(Union)2개의 오브젝트를 하나로 합친다
조합(Union)
2개의 오브젝트를 하나로 합친다


두 객체를 하나로 합친다. 결과적으로 두 객체의 모든 부분을 포함하는 하나의 객체가 생성된다.

2.1.2. 교집합 (Intersection)

315x315px
315x315px

두 객체의 공통된 부분만 남긴다. 결과적으로 두 객체가 겹치는 부분만 남은 객체가 생성된다.

2.1.3. 차집합 (Difference)

한 객체에서 다른 객체를 빼면, 첫 번째 객체에서 두 번째 객체와 겹치는 부분이 제거된 객체가 생성된다.

차이(Difference): 한 오브젝트를 다른 오브젝트에서 제외시킨다.
차이(Difference): 한 오브젝트를 다른 오브젝트에서 제외시킨다.

2.2. 광선 추적 (Ray tracing)

광선 추적을 사용하면 구성적 솔리드 기하학(CSG) 렌더링을 간단하게 처리할 수 있다. 광선 추적기는 광선과 기본 도형의 교점을 계산하고, 1차원 광선을 따라 교차 간격에 연산자를 적용하여 카메라에 가장 가까운 점을 결과로 얻는다.

3. CSG의 장점 및 특징

구성적 솔리드 기하학(CSG)은 간단한 기하학적 객체가 필요하거나 수학적 정확성이 중요할 때 사용된다. 거의 모든 엔지니어링 CAD 패키지, 퀘이크 엔진, 언리얼 엔진, 해머(소스 엔진 레벨 편집기), 토크 게임 엔진/토크 게임 엔진 어드밴스드에서 CSG를 사용한다.

CSG는 비교적 간단한 객체들을 조합하여 매우 복잡한 기하학적 형상을 만들 수 있어 모델러에게 인기가 높다. 절차적 또는 파라메트릭 CSG를 사용하면 객체의 위치를 변경하거나 객체를 결합하는 부울 연산을 변경하여 복잡한 기하학적 형상을 쉽게 수정할 수 있다.

CSG의 주요 장점은 다음과 같다.

* 정확성: 수학적 연산을 기반으로 하므로 정밀한 모델링이 가능하다.
* 수정 용이성: 기본 도형과 연산의 조합으로 모델을 생성하므로, 모델을 쉽게 수정하고 변경할 수 있다.
* 수밀성 보장: 기본 도형이 수밀(watertight)하면, CSG 연산을 통해 생성된 객체도 수밀성을 유지한다. 이는 제조 및 엔지니어링 계산에 중요하다.
* 내/외부 판별 용이: 특정 점이 CSG 객체의 내부 또는 외부에 있는지 쉽게 판별할 수 있다. 이는 광선 추적과 같은 응용 프로그램에 유용하다.

4. 메쉬에서 CSG로의 변환 (역 CSG)

CSG 모델은 구성에 의해 매개변수화되므로 맞춤형 모델 제작을 목표로 하는 응용 분야에서 일반적인 메시보다 유리한 경우가 많다. 이러한 응용 분야의 경우, 이미 존재하는 메시를 CSG 트리로 변환하는 것이 흥미로울 수 있다. 메시지를 자동으로 CSG 트리로 변환하는 이 문제를 역 CSG라고 한다.

결과 CSG 트리는 입력 메시와 동일한 3D 공간을 차지하면서 노드 수가 최소여야 한다. 결과 모델을 쉽게 편집할 수 있도록 간단한 솔루션이 선호된다. 이 문제는 탐색해야 하는 검색 공간이 크기 때문에 해결하기 어렵다. 기본 도형의 차원과 크기와 같은 연속적인 매개변수와 최종 CSG 트리를 구성하는 데 사용되는 부울 연산자와 같은 불연속적인 매개변수를 결합한다.

추론적 방법은 형상의 내부를 설명하는 일련의 반공간을 구축하여 이 문제를 해결한다. 이러한 반공간은 최종 모델을 얻기 위해 결합될 수 있는 기본 도형을 설명하는 데 사용된다.

또 다른 접근 방식은 기본 도형의 감지와 최종 모델을 정의하는 CSG 트리의 계산을 분리한다. 이 접근 방식은 현대적인 프로그램 합성 도구가 최소 복잡성을 가진 CSG 트리를 찾는 기능을 활용한다.

또한 원하는 메시의 모양을 향해 초기 모양을 반복적으로 최적화하기 위해 유전 알고리즘을 사용하는 접근 방식도 있다.

5. CSG 지원 응용 프로그램

CSG는 간단한 기하학적 객체가 필요하거나 수학적 정확성이 중요한 경우에 사용된다. 거의 모든 엔지니어링 CAD 패키지와 퀘이크 엔진, 언리얼 엔진, 밸브 해머 에디터(소스 엔진 레벨 편집기), 토크 게임 엔진 등 다양한 게임 엔진에서 CSG를 활용한다.

CSG는 모델러가 비교적 간단한 객체 집합을 사용하여 매우 복잡한 기하학을 만들 수 있게 해주기 때문에 인기가 있다. 또한, 기본 도형이 물이 새지 않으면, 만들어진 객체도 물이 새지 않도록 쉽게 보장할 수 있다는 장점이 있어, 일부 제조 또는 엔지니어링 계산 응용 프로그램에 중요하다.

임의의 점이 CSG로 생성된 모양의 내부 또는 외부에 있는지 쉽게 분류할 수 있다는 점은 광선 추적과 같은 일부 응용 프로그램에 유용하다.

다음은 CSG를 지원하는 응용 프로그램 목록이다.

👆
좌우로 밀어서 보기
응용 프로그램
BRL-CAD
FreeCAD
GtkRadiant
ICAD/SX
POV-Ray
솔리드웍스
UnrealEd
Vectorworks

5.1. 일반 모델링 언어 및 소프트웨어

* 하이퍼펀
* PLaSM - 솔리드 모델링을 위한 프로그래밍 언어

5.2. 광선 추적 및 입자 전이

포토리얼리스틱 렌더맨과 POV-Ray는 광선 추적 및 입자 전이 기술을 활용하는 대표적인 렌더링 소프트웨어이다.

5.3. 컴퓨터 지원 설계 (CAD)

거의 모든 엔지니어링 CAD 패키지는 CSG를 사용한다.(도구 절단 및 부품이 서로 맞물려야 하는 기능 표현에 유용할 수 있음).

CSG의 장점 중 하나는 모든 기본 모양이 물이 새지 않는 경우 객체가 "솔리드"하거나 물이 새지 않도록 쉽게 보장할 수 있다는 것이다. 이는 일부 제조 또는 엔지니어링 계산 응용 프로그램에 중요할 수 있다. 이에 비해 경계 표현을 기반으로 기하학을 생성할 때는 추가적인 위상 데이터가 필요하거나 주어진 경계 설명이 유효한 솔리드 객체를 지정하는지 확인하기 위해 일관성 검사를 수행해야 한다.

다음은 CSG를 지원하는 주요 CAD 소프트웨어 목록이다.

👆
좌우로 밀어서 보기
소프트웨어설명
BRL-CAD
FreeCAD
OpenSCAD
솔리드웍스기계적 CAD 제품군
오토캐드
Rhino
벡터웍스
프로/엔지니어PTC 크레오 파라메트릭으로 변경됨

5.4. 게임

다음은 구조적 입체기하학을 사용하는 게임 엔진 및 소프트웨어 목록이다.

* GtkRadiant
* Roblox 스튜디오 - 2014년부터 지원
* 언리얼 엔진
* 소스 (게임 엔진)
* 유니티 - 에셋 스토어 플러그인 필요
* 밸브 해머 에디터
* Dreams
* Godot
* 리틀빅플래닛
* 로블록스
* 언리얼 에디터

5.5. 기타

* 블렌더는 서피스 메시 편집기이지만 메타 오브젝트를 사용하여 단순한 CSG를 할 수 있다.
* Clara.io
* MCNP
* 스케치업