あれからいろいろプログラムを高速化するべく改善してみようとしましたがまだまだ自分のレイトレーシングの技術の足りなくて四苦八苦…
だけど、HSPでこんな綺麗なCGを作れるとは…と改めてレイトレーシングの凄さに痛感しました!
自分のイメージ通りに作れると感動しますよ!
自分で絵が描けなくても、または絵が超絶に下手でもコンピューターに描いてもらえばいいのです!
これぞプログラマーの特権!
なんとプログラム技術を伸ばせば絵の技術も同時にあがると!(ドット絵は含まれないが)
ところで何回かプログラムいじってて気がついたのですが、なぜレイトレーシングと言うと球と地面だけなのか…
グーグルの画像検索でレイトレーシングと検索するとほとんどが球の反射
でも、球しかない世界はつまらなすぎる…
レイトレの描画アルゴリズムを簡単に言うと、視点に入る光線を逆探知して物体との当り判定をし当たってたら反射する前の光線を逆探知…また当り判定に戻る…を繰り返します
物体との当たり判定にはベクトルを使って計算している訳だが、これはつまりベクトルで表現できる図形ならなんでも大丈夫ってことなんじゃ?
私の憶測ですけど
ベクトルで表現できる図形と言えばもうなんでもあり、ただの平面や歪んだ面、当然球も、面を組み合わせれば立体も、そして円柱を曲げて作ったような立体のリングなど…
ただよくあるレイトレでわざわざ球にする意味は確かにあり、有限のポリゴンで表現できない形だしレイトレの特徴を一番良く表現できてる図形だからなのでしょう
が、理論上平面やリングとかもレンダリング可能なはずだと私は思います!
そうと決まれば、早速実験!
平面のベクトル方程式
P=a+sB+tC (大文字がベクトル)
で平面のレンダリングをやってみようと思います!