Volume Rendering

튜토리얼 구조 및 접근 방식:

해당 강의는 ray marching이라는 기법으로 volume rendering을 구현하는데에 초점을 맞추었습니다.

현재 상용 렌더링 소프트웨어는 volume rendering보다는 delta tracking method를 사용하고 있습니다. 다만 ray marching은 volume을 rendering하는 업계 표준이다보니 volume rendering을 학습하기 위해서 ray marching부터 차근차근 학습해나가는 것이 좋을 것 같습니다.

Volume Rendering은 surface rendering만큼 크고 복잡한 주제입니다. Volume rendering도 일반화된 공식을 가지고 있으며 해당 공식은 빛이 고체와 어떻게 interact하는지를 설명합니다. 만약 복잡한 수학 식에 익숙하지 않는 독자가 있다면 이해하는데 꽤 어려울 것 같습니다.

scratchapixel은 항상 ‘bottom-up’식의 접근을 선호하고 해당 강의도 마찬가지로 바로 공식을 이해하기 보다는 먼저 간단한 sphere를 구현하는 코드를 작성하고 그 다음에 하나씩 붙여나가는 방식입니다. 강의 마지막에는 개념을 한번에 정리하는 순서가 있습니다.

Volume rendering이 꽤 방대한 주제이기 때문에 몇강의에 걸쳐서 진행이 됩니다. 이번 introduction에서는 volume rendering과 ray marching의 기초에 대해서 학습을 진행합니다. 그리고 다음 강의에서는 participating media, multiple scattering에 적용되는 rendering volumes, global illumination에 대해서 학습할 예정입니다.

만약 volume rendering에 관심이 있다면 Simulating the Colors of the Sky를 참고해주세요. 하늘도 volume입니다 ^^.

Introduction

일단 처음 2개의 챕터에서는 배경색은 단일색이고 빛의 source가 하나인 상황에서 구가 어떻게 렌더되는지 배우도록 하겠습니다. 이 과정을 통해서 volume이 무엇인지에 대한 직관적 이해를 얻고, 동시에 사용되는 ray marching에 대해서 소개하도록 하겠습니다.

이 챕터에서는 일정한 density의 plain volume을 렌더할 것입니다. volume안에서 생기는 shadow나 density가 다양해 지는 조건들은 일단 무시하고 다음 챕터에서 배우도록 하겠습니다.

volume에 대한 설명이나 volume rendering equation와 같은 배경 설명 보다는 구현한 결과를 통해서 volume rendering을 이해해보도록 하겠습니다.