UMU今まで、1回目、2回目、と、ことなる実装方法でメタボールを実装しましたが、また違った手法がありました。そこで実装してみたいと思います。1回目は、かなり有名なMC法を元にした方法で、ラスタライザで表示をしました。2回目は、レイトレーシングのために、MC法とは異なる手法で実装するために、BezierClipping法を使って計算しました。Tracing法を使って実装してみました。Tracing法は、レイトレーシングを実装する方法の一つですが、SphereTracing法で使われる距離関数を上手く設計することで、メタボールなどの物体同士のなめらかな結合を表現することができます。以下、動画版(Youtube)です。ベジエクリッピングによるメタボールの実装をしました。メタボールの混合密度関数の等値面上の解をベジエクリッピング法で求めています。この方法では以前の方法のようなメタボールをマーチングキューブ法でポリゴン近似する必要がないというメリットがあります。ここでは3つのメタボールがいい感じに融合してますね。画像の床部分と大きな球が拡散反射の材質を持っている。色付き球と床の接触部分付近や大きな球に、色が写り込んでいるのがわかりますね。UMU慶応大学は、春季休校に入りました。期末試験が終わり開放感を感じる中、自分のまだ知らないことを色々勉強していかなければならないと思いました。いえ、テスト終わりすぐに難しい本やらを読むのは気が引けるので、きばらしとして簡単なレイトレーシングを実装してみることにした。ライブラリに頼るのは本末転倒であるので、今回は何もライブラリを使わずに1からやってみようと思った。(しばりプレイ)・やること簡単なレイトレーシングをする。外部ライブラリは一切使わない。基礎ライブラリも使いません)使えるものはVisualStudio(C++)で標準的に使えるもののみ。床だけは赤い床で、上からの平行光源と、光を鏡反射する球3つと床のみで構成。見ると、何度も光が反射することによってできる跡が伺える。(床からの反射がわかりやすい)図形はこのような配置にしている。注:実際はもっと床が下にある。UMUこの動画をみてほしいwこれ、草いっぱいあるよねwwでも、衝撃の事実をお伝えします。実は、これ、動画全体で1枚のポリゴンしかないんです。ポリゴンの一点の色を決めるときに、擬似的にレイトレーシングを行い、立体的に見せているというわけです(下図参考)。UMUきれいなノイズを作る。▲きれいなノイズ画像かっこ良い。汚い画像は、輝度(u)をピクセルごとにランダムにしている。きれいな画像は、一定区間ごとの輝度勾配(du/dx)をランダムにしている。