구성 솔리드 지오메트리

Constructive solid geometry
CSG 오브젝트는 바이너리 트리로 나타낼 수 있습니다.리프는 원본을 나타내고 노드는 동작을 나타냅니다.이 그림에서 노드는 교차점, 결합점, 차이에 대해 라벨이 붙어 있습니다.

구성 솔리드 지오메트리(CSG, 이전에는 계산 바이너리 솔리드 지오메트리)는 솔리드 모델링에 사용되는 기술입니다.건설적인 솔리드 지오메트리를 사용하면 모델러는 부울 연산자를 사용하여 복잡한 표면 또는 객체를 생성하여 단순한 [1]객체를 결합함으로써 시각적으로 복잡한 객체를 생성할 수 있습니다.[2][3]

3D 컴퓨터 그래픽스 및 CAD에서 CSG는 절차 모델링에 자주 사용됩니다.CSG는 폴리곤 메시에서도 실행할 수 있으며 절차 및/또는 파라미터일 수도 있습니다.

CSG를 폴리곤 메쉬 모델링 및 박스 모델링과 대조합니다.

동작하고 있다

표현에 사용되는 가장 단순한 솔리드 오브젝트를 기하학적 프리미티브라고 합니다.전형적으로 그것들은 단순한 형태의 물체입니다: 큐보이드, 실린더, 프리즘, 피라미드, 구체, 원뿔.[1]허용되는 기본 요소 집합은 각 소프트웨어 패키지에 의해 제한됩니다.일부 소프트웨어 패키지는 곡면 객체 상에서 CSG를 허용하는 반면 다른 패키지는 지원하지 않습니다.

오브젝트는 허용 가능한 연산에 의해 프리미티브로 구성됩니다. 연산은 집합의 합집합, 교집합 및 차이뿐 아니라 집합[1]기하학적 변환도 일반적으로 부울 연산입니다.

프리미티브는 일반적으로 일정 수의 파라미터를 받아들이는 절차로 기술할 수 있습니다.예를 들어, 구는 반지름 값과 함께 중심점의 좌표로 기술할 수 있습니다.다음과 같은 작업을 사용하여 이러한 기본 요소를 복합 개체로 결합할 수 있습니다.

이러한 기본 연산을 조합하면 간단한 것부터 시작하여 복잡도가 높은 오브젝트를 구축할 수 있습니다.

레이 트레이스

건설적인 솔리드 지오메트리의 렌더링은 레이트레이스 시에 특히 간단합니다.레이서 추적기는 작동 중인 두 원시 원소와 광선을 교차하고 연산자를 1D 광선을 따라 교차 간격에 적용한 다음 광선을 따라 카메라에 가장 가까운 점을 취합니다.

적용들

광선 트레이서 내의 광선의 맥락에서 적용되는 CSG 조작

건설적인 솔리드 지오메트리는 여러 가지 실용적인 용도가 있습니다.단순한 기하학적 객체를 원하거나 [citation needed]수학적 정확도가 [4]중요한 경우에 사용합니다.거의 모든 엔지니어링 CAD 패키지는 CSG를 사용합니다(공구 절단 및 부품이 함께 장착되어야 하는 기능을 나타낼 때 유용합니다).

Quake 엔진과 Unreal 엔진은 모두 이 시스템을 사용하며, Hammer(원어민 소스 엔진 레벨 에디터)와 Torque Game Engine Advanced도 이 시스템을 사용합니다.CSG는 모델러가 비교적 단순한 오브젝트 세트를 사용하여 매우 복잡한 [3]지오메트리를 작성할 수 있기 때문에 인기가 있습니다.CSG가 프로시저 또는 파라메트릭인 경우 사용자는 오브젝트의 위치를 변경하거나 오브젝트를 결합하기 위해 사용되는 부울 연산을 변경하여 복잡한 지오메트리를 변경할 수 있습니다.

CSG의 장점 중 하나는 모든 원시적인 모양이 방수 [5]상태라면 물체가 "고체"이거나 방수 상태임을 쉽게 보장할 수 있다는 것입니다.이는 일부 제조 또는 엔지니어링 계산 애플리케이션에서 중요할 수 있습니다.이에 비해 경계 표현을 기반으로 형상을 작성할 때는 추가 위상 데이터가 필요하거나 지정된 경계 설명이 유효한 솔리드 개체를 지정하도록 일관성 검사를 [1]수행해야 합니다.

