クロスのネックレスをモデリングして、ゆらゆらと揺らしてみます。
まずはペンダントトップから。
直方体(cuboid)を2つ交差させて、十字架を作り、表面を少し掘り下げておいてから、ダイヤモンドを埋め込みます。ダイヤモンドは「ラウンドブリリアントカットのダイヤモンド」で作成したモデルを使いまわし。
クロスの上端からチェーンを繋ぎます。「真珠のネックレス」で留め金の近くに使ったチェーンを応用します。「真珠のネックレス」では、まん丸い金属をチェーンに使いましたが、今回は、もう少しチェーンらしい形の金属をモデリングして使います。
CRは円弧部分の大半径(小半径はCR/3に固定)、CDは2つの半円弧間の距離で、データの先頭付近で値をセットしてあります。この形状を交互に90°回転しながら繋いでいくと、チェーンになります。
円弧の部分は、ドーナツの様な丸い形にしようとすると、「数学曲面のモデリング」で作ったトーラスをポリゴンでモデリングすることになってしまいます。今回は比較的細いチェーンを長く使う予定なので、ポリゴンを使うとデータ量が莫大となり、計算時間を増大させてしまうので、「リングが回転しながら倒れる」で作った、断面が正方形のリングを使います。
ディスプレイの方法ですが、壁にフックを立ててて、そこにネックレスのチェーン部分を引っ掛け、ゆらゆらと振り子のように動かすことにします。
フックに引っ掛けたネックレスがゆらゆらと揺れる様に動かします。振り子の運動は、鉛直方向となす角θが単振動するように動くので、三角関数で角度θを変化させれば、それらしく見えるはずです(下図)。
振り子の振れ幅が大きくなってきて、先端の錘を繋ぐ線が「糸」の様にしなる物体だった場合には、単純な単振動とは異なる動きになるみたいですが、小振幅で揺れている間は単振動で近似できます。今回はθmax=4°で振動させるので、単純な単振動で良いでしょう。
周期だけは合わせておかないと不自然に見えてしまいますね。周期Tは、振り子の振れ幅や錘の質量mとは無関係に以下の式で決まります。
ここで、糸の長さl、重力加速度g=9.8[m/s2]です。
今回は2通りの振り子を合成します。
1つ目は、壁にかかったネックレス全体の振り子運動。2つ目は、ペンダントトップがチェーンとつながる部分を支点としてペンダントトップ自体が小さく動く振り子運動です。各々、糸の長さlが異なるので、周期も異なります。
var T1=2*PI*sqrt (CH/1000/9.8); // チェーンの振り子周期
var T2=2*PI*sqrt (7*GR2/1000/9.8); // クロスの振り子周期
:
screwx 4*sind (360*fn/fps/T1), 0,CH,0; // チェーンの振り子運動
screwz 2*sind (360*fn/fps/T2); // クロスの振り子運動
1秒あたりのフレーム数を保持する変数fpsと、現在計算しようとしているフレーム番号fnを使って実時間fn/fps[s]に換算し、周期T1,T2で単振動させています。
完成したデータをリンクしておきます。
Xi-TRACEデータ | cross_necklace.xitr |
こうして、アクセサリなどに組み込んでしまうと、あまりダイヤモンドらしく見えなくなってしまうのがちょっと残念です。「ラウンドブリリアントカットのダイヤモンド」では、我ながら、キラキラと綺麗に輝いて見えたのですが……。今回のダイヤモンドは、金属のスタッズにしか見えない……。