[Home]-[あそびのコラム]-[025]

多面体の内側

1.はじめに

 レイ・トレーシング(ray tracing)というコンピュータグラフィックスの手法があります。とてもリアルな3次元の物体の絵を創り出すことのできる手法で、次のようにして作られます。まずいろいろな3次元の物体の形や大きさや存在する場所をコンピュータに教えておいて、視点とその前に置くスクリーン(絵を描くキャンバス)の場所と大きさを決めます。スクリーンは例えば横640画素×縦400画素だとすると、それぞれの画素1点1点が、なんらかの色と明るさを持っているはずです。この1点1点の色と明るさを決めるために、注目する画素を通って視点に入ってくる光の光線の軌跡を逆にたどっていきます。光線の軌跡は金属のようなものにぶつかれば反射しますし、ガラスのようなものにぶつかれば屈折します。反射や屈折をすれば当然光は弱く(暗く)なりますし、色合いも変わります。

 こうやって光を辿っていくので、計算にはとても時間がかかります。また、最初に配置する全ての物体は3次元的な情報をもっている必要があります。そのため、身の回りのものをちょっとレイ・トレーシングで描いてみる、というのはかなり大変です。インターネット上にはレイ・トレーシングで作られた画像がたくさん公開されていますが、見て感激するようなものというと、かなり時間と手間がかかっていると思われます。

 レイ・トレーシングはとても楽しいのですが、2〜3分で定義できる程度の画像だと、シンプルだしパターンも単純だしであんまり面白くありません。ところが鏡を用いれば、物体の実体は1つであっても、いわゆる合わせ鏡の原理で虚像をどんどん増やすことができます。その最たるものが万華鏡です。例えば下の図は、以前(2002年2月9日)に表紙のひとことでご紹介したものです。これは3角柱が1つと床面とボールを4個定義しただけです。面倒がり屋の私には、とてもありがたい方法です。

万華鏡

万華鏡

 この例では万華鏡で眺めるものを4つの金属のボールにしましたが、例えば床面を何かの写真とかにして鏡筒を動かしてゆくと、とても面白い万華鏡の動画を作ることもできます。


2.多面体

 2次元的な繰り返しパターンを作ったら、次は3次元的な繰り返しパターンを作ってみたくなるものです。まず思いつくのは、普通の直方体の箱の中に入って、上下左右前後の6つの面がすべて鏡だったとしたら、3組の合わせ鏡の効果で無限に広い空間の中にいるように見えるはずです。では、他の形の多面体だったら、中に入ったらどんなふうに見えるんでしょうか? これは全然想像がつきません。とりあえず5つある正多面体のうち、座標の計算が簡単な3つについて、「中に入ってみる」ことにしました。

正四面体:外側 立方体:外側 正八面体:外側
正四面体 立方体 正八面体

 上の図が、今回考える3つの立体です。いずれも稜(辺)は白い細長い円柱で定義し、面は反射率80%の金属という定義にしています。上記の3つの図は、すべて同じ視点から見ています。(正四面体は立方体の8つの頂点のうちの4つを使って定義できます。)

3.立方体

 最初に、一番想像しやすい立方体です。多分ご想像の通り、ジャングルジムのような構造が無限に続いているのが見えます。実際にはもっと大きな画像を生成しているのですが、それをご覧戴いている大きさに縮小して、さらに画像を少し明るく調節して表示しています。

立方体:内側
立方体の内部

 この図では視線の向きを立方体の稜と平行にしていますのでこのようなわかりやすい絵になっていますが、視点の向きを変えて、例えば立方体の一番長い対角線の方向に視線を変えてみると、三角形や六角形のパターンが見えるようになります。

 また、この図では立方体の稜の部分のみのモデルですが、例えば内部に何かを入れると、それが上下左右前後にずうっと写ってとても面白いです。ただし、あんまり大きなものを入れてしまうとその物体によって視界がさえぎられるため、この「無限に広い」感じが損なわれます。

4.正四面体

 次は正四面体です。これも同じくオリジナルの画像を相似比1/4に縮小して、画像を明るくしています。線がたくさんあってよくわからないと思いますが、鏡に映っていない実像は、画面の左右の上端と画面下中央を頂点とする一番大きな逆三角形だけで、あとは全部虚像です。正四面体は空間を充填しませんので、少しずつ角度のずれたたくさん見えます。

正四面体:内側
正四面体の内部

 鏡が4枚と柱が6本あるだけで、こんな複雑で美しい不思議な絵が得られます。これを想像だけで描こうとしても普通は不可能だろうと思います。こういった画像を簡単に見ることができるのもコンピュータ・グラフィックスの威力だと思います。

5.正八面体

 最後に正八面体です。やはり画像縮小して明るくする操作を施しています。正八面体は4組の向かい合う面がそれぞれ平行です。左側の絵は、その向かい合う一組の面を覗き込んだ図です。平行な面の三角形の上下は反対になっていますので、それが次々と写りこんでいっている様子が見えます。三角形の中には小さな三角形がどんどん続いているように見えます。フラクタル図形の「シェルピンスキーの三角形」にちょっと似ています。

正八面体の内側(その1) 正八面体の内側(その2)
正八面体:面方向 正八面体:対角線方向

 右側の絵は、正八面体の対角線方向を見たものです。画面中央が視線を向けている1つの頂点で、そこに集まる4つの面が画面の右上・右下・左上・左下になります。左側の図では3回対称でしたが、この右側の図では4回対称性が見られます。

 この図も、8枚の鏡と12本の柱だけで、こんな複雑で不思議な絵になります。上の2枚の図はいずれも特別な視点から見ていますが、もっと一般的な視点に変えると、さらに不思議な絵が描けます。

 ちなみにこれら多面体の鏡の内部の絵は、反射回数50回を上限として計算させています。私の手持ちの一番速いパソコン(Pentium III 600MHz、メモリ384Mbyte)で計算させると、一番時間がかかった正八面体の場合だと、1024×768画素で30分くらいかかりました。

6.おまけ

 このページでご紹介したレイ・トレーシングのコンピュータグラフィックスは、POV-RAY というフリーソフトを利用しています。POV-RAYをご存知の方でしたら、ここまでの説明で簡単にこれらの画像を作れると思いますが、せっかくですのでソースを公開します。

  • 立方体(inph6.txt)
  • 正四面体(inph4.txt)
  • 正八面体(inph8.txt)
  •  それぞれ思いつきで5分程度で作ったものですので、数字なども全部べた打ちのひどいコードです。視点の位置や視線の方向などを変えるだけで、様々な画像が得られます。また、他のオブジェクトを配置してみると、立体万華鏡のようにも使えます。手間がかからずに思いがけない不思議な絵が得られて、とても楽しめます。お勧めです。

    [戻る]

    [Home]-[あそびのコラム]-[025]
    mailto:hhase@po10.lcv.ne.jp
    2002.03.31 hhase