CSG 형상의 편리한 특성은 임의의 점을 CSG가 작성한 형상의 내부 또는 외부로 분류하기 쉽다는 것입니다.포인트는 단순히 모든 기본 원소와 비교하여 분류되고 결과 부울식이 [6]평가됩니다.이것은, [6]레이트레이스등의 일부의 애플리케이션에 있어서 바람직한 품질입니다.

메시에서 CSG로의 변환

CSG 모델은 구조에 따라 파라미터화되기 때문에 맞춤형 모델을 제작하는 것이 목표인 어플리케이션에서는 통상적인 메쉬보다 유리합니다.이러한 애플리케이션에서는 이미 존재하는 메쉬를 CSG 트리로 변환하는 것이 중요합니다.메시를 CSG 트리로 자동 변환하는 이 문제를 역 CSG라고 합니다.

그 결과 CSG 트리는 최소 노드 수를 가지면서 입력 메쉬와 같은 볼륨을 3D 공간에서 점유해야 합니다.결과 모델을 쉽게 편집할 수 있도록 간단한 솔루션이 선호됩니다.탐색해야 하는 검색 공간이 크기 때문에 이 문제를 해결하는 것은 어려운 일입니다.기본 형상의 치수 및 크기와 같은 연속 파라미터와 최종 CSG 트리를 구축하는 데 사용되는 부울 연산자와 같은 이산 파라미터를 결합합니다.

연역법은 지오메트리의 내부를 설명하는 일련의 하프 스페이스를 구축함으로써 이 문제를 해결합니다.이 반공간은 최종 [7]모델을 얻기 위해 결합할 수 있는 기본 요소를 설명하는 데 사용됩니다.

또 다른 접근방식은 원시 형상의 검출과 최종 모델을 정의하는 CSG 트리의 연산을 분리한다.이 접근방식은 최신 프로그램 합성 툴의 기능을 이용하여 최소한의 [8]복잡성으로 CSG 트리를 찾을 수 있습니다.

유전자 알고리즘을 사용하여 원하는 [9]망사의 모양을 향해 초기 모양을 반복적으로 최적화하는 접근법도 있다.

CSG를 지원하는 주요 응용 프로그램

범용 모델링 언어 및 소프트웨어

광선 추적 및 입자 전송

컴퓨터 지원 설계

게임

다른이들

레퍼런스

  1. ^ a b c d Foley, James D. (1996), "12.7 Constructive Solid Geometry", Computer Graphics: Principles and Practice, Addison-Wesley Professional, pp. 557–558, ISBN 9780201848403,
  2. ^ Roth, Scott (1982). "Ray Casting for Modeling Solids". Computer Graphics and Image Processing. 18 (2): 109–144. doi:10.1016/0146-664X(82)90169-1.
  3. ^ a b 를 클릭합니다Bloomenthal, Jules; Bajaj, Chandrajit (1997), "5.2.5 Intersection with CSG Trees", Introduction to Implicit Surfaces, Morgan Kaufmann, pp. 178–180, ISBN 9781558602335.
  4. ^ 폴리(1996), 페이지 559.
  5. ^ 를 클릭합니다van Rossen, Sander; Baranowski, Matthew (2011), "Real-time constructive solid geometry", in Ansari, Marwan (ed.), Game Development Tools, CRC Press, pp. 79–96, ISBN 9781439867723.
  6. ^ a b 를 클릭합니다Glassner, Andrew S. (1989), An Introduction to Ray Tracing, Morgan Kaufmann, p. 80, ISBN 9780122861604.
  7. ^ Buchele, Suzanne F.; Crawford, Richard H. (2004). "Three-dimensional halfspace constructive solid geometry tree construction from implicit boundary representations". Computer-Aided Design. 36 (11): 1063–1073. doi:10.1016/j.cad.2004.01.006.
  8. ^ Du, Tao; Inala, Jeevana Priya; Pu, Yewen; Spielberg, Andrew; Schulz, Adriana; Rus, Daniela; Solar-Lezama, Armando; Matusik, Wojciech (2018). "InverseCSG: automatic conversion of 3D models to CSG trees". ACM Trans. Graph. doi:10.1145/3272127.3275006.
  9. ^ Fayolle, Pierre-Alain; Pasko, Alexander A. (2016). "An evolutionary approach to the extraction of object construction trees from 3D point clouds" (PDF). Computer-Aided Design. 74: 1–17. doi:10.1016/j.cad.2016.01.001.
  10. ^ Godot Engine - Godot은 CSG 지원을 받습니다.
  11. ^ Gregory, Paul (February 12, 2002). "Major release". Retrieved May 20, 2020 – via SourceForge.