【ものづくり】鏡面反射スクリプト

Nobunaga Ogee

2007年04月02日 02:35


 Cueさんから、その存在を教えていただき、某忍者氏の助けをかりつつSL Forumsで公開されている鏡面反射スクリプト(http://forums.secondlife.com/showthread.php?t=38165)を入手しました。
 なかなか便利なものだったので、さっそく紹介したいと思います。

 これは、ある1つのプリムをX軸、Y軸、Z軸のいずれかの方向に鏡写しにした形状に変化させるものです。言葉だけでは伝わりにくいので、写真を使って説明しましょう。

 まず鏡の役割を果たすプリムを用意します。カタチはどんなものでも構いません。ここでは解りやすいように青く色づけした立方体を「鏡プリム」にします。この「鏡プリム」に、SL Forumsの該当ページの下側に書かれているスクリプト(ここではmirror copy baseという名称にしてあります)を入れます。


 これで「鏡プリム」が用意できました。次に、「鏡プリム」の横に、鏡写しに変形させたいプリムを置きます。



 このプリムに、SL Forumsの上側に書かれている鏡面反射スクリプトを入れれば、自動的に変形を行ってくれます。今回は元のプリムと比較するため、変形させるプリムをコピーしておきます。

 変形させたいプリムをクリックし、Shiftを押しながらスライドさせてコピー。その後、Ctrl+Zでコピー元と同じ位置まで戻します。



 そして、コピーしたプリムに鏡面反射スクリプトを入れると・・・。



 あっという間に鏡写し終了。変形したプリムは、「鏡プリム」を挟んで等距離の場所まで移動します。形状だけでなく、位置情報も鏡写しにしているんですね。

 ちなみにこのスクリプトは万能ではなく弱点もあります。例えば、リンクされたオブジェクトを一括して鏡面反射させることはできません。複数のプリムで構成されたものを鏡写しにしたい場合は、バラしてから個々のプリムを1つずつ反射させる必要があります。とはいえ、大幅に手間を省略できるうえ、正確に反射させられるのはものづくりをする上で大きな助けになると思います。
 右手パーツを作ってから、それを反射させて左手パーツを作る・・・といったような使い方が考えられますね。

 ちなみに、今回はY軸(緑色の線)方向に反射させましたが、X軸(赤い線)やZ軸(青い線)方向への反射も可能です。
 鏡面反射スクリプトのうち、

vector AXIS = < 0, 0, 1>;

 という行がありますが、この3つの数字が左から<X軸、Y軸、Z軸>を意味しています。
 X軸方向に反射させたい場合は< 1, 0, 0>、Y軸方向に反射させたいなら< 0, 1, 0>といった具合に数字を打ちかえればOKです。あらかじめX軸用、Y軸用、Z軸用の3種類のスクリプトを持っておけば、いちいち数字を打ちかえる手間が省けて楽ですね。

 こんな良いものがあったとは・・・もっとはやくに知っておきたかったなぁ・・・。
ものづくり