프로그래밍/OpenGL
Procedural Planet Generate(1) - 지형 생성
hns17
2018. 5. 23. 19:26
절차적 행성 생성
- 간단하게 행성을 만드는 것을 목표로 한다.
1. 우선 Level Of Detail 이 적용된 Square 6개를 생성하여 큐브로 조립합니다.
- 큐브를 사용하는 이유는 Culling 하기 좋기 때문입니다.
[결과물]
2. Cube To Sphere
- Cube를 Sphere로 만들어 줍니다.
- 변환코드는 GLSL Shader에 작성하여 시뮬레이션 하였습니다.
(1) 만드는 방법
1) 아래 링크의 공식을 이용한다.
- 주의 할 점은 Size가 -1 ~ 1 이어야 합니다.
2) 원의 특성을 이용하기
- Sphere 변환은 원의 특성을 이용하면 됩니다.
- 원은 모든 정점이 중심점에서 동일한 길이를 가집니다.
- 큐브의 Vertex를 Normalize 한 후 원하는 Size를 곱해주면 Sphere 화 할 수 있습니다.
- 저는 이 방법을 사용하였습니다.
[결과물]
4. 노이즈 함수를 이용해 적절하게 uv를 만들고 텍스쳐를 입혀 줍시다.
- 사용한 Noise Function : noise.h
- 저는 아래의 텍스쳐를 사용하였습니다.
- UV의 U 값은 온도, V 값은 습도가 됩니다.
- OpenGL의 UV 시작점은 좌하단 부터입니다.
[결과물]
5. Noise Function 을 이용해 정점의 높이값 변경하기.
- 노이즈 함수를 이용해 얻어낸 값을 정점에 더해줍니다.
[결과물]
- 1차 노이즈만 적용한 결과물입니다.