レイトレーシングのすすめ

2020年度から小学校でプログラミング教育が必修になることはご存じでしょうか?
時代の流れとして、プログラミングのニーズが高まっていることを感じます。

しかし、せっかくプログラミングを学習しても、勉強した後に
なにをすればよいかわからない、作りたいものがないといった話を
よく聞きます。

そんな方にお勧めしたいのが、グラフィックスプログラミングです。
例えば、Processingを使ってプログラミングでアートを作るのも良いですし
openCVを使って画像処理を試してもよいでしょう。
近年、流行りの”AI”に触れたければ、GAN(Generative Adversarial Network)なども面白そうです。

これらグラフィックスプログラミングの良いところは、
プログラミングの結果が視覚的にわかりやすいことです。
コードの一部を変えると、どこが変化するのか一目でわかり、
自分の手で作っている、動かしているという実感を得ることができます。

そんなグラフィックスプログラミングの中で私が特にお勧めしたいのが
「レイトレーシング」と呼ばれる技術です。

これは、コンピュータを使って画像を描画する手法のひとつで、
空中の光の動きをプログラムでシミュレーションすることで
現実に近い映像を作り出すことができます。

奥の深い技術ではありますが、初歩的なレイトレーシングの機能であれば
自分の手でいちから実装することも可能です。

例えば、Peter Shirley著の「Ray Tracing in One Weekend」を読めば
C++を使ってレイトレーシングの実装ができるようになります。

CC0ライセンスでネット上に無料で公開されているので
興味を持った方は検索してみてください。