このレッスンでは、自動車のモデルの移動距離に応じた量だけ車輪を回転させる方法を学びます。
はじめに、車輪の回転の計算に伴う三角関数について考えてみましょう。
円形のオブジェクトの回転量(α)は、円の半径と、角度 α の円弧の長さで決まります。回転量(α)はラジアンで表され、円弧の長さを円の半径で割った値(円弧の長さ/R)と等しくなります。
- 車輪の半径は一定で、この例では 13 単位です。
- 円弧の長さを平らにした距離が、自動車と車輪の移動距離になります。
したがって、車輪の回転量の計算式(円弧の長さ/R)は距離/13 になります。車輪の半径は定数(13 単位)で、移動距離は変数です。
レッスンの準備:
- 前のレッスンの結果を続けて使用するか、
car_rig_02.max
を開きます。
ワールド X 座標で車輪を回転させる:
- パース ビューポートで、Chassis を選択します。
自動車は現在、ワールド X 軸方向を向いています。まず、この座標系を使用して作業を行います。
- 車体オブジェクトを右クリックし、クアッド メニューから[ワイヤ パラメータ](Wire Parameters)を選択します。
- ポップアップ メニューから[変換](Transform)
[位置](Position)
(2 番目の)[XYZ 位置](Position XYZ)
[X 位置](X Position)を選択します。
注: リストの一番上にある最初のアニメーション コントローラは親子関係の「ロック」としての役割を持つため、そのままにします。作業するコントローラを選択するときには必ず、リストの 2 番目のコントローラから、そして上から下の順に選択していくようにしてください。
ラバー バンドが表示され、選択する 2 つのオブジェクトの間にこれから作成されるリンクが示されます。
- 自動車の左前輪(Wheel-FL)をクリックします。
- ポップアップ メニューから[変換](Transform)
[回転](Rotation)
(2 番目の)[オイラー XYZ](Euler XYZ)
[Z 回転](Z Rotation)を選択します。
[パラメータ ワイヤリング #1](Parameter Wiring #1)ダイアログ ボックスが開きます。このダイアログ ボックスで、オブジェクト間の単方向または双方向のコントロール関係を設定します。選択した(相互に影響し合う) 2 つのオブジェクトの位置と回転がハイライト表示されます。
- [パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスで、「コントロール方向」という文字列のすぐ上にある右向きの矢印をクリックします。
これで、Chassis の X 位置によって Wheel-FL の Z 回転がコントロールされるようになります(逆のコントロール関係は設定されません)。
[パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスの右下にある車輪オブジェクトの[式](Expression)パネルを見てください。現在、移動距離として「X_位置」と表示されています。
- 「X_位置」の後に続けて /13 と入力します。
これで、式は「X_位置/13」(移動距離/車輪の半径)になりました。
- [接続](Connect)をクリックします(ダイアログ ボックスはまだ閉じないでください)。
- この時点で、車体を X 軸に沿って動かしてみましょう。
左前輪が回転していないことが分かります。車体と車輪にリスト コントローラを追加しても、リストの最初のコントローラ(親子の「ロック」)がアクティブなままでは車輪は回転しません。2 番目の位置コントローラ(ワイヤリングに使用した位置コントローラ)をアクティブにする必要があります。
- 先ほど自動車のモデルを動かした場合には、Ctrl+Z キーを押して元に戻します。
- 車体が選択されている状態で、
[モーション](Motion)パネル
[PRS パラメータ](PRS Parameters)ロールアウトで下部にある[位置](Position)ボタンをクリックします。
- [位置リスト](Position List)ロールアウトで 2 番目の[XYZ 位置](Position XYZ)コントローラをハイライト表示し、[アクティブ](Active)をクリックします。
- 再度、自動車を X 軸に沿って動かします。
ヒント: 車輪の回転を見やすくするには、フロント ビューポートを使用し、表示モードを [シェーディング](Shaded)(従来のビューポート ドライバを使用する場合は[スムーズ + ハイライト](Smooth + Highlights))に切り替えます。
今度は車輪が適切な速度で回転するはずです。ただし回転の方向が逆になっています。
- [パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスの[式](Expression)パネルで、式の先頭にマイナス記号(-)を追加して[更新](Update)をクリックします。
- 再度、自動車を X 軸に沿って動かして、車輪が正しい方向に回転することを確認します。
- 残りの 3 つの車輪についても同じ手順を繰り返します。
ヒント: 自動車の右側の車輪を選択するには、車体の[X 位置](X Position)を選択した後 H キーを押し、次に[オブジェクトを選択](Pick Object )ダイアログ ボックスを使用して車輪を選択します。
これらの車輪はミラーリングで作成されているため、右側の車輪は式の先頭にマイナス記号を付ける必要はありません(左側の車輪はマイナス記号が必要です)。
-
[パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスを閉じます。
Y 回転用のサブコントローラを追加する:
前の手順では、モデルのワールド X 軸方向の移動距離に応じて車輪の回転をコントロールするコントローラの追加方法を学びました。しかし、自動車を X 軸方向以外に回転させようとすると、車輪の回転が減少したり、場合によっては完全に止まってしまいます。そこで、自動車の Y 方向の移動に対応するコントローラを追加する必要があります。
- トップ ビューポートで Chassis オブジェクトを選択し、フロント バンパーが 12 時の方向を向くように、車体を時計回りに -90 度回転させます。
これで、自動車はワールド Y 軸方向を向きました。今度は、この座標系を使用して作業を行います。
- 自動車の左前側が表示されるように、パース ビューポートを
回転します。
- 自動車を Y 軸に沿って前後に
動かしてみましょう。車輪は回転しないことを確認します。 車輪を回転させるには、自動車の Y 方向の移動をコントロールするアニメーション コントローラを追加する必要があります。これらのコントローラは、既存のコントローラに影響を与えないように、サブコントローラとして追加します。
- 3ds Max ウインドウ左下の MAXScript 領域を右クリックし、[リスナー ウインドウを開く](Open Listener Window)を選択します。
- マクロ レコーダ パネルで、次の行をハイライト表示します。
$.rotation.controller.Available.controller = Euler_XYZ ()
このとき、選択に改行を含めないように注意してください。Ctrl+C キーを押してこの行をメモリにコピーします。
前のレッスンから続けておらず、ラインが[リスナーを開く](Open Listener)ウィンドウに表示されていない場合は、このチュートリアルのテキストからラインをコピーします。
-
[MAXScript リスナー](MAXScript Listener)ウィンドウを閉じてから、左前輪(Wheel-FL)を
選択します。
- MAXScript 入力フィールド(3ds Max ウィンドウ左下にある白いボックス)内をクリックし、Ctrl+Vキーを押してコード行を貼り付けてからEnterキーを押します。
[モーション](Motion)パネル
[PRS パラメータ](PRS Parameters)ロールアウトで[回転](Rotation)ボタンがアクティブになっていることを確認し、次に[回転リスト](Rotation List)ロールアウトで回転リストに新しいサブコントローラが追加されていることを確認します(全部で 3 つあるはずです)。
- 手順 7 を繰り返して、4 番目の回転サブコントローラを追加します。このサブコントローラは、後で使用します。
これで、左前輪に 4 つの[オイラー XYZ](Euler XYZ)トラックが設定されました。
- さらに別の車輪を
選択して手順 7 ~ 9 を繰り返し、4 つの車輪すべての[回転: 回転リスト](rotation lists)に[オイラー XYZ](Euler XYZ)トラックを 4 つずつ設定します。
ワールド Y 座標で車輪を回転させる:
- Chassis を選択して右クリックし、クアッド メニューから[ワイヤ パラメータ](Wire Parameters)を選択します。
- メニューから[変換](Transform)
[位置](Position)
(2 番目の)[XYZ 位置](Position XYZ)
[Y 位置](Y Position)を選択します。
- 左前輪(Wheel-FL)をクリックします。
- メニューから[変換](Transform)
[回転](Rotation)
(3 番目の)[オイラー XYZ](Euler XYZ)
[Z 回転](Z Rotation)を選択します。
- [パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスで、「コントロール方向」という文字列のすぐ上にある右向きの矢印をクリックします。これで、Chassis の Y 位置によって Wheel-FL の Z 回転がコントロールされるようになります。
- 右側の[式](Expression)パネルで、/13 と入力して[接続](Connect)をクリックします。
左側の車輪の式は Y_位置/13 になるようにします。
- [接続](Connect)をクリックします。
- 残りの 3 つの車輪についても、手順 2 ~ 7 を繰り返します。
注: 右側の車輪の式は –Y_位置/13 にしてください。
-
[パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスを閉じます。
- トップ ビューポートで、自動車が斜めを向くように
回転します。
- メイン ツールバーで
([選択して移動](Select And Move))をクリックし、座標系を[ローカル](Local)に設定します。
- 必要であれば、自動車の側面が表示されるようパース ビューポートを調整します。
- 自動車をローカル X 軸に沿って動かします。車輪が正しく回転していることを確認します。
- トップ ビューポートで、フロント バンパーが左を向くように自動車を回転させます。
- ファイルを mycar_rig_03.max と名前をつけて保存します。
パス コンストレイントを使用して車輪を回転させる:
前の手順では、ワールド X および Y 空間の移動距離に応じて車輪を回転させるコントローラの追加方法を学びました。これで、自動車をシーン内のどの方向に動かしても、車輪が正しく回転するようになりました。
しかし、自動車の動きをアニメートする場合は、パス コンストレイントを使用して、あらかじめ定義しておいたパス上に自動車を配置する方がより一般的です。ただし、この方法では別の式が必要になります。
式自体は前の手順で使用したものと同じ(距離/半径)です。また、車輪の半径が定数であることも変わりありません。しかし、移動距離の計算方法が異なります。
- 前の手順の結果を続けて使用するか、
ファイル
car_rig_03.max
を開きます。
- メイン メニュー
[選択セット](Selection Sets)リストから[Car Path]を選択します。
すると、警告メッセージが表示されます。
- [はい](Yes)をクリックすると、自動車の動きのアニメートに使用するパスが表示されます。
- メイン メニューから[作成](Create)
[ヘルパー](Helpers)
[ポイント](Point)を選択します。
- [パラメータ](Parameters)ロールアウトで[ボックス](Box)をオンにし、[サイズ](Size)を 100.0 に設定します。
これで、ヘルパー ギズモのサイズが大きくなり、シーン内で選択しやすくなります。
注: 多くのアニメータは、ポイント ヘルパーではなくダミー ヘルパーを多用しがちです。しかし、ポイント ヘルパーには、スケーリングせずにサイズを調整できるという利点があります。階層でヘルパーをスケールすると、その子オブジェクトに影響します。これは通常は望ましくない結果です。
- トップ ビューポートで自動車の近くをクリックしてポイント ヘルパーを配置します。
- ポイント ヘルパーが選択されたままの状態でメイン ツールバーの
([位置合わせ](Align))をクリックしてから、任意のビューポートで Chassis オブジェクトを選択します。
- [選択の位置合わせ](Align Selection)ダイアログ ボックス
[位置合わせ](Align Position)領域で、[X 位置](X Position)と[Y 位置](Y Position)をオン、[Z 位置](Z position)をオフに設定します。
- [現在のオブジェクト](Current Object)領域と[ターゲット オブジェクト](Target Object)領域で[基点](Pivot)が選択されていることを確認し、[OK]をクリックします。
- フロント ビューポートでポイント ヘルパーを X 軸に沿って右へ移動し、自動車のリア アクセルのすぐ左に配置します。

ポイント ヘルパーをリア アクセルの左横に移動
このポイント ヘルパーの位置が、前輪が回転するときの自動車の基点になります。
- コマンド パネル
[名前とカラー](Name And Color)ロールアウトで、ヘルパーの名前を Dummy_CAR に変更します。
- 任意のビューポートで Chassis を選択します。
- メイン ツールバーで
([選択してリンク](Select And Link))をクリックしてから、フロント ビューポートで Chassis をクリックしてポイント ヘルパーまでドラッグします。これで、車体はポイント ヘルパーの子になりました。
- メイン ツールバーで
([オブジェクトを選択](Select Object))をクリックしてリンク操作を終了します。
- メイン ツールバーの[選択セット](Selection Sets)リストから[Garage_All]を選択します。[はい](Yes)をクリックして警告メッセージを閉じ、残りのシーン ジオメトリを非表示にします。
- トップ ビューポートで、
([全範囲ズーム](Zoom Extents))を使用して駐車場全体を表示します。
- パース ビューポートで[パース](Perspective)ラベルをクリックし、メニューから[カメラ](Cameras)
[Camera_Wall-E]を選択します。
ダミーをパスにコンストレイントしてアニメートする:
- 任意のビューポートで Dummy_CAR ヘルパーを選択します。
- メイン メニューから[アニメーション](Animation)
[コンストレイント](Constraints)
[パス コンストレイント](Path Constraint)を選択します。
- トップ ビューポートで緑色のパス(CarPath)をクリックします。
ヘルパーとヘルパーにリンクされている自動車が、パスの始点に移動します。
注: あるいは、自動車を直接パスにコンストレイントする方法もあります。ただし、この例ではヘルパーを自動車の親にする方法をお勧めします。その方が、急カーブでのスリップなど、自動車の動きをよりコントロールできます。
パスは NURBS カーブです。
ヒント: 通常のスプラインよりも、NURBS カーブをアニメーション パスとして使用した方が、自動車を滑らかに走らせることができます。
- アニメーションをスクラブします。
自動車が常に同じ方向を向いてしまっていることが分かります。
[モーション](Motion)パネル
[パス パラメータ](Path Parameter)ロールアウト
[パス オプション](Path Options)領域で[フォロー](Follow)をオンにします。
- 下へスクロールして、[軸](Axis)領域で[反転](Flip)をオンにします。
[反転](Flip)オプションをオンにすることで、自動車が逆走するのを防ぎます。
- 再度、アニメーションをスクラブします。
自動車はパスに沿って正しい方向を向くようになりましたが、今度は車輪が回転しません。これは、前に作成した車輪の回転を定義する式が当てはまらなくなったためです。前の手順では、自動車の移動距離はワールド座標系の X および Y 方向の変位で求められていました。しかし今回は、パスの長さに応じて、パスの割合で移動距離を算出しなければなりません。この変更を反映するワイヤリングを追加する必要があります。
車輪の回転をパスにワイヤリングする:
- 任意のビューポートでアニメーション パス(CarPath)を選択してから、
[ユーティリティ](Utilities)パネルに切り替えます。
- [計測](Measure)をクリックし、[シェイプ](Shapes)領域でパスの長さを確認します。
- ポイント ヘルパーを選択して右クリックし、メニューから[ワイヤ パラメータ](Wire Parameters)を選択します
- メニューから[変換](Transform)
[位置](Position)
[パス コンストレイント](Path Constraint)
[パーセント](Percent)を選択します。
- いずれかの車輪をクリックし、[変換](Transform)
[回転](Rotation)
4 番目の[オイラー XYZ](Euler Rotation)
[Z 回転](Z Rotation)を選択します。
- [パラメータ ワイヤリング](Parameter Wiring)ダイアログ ボックスでコントロール方向を右向きに設定します。これで、[パーセント](Percent)パラメータによって車輪の回転がコントロールされるようになります。
- 右側の[式](Expression)パネルで (2365*パーセント)/13 と入力します。
注: 数値 2365 は、先ほど計測したアニメーション パスの長さです。この値にパーセント(変数)を掛けることで、特定時点の自動車のパス上での移動距離が求められます。さらに、この移動距離を車輪の半径 13 で割ると、車輪の回転量が算出されます。
- [接続](Connect)をクリックします。
- アニメーションをスクラブして車輪の回転を確認します。
- アニメーションを見やすくするために、
([時間設定](Time Configuration))をクリックし、[時間設定](Time Configuration)ダイアログ ボックス
[時間表示](Time Display)領域で[フレーム : ティック](FRAME:TICKS)を選択します。
- 手順 3 ~ 8 を繰り返して、ポイント ヘルパーを残りの 3 つの車輪すべてにリンクさせます。
車輪が正しい方向に回転するように、右側の車輪の式にはマイナス記号(-)演算子を付けるのを忘れないでください。
- ファイルに mycar_rig_04.max と名前を付けて保存します。