일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- bezier curve
- Geometry Modeling
- shader programming
- 윈도우
- 셰이더
- 운영체제
- MFC 윈도우 프로그래밍
- 윈도우프로그래밍
- 핵심 API로 배우는 윈도우프로그래밍
- 오픈지엘
- win32
- 윈도우 프로그래밍
- c4d
- OpenGL
- Win32 API
- 윈도우 구조
- Mesh Processing
- MFC
- 컴퓨터 구조
- 컴퓨터 아키텍쳐
- 그래픽스
- 베지에 곡선
- Graphics
- modeling
- denoising
- 렌더링
- shader
- 셰이더프로그래밍
- window programming
- 그래픽스기초
- Today
- Total
목록Mesh Processing (8)
오다기리 박의 알고리즘 노트
지형 메쉬를 편집하는 툴을 만들어보았다. 쿼드 메쉬를 하나 만들어서 작은 삼각형으로 subdivision하고, 메쉬를 sculpting 및 deformation을 해서 지형 메쉬로 만들었다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Botsch, Mario, and Leif Kobbelt. "An intuitive framework for real-time freeform modeling." ACM Transactions on Graphics (TOG) 23.3 (2004): 630-634.
메쉬에 존재하는 홀(hole)을 발견해서 부드러운 메쉬(초록색)로 채운 후, 그 위에 디테일을 추가하여 모델을 복원하는 툴을 만들어보았다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Liepa, Peter. "Filling holes in meshes." Proceedings of the 2003 Eurographics/ACM SIGGRAPH symposium on Geometry processing. 2003. Park, Jung-Ho, et al. "GeoStamp: Detail Transfer Based on Mean Curvature Field." Mathematics 10.3 (2022): 500.
메쉬를 부위별로 분할하고 선택하는 기능을 만들어보았다. 분홍색으로 나타나는 영역에서 메쉬 굴곡이 급격하게 변하는 부분까지 자동으로 분할이 가능하다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Au, Oscar Kin-Chung, et al. "Mesh segmentation with concavity-aware fields." IEEE Transactions on Visualization and Computer Graphics 18.7 (2011): 1125-1134.
메쉬에서 일부 영역을 선택해서 Fairing 을 적용해보았다. mesh fairing은 디테일/노이즈를 제거하여 부드럽게 만드는 기법이다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Moreton, Henry P., and Carlo H. Séquin. "Functional optimization for fair surface design." ACM SIGGRAPH Computer Graphics 26.2 (1992): 167-176. Desbrun, Mathieu, et al. "Implicit fairing of irregular meshes using diffusion and curvature flow." Proceedings of the 26th annual con..
메쉬의 재질(material)에 셰이더(shader)를 붙여서 표현해보았다. OpenGL에서는 기본적으로 삼각형 안에서 세 점의 조명색상을 보간하는 방식인 Gouraud 셰이딩을 사용하기 때문에 메쉬의 렌더링 퀄리티가 높지 않다. 영상에서는 GLSL을 사용하여 퐁(Phong) 셰이딩, 툰(Toon) 셰이딩, 환경 매핑(Environment mapping)등을 사용한다. 특히 퐁셰이딩은 삼각형 안에서 세 점의 법선을 보간하기 때문에 Specular 효과를 확실하게 표현할 수 있다. [개발 환경] C++ / OpenGL / Visual Studio
메쉬의 노이즈를 제거하여 표면을 부드럽게 만들어 보았다. 각 정점의 위치를 이웃한 정점들의 무게중심으로 이동시키는 단순한 방식을 적용했다. [개발 환경] C++ / OpenGL / Visual Studio
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DiHYe/btqOvRfH3dZ/x8BuLmPahkfhPaXIji14Y1/img.png)
3D메쉬를 2D 공간에 교차없이 펼쳐보았다. 삼각형의 각도를 유지시키기 위해 Least Squares Solution을 사용했다. 2D 매개화는 텍스처 매핑, 리메싱, 압축, 곡면 복원 등에 널리 활용되는 기술이다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Floater, Michael S., and Kai Hormann. "Surface parameterization: a tutorial and survey." Advances in multiresolution for geometric modelling (2005): 157-186.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bf2B6Z/btqFrbuhCcL/srDDQdZR8bYGQpKbBeAPcK/img.png)
메쉬의 곡률을 계산해서 가시화를 해보았다. 첫번째는 가우스 곡률을, 두번째는 평균 곡률을, 세번째는 법선 방향에 해당된다. 보통 메쉬위의 한 정점에서 곡률을 계산하면 그 값이 매우 국소적이기 때문에 전체적인 곡률 가시화 결과가 지저분할 수 있다. 이럴 때는 곡률값을 주변곡률의 평균으로 대체하는 등의 스무딩 기법을 적용하는 것이 좋다. [개발 환경] C++ / OpenGL / Visual Studio [참고] Botsch, Mario, et al. Polygon mesh processing. CRC press, 2010.