- 直線移動ジョイント
前回モデリングした「ラックとピニオン」にモーションを与えます。
ピニオンの回転 (回転ジョイント)
平歯車としてモデリングしたピニオンについては、
以前と同じ回転ジョイントを使用して以下のようにモーションを与えています。
「冠歯車を動かす」のときと同じで、30フレームで一回転するとしました。
ラックの移動 (直線移動ジョイント)
ラックは、直線的に移動します。
この場合の移動は「直線移動ジョイント」を使用します。
直線移動ジョイントは、始点と終点が与えられた場合に、
ジョイント内に入れた形状を始点から終点に向けて直線的に移動させるジョイントになります。
直線移動ジョイントを配置する前に、移動速度を計算します。
ラックの移動速度を計算
ピニオンは以下の情報が与えられています。
- 歯車の半径 50mm
- 歯車の歯数 18
- 1つの歯の幅は17.3648 mm
- 30フレームで1回転
では、これより1回転での直線的な移動量はどう計算できるでしょうか ?
上画像を見ると、ピニオンが1回転したときの円周が移動量になる、というのが見えてくるかと思います。
ラックの移動量は、「ピニオンの円周/回転」となります。
30フレームでのラックの移動量 = 歯車の半径 * 2 * π
また、ピニオンとラックの隙間も考慮して歯車の半径に+2mm(目分量です)加算して計算することにしました。
30フレームでのラックの移動量 = (歯車の半径+2.0) * 2 * π = 52 * 2 * π = 326.7256
Shade3DでのPythonスクリプトで計算式を書くと以下のようになります。
import math
R = 50.0 # 半径.
margin = 2.0 # マージン.
# 円周の長さ.
d = (R + margin) * 2.0 * math.pi
print d
ラックの移動量は「326.7256 mm/回転 = 326.7256 mm/30フレーム」となりました。
直線移動ジョイントの配置とモーション指定
直線移動ジョイントの配置
直線移動ジョイントは、ツールボックスの「パート」-「ジョイント」-「直線移動」を選択し、図形ウィンドウをドラッグすることで配置します。
この段階ではドラッグ時の長さは明確に指定しなくても問題ありません。
ブラウザでは「直線移動」ジョイントが配置されました。
形状情報ウィンドウの「直線移動ジョイント属性」で「終点」のX値を「始点のX値 + ピニオンの円周の長さ」にします。
「始点」のX値は175.0mmとしているので、「終点」のX値は数値入力で「175+326.7256」と入力しました。
この後、直線移動ジョイント内にラックの形状を入れておきます。
直線移動ジョイントのモーション設定
ブラウザで直線移動ジョイントを選択した状態でモーションウィンドウを表示、
0フレーム目にキーフレームを登録します。
「範囲」チェックボックスはオフにするようにしておきます。
「直線移動」ジョイントのモーションでのキーフレームごとに与える値を+1.0にすると、
直線移動ジョイントの長さ分移動することになります。
マイナス値の場合は逆向きに移動します。
ここでは30フレーム目に-1.0の移動値をキーフレーム登録しました。
モーションを再生すると以下のようになりました。
アニメーション設定で「ステップ値」を0.25としています。
もし、ラックの移動とピニオンの回転でずれがある場合は、
ラックの移動量として計算に使用した、半径に加える隙間の大きさを微調整するようにしてくださいませ。
今回は主に直線移動ジョイントの扱い方について説明しました。
次回は複数の動きを組み合わせた歯車として、スプロケットに入っていきます。