kugi's notebook

やったこと、思ったことなどつらつらと書きます

"Ray Tracing in One Weekend"(1週間レイトレ)をやってみた

はじめに

レンダラーの基本を勉強しようと思い、"Ray Tracing"で調べていると、 この"Ray Tracing in One Weekend"が見つかりました。

github.com

題のように、本当に週末に時間を決めて集中して"One Weekend"で取り掛かれたらよかったのでしょうけど、自分の場合はゆっくり2ヶ月ぐらいかけてしまいました...

In One Weekend の他にも

  • The Next Week
  • The Rest Of Your Life

があるようです‼︎

In One Weekend でやったこと

github に PDFがあがっていたのでテキストに沿って進めていきました。 AmazonにはKindle版もあるようです。 また原文を日本語訳してる方もいらっしゃいました。 「Raytracing in One Weekend」を翻訳しました。 - ずっと君のターン

目次は以下のようになっています

  • Chapter0 : Overview
  • Chapter1 : Output an image
  • Chapter2 : The vec3 class
  • Chapter3 : Rays, a simple camera, and background
  • Chapter4 : Adding a sphere
  • Chapter5 : Surface normals and multiple objects
  • Chapter6 : Antialiasing
  • Chapter7 : Diffuse Materials
  • Chapter8 : Metal
  • Chapter9 : Dieletrics
  • Chapter10 : Positionable camera
  • Chapter11 : Defocus Blur
  • Chapter12 : Where next?

扱えるオブジェクトは球のみですが、レイトレーシングを基礎から順を追って学ぶことができ、とてもわかりやすい内容でした。

材質も拡散面だけでなく、金属面や光の屈折を考慮したガラス球なども表現できます。

実装についてはC++で実装されていました。 今回はコードを追っていくだけだったので、 GUIなども設計してみたいなーと思いました

また、1度だけでなく、不安になったらまたこの本に立ち返ってみようと思います

タピオカ

f:id:kugi_masa:20190829215348p:plain
タピオカ(正面)

f:id:kugi_masa:20190829215435p:plain
タピオカ(上から)

茶色おっきな球をミルクティーに、ランダムな位置に生成した黒い球をタピオカに見立てた画像です

かなり雑に作ったのでもう少しそれっぽく作れたような気がしないでもないです

まとめ

やったこと

  • Ray Tracing in One Weekend を(だいぶのばしのばし、時間をかけながら)やってみました
  • タピオカミルクティーを作りました 👈怒られそう

わかったこと

  • 基本は大事。

次やりたいこと

  • GUIから操作できるようにしてみたい
  • Ray Tracing The Next Week