今回はダイヤモンドの指輪をモデリングしてみます。
肝心なダイヤモンドのラウンドブリリアントカットに関しては、「ラウンドブリリアントカットのダイヤモンド」にて作成したデータを使いまわします。あとは、力技で以下の様な物体をモデリングするだけなので、細かい作り方の解説は省略します。
実際のダイヤモンドでは、光の波長による屈折率の違いによって屈折光が分光することにより、ダイヤの煌めきにファイヤと呼ばれる虹色の輝きが加わります。光を波としてではなく、光線(ray)として捉えるレイトレーシングでは、ファイヤの表現はできないので、せめて、リングスタンドを虹色にして反射・屈折光に虹色を付けてみました。
ソースを眺めてみると、いくつか「if (false) {〜}」という記述で無効化してある部分が存在します。ダイヤの指輪でいくつかバリエーションを作ってみたのですが、どれも今一つだったので、一番シンプルなデザインを採用しました。
ダイヤが3つついているタイプ。
リング本体に小さなダイヤが埋め込まれているタイプ(SN=1)。
小さなダイヤが9つ並んでいるタイプ(SN=9)。
大きなダイヤの周りに小さなダイヤが取り囲んでいるタイプ。
「if (true) {〜}」にする組み合わせを変えることで全てレンダリングできますので、お試しください。あっ、リングに小さなダイヤを埋め込むオプションだけは、「if」ではなく、変数SNでコントロールしてました。テキストエディタでサーチして数値を書き換えてみてください。
ダイヤのガードル半径(GR)を基準にして、全てのサイズを決めてしまいました。これだと、「(リングの大きさをそのままで、)ダイヤを大きく/小さくしたい」時に、他のすべてのサイズが連動して変わってしまいます(つまり、相対サイズは変わらない)。一方、ダイヤを支えるツメ(石座)の部分はダイヤサイズに連動して変化する必要があります。本来であれば、リングのサイズを基準にして、そこ(リングサイズ)から→ダイヤサイズ→石座サイズという関連で決めた方が良かったです。
完成したデータと動画です。
Xi-TRACEデータ | diamond_ring.xitr |
金属の属性に、ほんの少しだけ、反射角度のばらつき(option disdeg=5;)を付けてあるので、若干鈍い反射になっています。ただ、計算時間節約の関係でパスレイトレーシングのパス数を×6に抑えてあるので、ノイジィな画像となってしまいました。↑でダウンロードできるデータは、パスレイトレーシングの設定が入っていないので、「鈍い反射」をレンダリングする場合は、パス数の設定が必要です。データ内にコメントで残してありますので、参考にしてみてください(実行時のウインドウでも設定可能です)。