今まで、いくつか万華鏡をモチーフにしたデータを作ってきました(以下)。
これまでの万華鏡は、実際の万華鏡と同様に、三角柱の側面部分に鏡を使ったものでした。今回は、万華鏡を立体化するに当たり、三角柱ではなく、正多面体を使います。
もはや、正多面体を使った万華鏡なんて、見たことも聞いたこともないし、ましては、その中に入り込んで、ぐるっと回りを見まわそうというので、もはや、どの多面体を使うのが良いのか、予想が付きません。
とりあえず、正多面体と呼ばれる物体は、全部で5種類しかありません。……詳細に関しては「正多面体」を参照してください。
上段左から順に、正四面体、正六面体(立方体)、正八面体、下段左から、正十二面体、正二十面体の5種類です。
ひとまず、全部やってみましょう。以下、鏡を定義する部分の抜粋です。
attr 万華鏡=
{
refl 0.90,0,0.2;
};
not
{
tetrahedron 0,0,0, R; // 正四面体
//cuboid 0,0,0, R; // 正六面体
//octahedron 0,0,0, R; // 正八面体
//dodecahedron 0,0,0, R; // 正十二面体
//icosahedron 0,0,0, R; // 正二十面体
}
ここで作った多面体は、通常、中身が詰まっているのですが、万華鏡では、その内側に視点が入り込むので、not命令で括って、中身の詰まった側を反転する必要があります。
if命令等で切り替えられるようにはしていないので、使いたい多面体に合わせてコメントを調整してください。
各々、静止画のレイトレーシングを実行してみました。各画像は、「YouTubeの360度動画を生成する」などで解説した正距円筒図法となっています(下図、再掲)。
ちょっと、上の画像では小さすぎて解り難いのですが、個人的には、これが一番「万華鏡」的な特徴が出ていると思いました。
こちらは、ちょっと「万華鏡」とは違うけど、「合わせ鏡」の無限に続く様子を観測できます。
こちらの2種類は、さすがに鏡の数(面数)が増えてきて、複雑な映り込みを繰り返した結果、何らかの規則には乗っかっているのだろうけど、カオスな感じになって、「宇宙の星」を見ている様な感覚になります。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | kaleidoscope_vr.xitr |
2) | Xi-TRACEライブラリ | kaleidoscope_vr.lib |
1)でレイトレーシングを実行します。2)は1)から読み込んで使用しますので、1)と同じディレクトリに格納してください。
一番「万華鏡」っぽい正四面体バージョンと、「合わせ鏡」の面白さが観測できる正八面体バージョンを360°+ステレオ3DのVR動画に起こしてみました。
まず、正四面体バージョンが以下です。
次に、正八面体バージョンが以下です。
360°ステレオ3DのVR動画になっているので、スマホ+カードボードでの視聴を推奨します。ただし、例えばPCなど、ステレオ3D環境が無くても、ちゃんと360°VR動画としての視聴は可能ですので、マウスなどで画面(やコントロール)をつかんで、グルグルと周りを眺めてみてください。
スマホ+カードボードについては、「YouTubeのCardboardで360度3D動画を鑑賞する」にて解説済みです。