このレッスンでは、自動車のモデルの移動距離に応じた量だけ車輪を回転させる方法を学びます。
はじめに、車輪の回転の計算に伴う三角関数について考えてみましょう。
円形のオブジェクトの回転量(a)は、円の半径と、角度 a の円弧の長さで決まります。回転量(a)はラジアンで表され、円弧の長さを円の半径で割った値(円弧の長さ/R)と等しくなります。
- 車輪の半径は一定で、この例では 13 単位です。
- 円弧の長さを平らにした距離が、自動車と車輪の移動距離になります。
したがって、車輪の回転量の計算式(円弧の長さ/R)は距離/13 になります。車輪の半径は定数(13 単位)で、移動距離は変数です。
レッスンの準備:
- 前のレッスンの結果を続けて使用するか、
car_rig_02.max を開きます。
ワールド X 座標で車輪を回転させる:
- パースペクティブ ビューポートで車体を選択します。
自動車は現在、ワールド X 軸方向を向いています。まず、この座標系を使用して作業を行います。
- 車体オブジェクトを右クリックし、クアッド メニューから[ワイヤ パラメータ]を選択します。
- メニューから[変換]
[位置]
(2 番目の)[XYZ 位置]
[X 位置]を選択します。
注:リストの一番上にある最初のアニメーション コントローラは親子関係の「ロック」としての役割を持つため、そのままにします。作業するコントローラを選択するときには必ず、リストの 2 番目のコントローラから、そして上から下の順に選択していくようにしてください。
ラバー バンドが表示され、選択する 2 つのオブジェクトの間にこれから作成されるリンクが示されます。
- 自動車の左前輪(Wheel-FL)を選択します。
- メニューから[変換]
[回転]
(2 番目の)[オイラー XYZ]
[Z 回転]を選択します。
[パラメータ ワイヤリング #1]ダイアログ ボックスが開きます。このダイアログ ボックスで、オブジェクト間の単方向または双方向のコントロール関係を設定します。選択した(相互に影響し合う) 2 つのオブジェクトの位置と回転がハイライト表示されます。
- [パラメータ ワイヤリング #1]ダイアログ ボックスで、「コントロール方向」という文字列のすぐ上にある右向きの矢印をクリックします。
これで、Chassis の X 位置によって Wheel-FL の Z 回転がコントロールされるようになります(逆のコントロール関係は設定されません)。
[パラメータ ワイヤリング #1]ダイアログ ボックスの右下にある車輪オブジェクトの[式]パネルを見てください。現在、移動距離として「X_位置」と表示されています。
- 「X_位置」の後に続けて /13 と入力します。
これで、式は「X_位置/13」(移動距離/車輪の半径)になりました。
- [接続]をクリックします(ダイアログ ボックスはまだ閉じないでください)。
- この時点で、車体を X 軸に沿って動かしてみましょう。
左前輪が回転していないことが分かります。車体と車輪にリスト コントローラを追加しても、リストの最初のコントローラ(親子の「ロック」)がアクティブなままでは車輪は回転しません。2 番目の位置コントローラ(ワイヤリングに使用した位置コントローラ)をアクティブにする必要があります。
- 先ほど自動車のモデルを動かした場合には、Ctrl+Z キーを押して元に戻します。
- 車体が選択されている状態で、
[モーション]パネル
[PRS パラメータ]ロールアウトで下部にある[位置]ボタンをクリックします。
- [位置リスト]ロールアウトで 2 番目の[XYZ 位置]コントローラをハイライト表示し、[アクティブ]をクリックします。
- 再度、自動車を X 軸に沿って動かします。
ヒント:車輪の回転を見やすくするには、フロント ビューポートを使用し、表示モードを[スムーズ + ハイライト]に切り替えます。
今度は車輪が適切な速度で回転するはずです。ただし回転の方向が逆になっています。
- [パラメータ ワイヤリング]ダイアログ ボックスの[式]パネルで、式の先頭にマイナス記号(-)を追加して[更新]をクリックします。
- 再度、自動車を X 軸に沿って動かして、車輪が正しい方向に回転することを確認します。
- 残りの 3 つの車輪についても同じ手順を繰り返します。
ヒント:自動車の右側の車輪を選択するには、車体の[X 位置]を選択した後 H キーを押し、次に[オブジェクトを選択]ダイアログ ボックスを使用して車輪を選択します。
これらの車輪はミラーリングで作成されているため、右側の車輪は式の先頭にマイナス記号を付ける必要はありません(左側の車輪はマイナス記号が必要です)。
-
[パラメータ ワイヤリング]ダイアログ ボックスを閉じます。
Y 回転用のサブコントローラを追加する:
前の手順では、モデルのワールド X 軸方向の移動距離に応じて車輪の回転をコントロールするコントローラの追加方法を学びました。しかし、自動車を X 軸方向以外に回転させようとすると、車輪の回転が減少したり、場合によっては完全に止まってしまいます。そこで、自動車の
Y 方向の移動に対応するコントローラを追加する必要があります。
- トップ ビューポートで車体オブジェクトを選択し、フロント バンパーが 12 時の方向を向くように、車体を時計回りに 90 度回転させます。
これで、自動車はワールド Y 軸方向を向きました。今度は、この座標系を使用して作業を行います。
- 自動車の左前側が表示されるように、パースペクティブ ビューポートを
回転します。
- 自動車を Y 軸に沿って前後に
動かしてみましょう。車輪は回転しないことを確認します。
車輪を回転させるには、自動車の Y 方向の移動をコントロールするアニメーション コントローラを追加する必要があります。これらのコントローラは、既存のコントローラに影響を与えないように、サブコントローラとして追加します。
- 3ds Max ウインドウ左下の MAXScript 領域を右クリックし、[リスナー ウインドウを開く]を選択します。
- マクロ レコーダ パネルで、次の行をハイライト表示します。
$.rotation.controller.Available.controller = Euler_XYZ ()
このとき、選択に改行を含めないように注意してください。Ctrl+C キーを押してこの行をメモリにコピーします。
前のレッスンから続けて作業をしていないと、[MAXScript リスナー]ウィンドウにこの行は表示されません。その場合は、このチュートリアルのテキストからこの行をコピーしてください。
-
[MAXScript リスナー]ウィンドウを閉じてから、左前輪(Wheel-FL)を
選択します。
- MAXScript 入力フィールド(3ds Max ウィンドウ左下にある白いボックス)内をクリックし、Ctrl+V キーを押してコード行を貼り付けてから Enter キーを押します。
-
[モーション]パネル
[PRS パラメータ]ロールアウトで[回転]ボタンがアクティブになっていることを確認し、次に[回転リスト]ロールアウトで回転リストに新しいサブコントローラが追加されていることを確認します(全部で 3 つあるはずです)。
- 手順 7 を繰り返して、4 番目の回転サブコントローラを追加します。このサブコントローラは、後で使用します。
これで、左前輪に 4 つの[オイラー XYZ]トラックが設定されました。
- さらに別の車輪を
選択して手順 7 ~ 9 を繰り返し、4 つの車輪すべての[回転: 回転リスト]に[オイラー XYZ]トラックを 4 つずつ設定します。
ワールド Y 座標で車輪を回転させる:
- 車体を選択して右クリックし、クアッド メニューから[ワイヤ パラメータ]を選択します。
- メニューから[変換]
[位置]
(2 番目の)[XYZ 位置]
[Y 位置]を選択します。
- 左前輪(Wheel-FL)を選択します。
- メニューから[変換]
[回転]
(3 番目の)[オイラー XYZ]
[Z 回転]を選択します。
- [パラメータ ワイヤリング]ダイアログ ボックスで、「コントロール方向」という文字列のすぐ上にある右向きの矢印をクリックします。これで、Chassis の Y 位置によって Wheel-FL の Z 回転がコントロールされるようになります。
- 右側の[式]パネルで、/13 と入力して[接続]をクリックします。
左側の車輪の式は Y_位置/13 になるようにします。
- [接続]をクリックします。
- 残りの 3 つの車輪についても、手順 3 ~ 8 を繰り返します。
注:右側の車輪の式は –Y_位置/13 にしてください。
-
[パラメータ ワイヤリング]ダイアログ ボックスを閉じます。
- トップ ビューポートで、自動車が斜めを向くように
回転します。
- メイン ツールバーで
([選択して移動])をクリックし、座標系を[ローカル]に設定します。
- 必要であれば、自動車の側面が表示されるようパースペクティブ ビューポートを調整します。
- 自動車をローカル X 軸に沿って動かします。車輪が正しく回転していることを確認します。
- トップ ビューポートで、フロント バンパーが左を向くように自動車を回転させます。
- ファイルを mycar_rig_03.max と名前をつけて保存します。
パス コンストレイントを使用して車輪を回転させる:
前の手順では、ワールド X および Y 空間の移動距離に応じて車輪を回転させるコントローラの追加方法を学びました。これで、自動車をシーン内のどの方向に動かしても、車輪が正しく回転するようになりました。
しかし、自動車の動きをアニメートする場合は、パス コンストレイントを使用して、あらかじめ定義しておいたパス上に自動車を配置する方がより一般的です。ただし、この方法では別の式が必要になります。
式自体は前の手順で使用したものと同じ(距離/半径)です。また、車輪の半径が定数であることも変わりありません。しかし、移動距離の計算方法が異なります。
- 前の手順の結果を続けて使用するか、
ファイル car_rig_03.max を開きます。
- メイン メニュー
[選択セット]リストから[Car Path]を選択します。
すると、警告メッセージが表示されます。
- [はい]をクリックすると、自動車の動きのアニメートに使用するパスが表示されます。
- メイン メニューから[作成]
[ヘルパー]
[ポイント]を選択します。
- [パラメータ]ロールアウトで[ボックス]をオンにし、[サイズ]を 100.0 に設定します。
これで、ヘルパー ギズモのサイズが大きくなり、シーン内で選択しやすくなります。
注:多くのアニメータは、ポイント ヘルパーではなくダミー ヘルパーを多用しがちです。しかし、ポイント ヘルパーには、スケーリングせずにサイズを調整できるという利点があります。階層でヘルパーをスケールすると、その子オブジェクトに影響します。これは通常は望ましくない結果です。
- トップ ビューポートで自動車の近くをクリックしてポイント ヘルパーを配置します。
- ポイント ヘルパーが選択されたままの状態でメイン ツールバーの
([位置合わせ])をクリックしてから、任意のビューポートで車体を選択します。
- [選択の位置合わせ]ダイアログ ボックス
[位置合わせ]領域で、[X 位置]と[Y 位置]をオン、[Z 位置]をオフに設定します。
- [現在のオブジェクト]領域と[ターゲット オブジェクト]領域で[基点]が選択されていることを確認し、[OK]をクリックします。
- フロント ビューポートでポイント ヘルパーを X 軸に沿って右へ移動し、自動車のリア アクセルのすぐ左に配置します。
このポイント ヘルパーの位置が、前輪が回転するときの自動車の基点になります。
- コマンド パネル
[名前とカラー]ロールアウトで、ヘルパーの名前を Dummy_CAR に変更します。
- 任意のビューポートで車体を選択します。
- メイン ツールバーで
([選択してリンク])をクリックしてから、フロント ビューポートで車体をクリックしてポイント ヘルパーまでドラッグします。これで、車体はポイント ヘルパーの子になりました。
- メイン ツールバーで
([オブジェクトを選択])をクリックしてリンク操作を終了します。
- メイン ツールバーの[選択セット]リストから[Garage_All]を選択します。[はい]をクリックして警告メッセージを閉じ、残りのシーン ジオメトリを非表示にします。
- トップ ビューポートで、
([全範囲ズーム])を使用して駐車場全体を表示します。
- パースペクティブ ビューポートで[パースペクティブ]ラベルをクリックし、メニューから[カメラ]
[Camera_Wall-E]を選択します。
ダミーをパスに拘束してアニメートする:
- 任意のビューポートで Dummy_CAR ヘルパーを選択します。
- メイン メニューから[アニメーション]
[コンストレイント]
[パス コンストレイント]を選択します。
- トップ ビューポートで緑色のパス(CarPath)をクリックします。
ヘルパーとヘルパーにリンクされている自動車が、パスの始点に移動します。
注:あるいは、自動車を直接パスに拘束する方法もあります。ただし、この例ではヘルパーを自動車の親にする方法をお勧めします。その方が、急カーブでのスリップなど、自動車の動きをよりコントロールできます。
- アニメーションをスクラブします。
自動車が常に同じ方向を向いてしまっていることが分かります。
-
[モーション]パネル
[パス パラメータ]ロールアウト
[パス オプション]領域で[フォロー]をオンにします。
- 下へスクロールして、[軸]領域で[フリップ]をオンにします。
[フリップ]オプションをオンにすることで、自動車が逆走するのを防ぎます。
- 再度、アニメーションをスクラブします。
自動車の動きは改善されましたが、最後のフレームの自動車の角度が適切ではありません。このような問題は、NURBS カーブをパスとして使用したときによく起こります。では、この問題を修正していきましょう。
ヒント:通常のスプラインよりも、NURBS カーブをアニメーション パスとして使用した方が、自動車を滑らかに走らせることができます。
- アニメーションの最後のフレーム(フレーム 150)に移動し、ポイント ヘルパーが選択されていることを確認します。
-
([オート キー])をオンにします。
-
[モーション]パネル
[パス パラメータ]ロールアウト
[パス オプション]領域
[パスに沿った %]ボックスに 99.9 と入力し、Enter キーを押します。
-
([オート キー])をオフにして、アニメーションをスクラブします。
自動車はパスに沿って正しい方向を向くようになりましたが、今度は車輪が回転しません。これは、前に作成した車輪の回転を定義する式が当てはまらなくなったためです。前の手順では、自動車の移動距離はワールド座標系の X および Y 方向の変位で求められていました。しかし今回は、パスの長さに応じて、パスの割合で移動距離を算出しなければなりません。したがって、それに合わせて式を修正する必要があります。
車輪の回転をパスにワイヤリングする:
- 任意のビューポートでアニメーション パス(CarPath)を選択してから、
[ユーティリティ]パネルに切り替えます。
- [計測]をクリックし、[シェイプ]領域でパスの長さを確認します。
- ポイント ヘルパーを選択して右クリックし、メニューから[ワイヤ パラメータ]を選択します
- メニューから[変換]
[位置]
[パス コンストレイント]
[パーセント]を選択します。
- いずれかの車輪をクリックし、[変換]
[回転]
4 番目の[オイラー XYZ]
[Z 回転]を選択します。
- [パラメータ ワイヤリング]ダイアログ ボックスでコントロール方向を右向きに設定します。これで、[パーセント]パラメータによって車輪の回転がコントロールされるようになります。
- 右側の[式]パネルで (2365*パーセント)/13 と入力します。
注:数値 2365 は、先ほど計測したアニメーション パスの長さです。この値にパーセント(変数)を掛けることで、特定時点の自動車のパス上での移動距離が求められます。さらに、この移動距離を車輪の半径 13 で割ると、車輪の回転量が算出されます。
- [接続]をクリックします。
- アニメーションをスクラブして車輪の回転を確認します。
- アニメーションを見やすくするために、
([時間設定])をクリックし、[時間設定]ダイアログ ボックス
[時間表示]領域で[フレーム : ティック]を選択します。
- 手順 3 ~ 8 を繰り返して、ポイント ヘルパーを残りの 3 つの車輪すべてにリンクさせます。
車輪が正しい方向に回転するように、右側の車輪の式にはマイナス記号(-)演算子を付けるのを忘れないでください。
- ファイルに mycar_rig_04.max と名前を付けて保存します。