Appearance
수면의 표현(2)~동적인 잔물결
[칼럼 핵심 요약]
움직이는 잔물결을 노멀 맵을 움직여 표현하고 있던 것을 동적인 것으로 하기 위해서는, 요컨대 노멀 맵 자체를 동적 생성하면 된다. 노멀 맵의 생성은 요철을 농담으로 표현한 하이트 맵으로부터 생성하면 된다.🌐 원문 링크: 水面の表現(2)~動的なさざ波 (Mynavi News)
📅 원문 발행일: 2009-03-06 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)
NOTE
💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)
- 본 칼럼에서 다루는 핵심 렌더링 기법은 현대 실시간 렌더링 엔진(DirectX 12, Vulkan, Unreal Engine, Unity)의 기초 이론을 구성하고 있으며, 최신 하드웨어 가속 기법 및 컴퓨트 셰이더와 결합하여 고도화되었습니다.
📖 본문 해설
[원문 리드문] > 움직이는 잔물결을 노멀 맵을 움직여 표현하고 있던 것을 동적인 것으로 하기 위해서는, 요컨대 노멀 맵 자체를 동적 생성하면 된다. 노멀 맵의 생성은 요철을 농담으로 표현한 하이트 맵으로부터 생성하면 된다.
베를리 적분을 통한 풀 인터랙티브 동적 잔물결
움직이는 잔물결을 노멀 맵을 움직여 표현하고 있던 것을 동적인 것으로 하기 위해서는, 요컨대 노멀 맵 자체를 동적 생성하면 된다.
노멀 맵의 생성은 요철을 농담으로 표현한 하이트 맵으로부터 생성하면 되는 것은, 이 연재의 「노멀 맵」의 회에서 소개했다. 그렇다면, 잔물결이되는 요철을 표현하는 하이트 맵을 어떠한 방법으로 생성하고,이 하이트 맵으로부터 노멀 맵을 생성하면 된다고 하는 방침이 보인다.
이 잔물결의 하이트맵 생성에는, 어떠한 동적인 파동 시뮬레이션을 실시할 필요가 있는 것이지만, 현재도 자주 보이는 것이 베를레 적분법(Verlet Intergration)이다.
베를레 적분은 이전 상태와 현재 상태의 차이 정보로부터 속도를 산출하여 다음 상태를 구하는 이산적인 적분 방법으로 GPU가 텍스처에 대해 실행시키는 연산 모델에 매우 적합하기 때문에 자주 사용된다.
「어떤 잔물결을 일으킬까」라는 테마에 대해서도 여러가지 이론이나 아이디어가 있지만, 주파수가 높은 세세한 잔물결은 복수의 동심원형의 파문을 다수 발생시키는 수법이 자주 이용되는 것 같다.
베를리 적분을 매 프레임(또는 매 프레임이 아니어도 정기적인 프레임 간격으로), 반복함으로써, 다음 상태의 하이트맵(≒다음 상태의 잔물결)이 구해진다.
이 수면에 대해, 다른 캐릭터가 간섭을 미치거나, 무언가를 던지거나 하는 것 같은 간섭이 있었을 경우는, 거기에 새로운 파의 "종"을 하이트맵 텍스처에 대해 그려 넣으면 된다. 그리고, 다음의 상태는 베를레 적분을 실시하는 것으로 자동적으로 구해져 버린다.
이 방법의 동적 잔물결을 실시간으로 구현하여 널리 공개한 것은 NVIDIA의 GeForce 4 Ti 시리즈용 데모 'Tidepool'이었다. (계속)
NVIDIA의 GeForce 4 Ti 시리즈용 데모 「Tidepool」(2002)보다. 데모는 NVIDIA 사이트에서 다운로드 할 수 있습니다.
(트라이Z 니시카와 젠지)