본문 바로가기

ComputerScience/Computer Graphics

CG - 9. Modeling

728x90

1. Modeling

- scene을 구성하는 물체를 만드는 것

- 물체는 크게 두가지로 정의 된다.

- 하나는 Geometry of shape(Structural description), 다른 하나는 질감 등의 appearance와 light(surface)이다.

2. Geometry

- 70-80년대에는 spline curve로 surface를 구현했다.

- 표면의 곡률 등을 계산해서 spline patch들을 polynomial 함수로 구현했다.

- 90년대부터 triangle mesh를 생성하는 방법이 등장했다. 

- 물체 표면에 lazer를 쏴서 물체 표면의 모든 점들의 3차원 좌표들을 알아내는 기법으로 사실적 모델을 생성하기 시작했다.

- Stanford bunny 는 69451개의 삼각형으로 구성되었고 다비드 상은 8백만개의 폴리곤으로 구성되었다고 한다.

 

Polygonal mesh

- 복잡한 실세계의 물체를 scanning한 후 triangle들을 이어 붙어 구성하는 방법이다.

Spline patch

- Spline patch를 생성해서 modeling을 하는 방법이다.

Volume data, voxel

- 이미지를 2차원 pixel로 표현하는 것처럼 3차원으로 확장해서 물체를 표현하는 방법이다. CT, MRI가 이에 해당한다.

CSG

- 부품 모델링에 종종 사용됨

 

- 이 방법 외에도 다양한 방법으로 3차원 물체를 modeling하게 된다.

- gpu에서 rendering의 장점 때문에 triangle mesh가 많이 사용된다. (하드웨어 support)

3. Point Cloud

- unstructured한 point들을의 list이다. 

- 점들간의 연결 정보 인접 정보들이 없는 상태이다.

- scanning의 결과물인 raw data이다. 

- 이 raw data를 가지고 triangle을 형성하게 된다.

.

- 카메라 array로 부터 다각도의 사진을 찍는다.

- 즉 한 점을 다각도로 찍은 사진들을 가지고 그 점의 좌표를 계산한다.

- 보통 카메라는 물체의 색을 저장하지만 depth camera는 물체의 depth 값을 저장한다. depth를 알면 물체의 3차원 position을 얻어낼 수 있다.

- 즉 위 그림처럼 물체를 둘러싸고 있는 depth image들을 얻고 거기서 point cloud를 얻게 된다.

- 이것도 카메라기 때문에 depth image와 더불어 texture map도 생성할 수 있다.

4. Polygon Soup

- point cloud를 가지고 polygon을 구성한다.

- unstructed set of polygon이다. 즉 특별한 구조 없이 단순히 (만약 triangle이라면) 삼각형의 vertex들을 일렬로 나열한 것이다. 이를 triangle soup이라고 한다.

- rendering에는 이정도만 해도 충분하지만 다른 operation에는 에러가 생기기 쉽다. 예를 들면 위 예시에서 t0와 t1의 vertex가 일치하는 점인지 구별할 수 없어 문제가 발생할 수 있다.

5. Mesh

- connected set of polygons

- 대부분의 경우 triangle mesh를 사용한다.

- triangle mesh를 구현하는 가장 간단한 방법은 vertex list를 만들고(point cloud) 이 점들로 triangle list를 만드는 것이다.

- 위처럼 세개의 vertex를 정의 했으면

- vertex들을 가지고 triangle을 정의하는 것이다.

- 이런 방법은 indexed representation이라고 한다.

- 즉 점들의 connectivity를 알려주는 것이다.

- vertex와 인접한 triangle들을 계산하는 연산들이 더 쉬워진다.

6. Implicit Surface (Level Set)

- 함수를 가지고 물체를 표현하는 방법이다.

- F(x,y,z) = 0인 x,y,z가 물체의 표면의 좌표들이 된다. (검정선)

- red로 갈수록 +, blue일수록 -이다. 양수값일 수록 더 더 멀리 blue일수록 더 가까운 것이다.

- triangle mesh에서는 삼각형이 하나 빠지면 모델에서 구멍이 생기는데 지금 이 방식에서는 hole-free하다.

- topology를 바꾸기 쉽다. (morphing이 쉽다. 하나의 형체가 전혀 다른 이미지로 변하는 기법) 함수만 바꾸면 되기 때문이다.

- 3차원 volumn데이터를 사용하기 때문에 속도가 느리다. 또한 stroge도 더 많이 필요하다.

7. Voxel

- 네모난 voxel에 occupancy, density를 저장하게 된다.

- CT, MRI가 이 예에 해당한다.

- 2차원 이미지를 층층이 여러장 찍고 포개서 3차원 volume 데이터를 형성하는 것이다.

8. Constructive Solid Geomety (CSG)

- 기계 부품 같은 걸 설계 할 때 자주 쓰이는 기법이다.

- 기본적인 모양으로 복잡한 모델을 만드는 기법이다. 

- cad 모델링에서 자주 사용된다.

9. Scene Graph

- 이전까지 살펴본 모델링 방법들로 모델을 구성하고 나면 그 물체들을 가지고 계층구조로 Scene Graph를 만들게 된다.

- 이런 계층구조 덕에 책상에 transformation을 하면 모니터 종이 전화기를 함께 움직일 수 있다.

- 캐릭터 애니메이션에 자주 쓰인다.

10. Procedural Modeling

- 저장되어 있는 형태를 그대로 사용하는 것이 아니라 runtime에 새로운 형태를 계산해서 모델링하는 기법이다.

- fractal이 이에 해당한다.

- edge마다 operation을 적용해서 새로운 형태를 만드는 것이다.

- 나무 등을 그리는데 사용될 수 있다.

- 지도의 등고선 등의 지형 정보(height map)를 가지고 지형을 형성할 때 종종 사용된다. 높이 정도를 가지고 triangle mesh를 거쳐 실제 지형을 묘사하는 것이다.

 

*분야에 따라 적절한 data representation을 활용해서 모델링을 한다. 요즘에는 traingle mesh가 가장 널리 사용된다.

*영화처럼 사실적 묘사가 중요할때는 subdivision을 활용한다. 더 curve가 두드러질때는 더 작은 삼각형들로 sampling을 하는 기법이다. 좀 더 부드러운 표면을 구현할 수 있다.

728x90
반응형

'ComputerScience > Computer Graphics' 카테고리의 다른 글

CG - 11. shader programming  (0) 2021.11.03
CG - 10. Triangle Mesh  (0) 2021.10.28
CG - 8. Texture filtering  (0) 2021.10.13
CG - 7. Texture  (0) 2021.10.13
CG - 6. Surface Rendering  (0) 2021.10.08