Post Lists

2019년 3월 12일 화요일

지금까지 만든 것 (2019년 1월 기준)

1월에 프로젝트를 끝내고 이것저것 하다보니 업데이트를 해놓지 않았다.
이런 기록을 남겨두는 것은 이전으로부터 어떻게 발전해왔는지를 보여주기 때문에
종종 남겨놓는 것이 좋다고 생각한다.

1. 현재 만들어놓은 3D 게임 엔진의 최종 상황이다.
Sponza 모델과 Nanosuit를 통해 렌더링 했다.
영상은 최종 Scene을 만들기 위해 Light의 여러 Property를 수정하는 것을 보여준다.
아직 Culling 기능을 개발하지 않고 최적화가 이루어지지 않아 한 프레임 연산 속도는 느리다. Object Picking With Broad Phase(Dynamic AABB Tree), Model Loading (using Assimp) and Rendering + Model Diffuse/Specular/Emissive/Normal/Height Map (Normal Mapping, Parallax Occlusion Mapping), Light Property 편집, Light Shadow 설정 등이 들어갔다. learnopengl.com에서 배웠던 것을 Deferred Rendering 기반으로 바꾸면서 나의 이해를 증진시켰다. Post-Processing으로 Gamma Correction, Bloom, SSAO가 들어갔다.

2. 물리엔진 기반을 Box2D로 바꾸기로 결심하면서 Box2D-lite 코드를 이해하고 DirectX11 로 포팅해서 시뮬레이션 세팅하여 찍은 영상이다. 현재 Box2D 관련 자료들을 공부하며 이 기반을 다시 철저히 이해하기 위해 공부중이다. 2D를 이해하고 3D로 넘어갈 예정이다.

3. Terrain Rendering + Physics
Terrain을 Triangle Strip으로 한 번의 draw call로 렌더링했다.
그리고 Mesh vs Sphere의 Collision Detection and Response를 특히, Collision Detection 부분을 Bullet Physics를 참고해서 따라했다. 그 Bullet Physics의 코드를 이해하고 내 엔진에 적용할 수 있어서 매우 도전적이고 재미있는 경험이였다.
여기에서 BroadPhase(Dynamic AABB Tree) -> Mesh Quantization -> Early Exit (AABB vs AABB(of sphere) -> Narrow Phase(Triangle vs Sphere, Closest point on triangle using barycentric coordinate from Real Time Collision Detection book). 등의 많은 것들이 적용되었다. Mesh vs Box를 구현하려다 포기하고 Box2D로 돌아가게 되는 계기였는데, 어쨋든 가치있는 작업이였다.

댓글 없음:

댓글 쓰기