自動車のアニメーション

by Julian MacDonald (勝手日本語訳: ゆんず)

初版執筆: 2002/9 対象: ver. 1.2


自動車をアニメーション化するチュートリアルです。メインパートではアニメーション "car.mpg" の作成に焦点を当て、回転・曲線からの経路(パス)の設定・アニメーショントラックの一般的な使い方を学びます。さらに、自動車のアニメーションの別な切り口も議論します。

回転 - 4つ組・オイラー・ ジンバルの固定

アニメーション: 自動車のモデル

アニメーション: 背景

アニメーション: 経路の設定

アニメーション: タイヤの回転

アニメーション: ヘッドライトの ON/OFF

加速/減速



回転 - 4つ組・オイラー・ ジンバルの固定

アニメーションを始める前に、回転(向き)について、その概念と問題のある領域をいくつか理解する必要があります。回転するオブジェクトは分かりやすいように思えますが、実際はとても複雑です。正しく理解していないと、外見上、異常な効果が起きることがあります。

例から始めてみましょう。そうですね、単純な車軸/タイヤの組み合わせをアニメーションで作るとします。明らかな方法としては、短い円柱2本をタイヤに、細長い円柱を車軸にして、以下の図のように組み合わせます。



ご覧のように、タイヤの親は車軸なので、車軸をどこに置こうとタイヤはそれに従います。

この組み合わせをアニメーション化しましょう。アニメーション → スコアを表示 して3つのオブジェクトを選択、最初の位置と関係(子は親に従う)を設定します。これには、時刻0で アニメーション → 位置を設定 で Position(位置)トラックと Rotation(向き)それぞれでキーフレームを設定します(ほとんどのオブジェクトでは普通、Position トラックと Rotation トラックが最初から割り当てられます。そうでない場合、アニメーション → トラックを追加 → 位置/向き で各オブジェクトにそれぞれを追加する必要があります)。

回転をキーフレームします。タイムメーカーを 1.0 秒に動かします。タイヤを完全に2回転させましょう。明らかにここですることは、車軸を720度回転させてキーフレームすることです。やってみましょう。車軸を選択して オブジェクト → 変形... で変形のダイアログが表示されます。車軸を Z 軸まわりに回転させたいので、関連するボックスに720を入力します。そして アニメーション → 位置を設定 で新規の回転をキーフレームします。おや、スコア上に新規のキーフレームが現れません。どういうことでしょう?

問題はオブジェクトの方向を決める方法にあります。方向性には既成で4つ組系とオイラー系の2つあります。4つ組系は実際の向きをパラメータ化して、それぞれ異なる向きに、それぞれ異なる特有の「値」を持たせます。これはデフォルトの系です。4つ組の問題は、軸それぞれで 180° までの向きしか表現できないことです。なぜなら 180° を越えてしまうと、そのオブジェクトの 向き は特有ではなくなるからです。今回の例では、タイヤの完全な2回転の動作は実は、完全な1回転と同じ向きで、あるいはまったく回転しないかで終了します。4つ組系ではその違いを判別せず同じ物と見なされるので、 AoI では 変更した トラックにキーフレームする、ということを行いません。

その一方でオイラー系では、向きを x, y, z 回転の組み合わせとして保持します。この系の利点は、180° 以上の回転を指定できることです。このため、今回の例で必要なのはオイラー系です。モードを変更するには、車軸オブジェクトの Rotation(回転)トラックをダブルクリックして、トラックオプションのダイアログを表示します。そして「等方性(4つ組)回転」のチェックボックスを OFF にします。そして再び変形させます。今度は アニメーション → 選択トラックに設定 をクリックすると、キーフレームが表示されます。

しかしまだ何かおかしい状態です。タイムメーカーを0から1に動かしても、何も起きないようです。では時刻1秒のキーフレームを選択して、アニメーション → キーフレームを削除 をしてみましょう。そしてタイムメーカーを時刻1秒に置いて車軸を Z 軸で 900° 回転させ(2回転半)、キーフレームします。そしてアニメーションを確かめると、以下のようになるはずです。



何が起きているのでしょう? オイラー回転系の問題は、特定の回転(この場合は Z 軸まわりの 900° 回転)を指定したとき、最終的な向きがその方法では保持されないということです。そうではなく、ほかの X, Y, Z の組み合わせの回転は、同じ方向となる結果で指定されます。時刻1秒のキーフレームをダブルクリックして、以下のダイアログを表示してください。

ご覧のように Z 軸の向きが 900 なのではなく、すべての座標軸に回転が設定されています。同じ終点の向きでの結果であっても、意図とはまるで異なり、ほかの2つの座標軸の回転も補間され、意図とはまるで異なる動作がついてしまっています。これではアニメーションには適しません。

なぜなら回転は可換ではないからです(つまり終点は回転が実行される順番によります)。オイラー系は常に、 Z → X → Y の順番で回転を実行します。このため X 軸や Z 軸まわりの回転をさせる場合、この例のように、 意図どおりの結果が得られないことがあります。

ではどうすればいいのでしょう? 答えは直接的で、うまく動くように回転を設定します(つまり Y 軸まわりに。オイラー系で最後に実行されるので、常に意図どおりの結果となります)。そして Null 基本形状を最上位の親オブジェクト(今のところは車軸)にします。その後 Null の位置と向きを好きなように決めます。実際には Null 自身のための回転キーフレームを設定しているわけではないので、すべて期待どおりに動作します。

やってみましょう。まず時刻1秒のキーフレームを削除します。時刻0秒のキーフレームをダブルクリックして表示されたダイアログで、すべての軸の角度を0にします。車軸・タイヤ系は向きを変え、今行いたい Y 軸で車軸・タイヤ系が回転する形になります。タイムメーカーを時刻1秒に戻して、車軸の Rotation トラックを選択、アニメーション → 選択トラックに設定 でキーフレームを作ります。このキーフレームをダブルクリックして、Y 軸に 720° を入力します(2回転に戻しましょう)。
注意: 先に行った方法(「時刻1に移動、変形で 720° にして、位置を設定」)は使えません。変形ツールの結果は4つ組系で保持されてしまうので。

アニメーションを確かめると、問題ないようです。あとは方向を直すだけです。Null オブジェクトを作成して(オブジェクト → 基本形状の作成 → Null)、車軸の中央に持ってきます。車軸オブジェクトの時刻0でキーフレームを削除します(こうしないと、おかしな方向に飛んでいってしまいます)。オブジェクトリストで車軸とタイヤを Null の下にドラッグして、以下の図のように Null の子にします。



あとは単に Null オブジェクトの向きを変えて、車軸・タイヤ系の向きを目的どおりにするだけです。まずタイムメーカーを時刻0(Null の位置と向きを設定したい開始点)に動かし、Null オブジェクトの向きを通常の方法(オブジェクトの回転のアイコンまたは、トップメニュー → オブジェクト → 変形ツール)で変えます。そして アニメーション → 位置を設定 を選択します。

ようやくできました!


向きの設定は、オブジェクトの系にとって最も自然な方法で行い、その後、動作させる系を Null オブジェクトの子して設定することを覚えておいてください。Null を使うと、位置と向きは好きなように決められます。円柱は基本的に、長軸が Y 軸と平行になるよう配置されます(円柱を描いて、オブジェクトレイアウトですべての軸で向きをゼロにしてみてください。→ その円柱は Y 軸を向いているはずです)。



アニメーション: 自動車のモデル



自動車のモデルに下の図で示します。完璧にはほど遠いですが、これでこのチュートリアルの解説を行うことにします。


この自動車のタイヤはスプラインのトーラス(ドーナツ型)です。スプラインツールをダブルクリックして、形状トーラス にして作成します。以下の図のように、私は厚めで幅のあるタイヤにしてみました。



泥よけは管から作りました。この管は曲線ツールから近似で描いた曲線で作って三角メッシュに変換し、以下の図のように平らにしました。


ヘッドライトは球を単純に平らにしたものです。

自動車のモデルの階層構造を以下の図に示します。


タイヤは関係する車軸の子にしています。ここでの軸は Null オブジェクトで、そのため回転は上記とはわずかに違う形で実行されます。後で解説します。

車軸、泥よけ、ヘッドライトは自動車のボディの子になっていて、ボディは逆に Null オブジェクトの子です。この最上位は後で、自動車をアニメーション化するときに役立ちます。1つ前のセクションでの説明と同じ仕組みで、この Null はオブジェクトの向きを望みの方向に保ちます。

親子関係をすべて正しく構築するため、オブジェクトそれぞれに Position トラックと Rotation トラックがあることを確認しましょう。そしてタイムメーカーを0に動かし、すべてのオブジェクトを選択、アニメーション → 位置を設定 を選びます。


アニメーション: 背景

これは基礎概念をお見せする単純なアニメーションなので、背景は凝ったものではありません。

シーンにある物は基本的に、平らにした直方体(地面)と橋のみです。橋は「前」視点で曲線を使ってその形を描き、押し出しをまず Z 軸で行って幅を持たせ、次に Y 軸方向で行って高さを持たせました。





アニメーション: 経路の設定

ここではアニメーションで自動車が通る経路を定義します。Art of Illusion では、自動車オブジェクトを描いた曲線に従わせるという、とてもすっきりした方法でできます。

まず自動車が通る曲線を描きます。「上」視点で近似曲線ツールを使い、下の左側の図のようなループ曲線を描きます。曲線の描画を終えるには、Enter キーを押すか、最終点をダブルクリックします。自動車が橋を渡るようにするには、オブジェクトリストでこの曲線をダブルクリックして曲線編集機能を呼び出します。橋を見ながら作業するには、曲線の横向きの視点に切り替え、画面 → 表示 → シーン全体 を選びます。作業は基本的に橋の盛り上がり具合に合わせて曲線を持ち上げることです。曲線をきれいに定義するには、橋にかかる部分で曲線を分割(点を複数選択して 曲線 → 分割)する必要があるかもしれません。下の右側の図のようになったら完了です。


定義した曲線に沿って自動車を動かすには、自動車のオブジェクト階層の一番上の Null オブジェクトと曲線を選択して、アニメーション → 曲線からパスを設定... をクリックします。これで以下のようなダイアログが表示されます。

リストから適切なオブジェクトと曲線を選択します(今回の場合それぞれ1個のみ)。

向きは曲線に従う ボックスがチェックされていることを確認します。これで自動車は、曲線に沿っての移動で正しい方向を向きます。

キーフレーム間隔 で自動車の移動速度を、自動・一定速度・一定加速のうちから選べます。今は 一定速度 を選択します。加速は後で調整しましょう。

ダイアログのその下で 曲線の長さ が分かります。次のセクションで使うので、ここをメモしておきます。

その下の入力ボックス一式で、速度・加速度などを指定します。このうちのいくつかにデータを入力すると、AoI はほかのボックスの値を自動で計算・更新します。このアニメーションでは自動車を5秒かけて経路を回らせるので、開始 を0に、終了 を5にします。すると、その下の 速度 ボックスが更新されます。

OK をクリックして決定します。


新規の Position トラック Curve 1 Position と Rotation トラック Curve 1 Rotation が作成されます。特定のキーポイントで AoI は絶対位置と絶対回転の値を計算します。このグラフ曲線は以下の図のようになります。



視点ウインドウを見ながらタイムメーカーをドラッグするか アニメーション → プレビュー... を選択して、自動車の部品すべてが移動することを確認してください。いくつかでうまくいかないことがあるでしょう。自動車の向きや高さがおかしいかもしれません。こんなときは、先に解説した階層構造を使っている場合は簡単に修復できます。タイムメーカーを0に戻し、ボディ オブジェクト(トップの Null オブジェクトではなく)を選択します。そして自動車の高さを適切にして、きちんと地面に着くようにします。必要なら、前を向くよう方向も直します。その後、アニメーション → 位置を設定 でキーフレームを更新します。これで問題解決です。

橋の上での動作で、まだ問題があるかもしれません。タイヤが橋に接しているかよく確認してください。もしそうなっていなければ、一番簡単な解決法は、Curve 1 Position と Curve 1 Rotation トラックを削除することです。必要なら曲線を編集して、もう一度 曲線からパスを設定... を行います。うまくいくまで何度か試すことになるかもしれません(私がそうでした)。



アニメーション: タイヤの回転

自動車の基本的な動作が完成しました。今度はちゃんとタイヤが回転しているかを確かめましょう。それぞれのタイヤの回転は、以下で示すタイヤの周長と等しい移動距離によるはずです。

pi × d

ただし d はタイヤの直径。

直径を測るには、オブジェクトリストでタイヤのひとつを右クリックして、配置... を選択します。一番下の行が、各軸でのタイヤのサイズです。X, Y 値(同じになっているはずです)が直径です。この数字をどこかに書き留めましょう。

タイヤの回転を作るには、タイヤそのものではなく車軸を回転させます。車軸のオブジェクトを選択して、そのアニメーショントラックを表示してください。まず Rotation トラックがオイラー系で設定されていることを確かめてください。これで 180° 以上の回転をアニメーション化できます。これをするには、Rotation トラックそれぞれを順にダブルクリックして、等方性(4つ組)回転を OFF にします。

次の作業は、すべての旅程でタイヤが何度回転するかを計算します。タイヤの回転数は単純に、経路(先のセクションの 曲線からパスを設定... ダイアログでメモしたもの)の長さをタイヤの直径で割った数字です。

1回転はもちろん 360° なので、合計の角度は回転数に 360 をかけたものです。

つまり 角度=360×L/ (pi × d) です(L は曲線の長さ)。

タイムメーカーをアニメーションの最後(5秒)に動かし、両方の車軸の Rotation トラックを選択、アニメーション → 選択トラックに設定 を選びます。これでスコア上のその位置にキーフレームが設定されます。それぞれのキーフレームを順にダブルクリックして、上で計算した 角度Z のボックスに入力します。
ここで、 先に 説明した Y 軸ではなく Z 軸を使っていることにご注目ください。これはトーラスオブジェクトはもとから Z 軸で配置されるからです(トーラスを作って、プロパティ枠で向きを3軸すべてで0にしてみてください。Z 軸を向くはずです)。このため 先に 行ったような、親の車軸オブジェクトを配置し直す必要がありません。

これで完成です。一定速度を扱っているので、必要なキーフレームは2つだけです。しかし、Rotation トラックの平滑方法が 直線 になっていることを確かめましょう。そうなっていなければ、タイヤがスリップしているように見えてしまいます。



アニメーション: ヘッドライトの ON/OFF

アニメーション作りの最後は、ヘッドライトの ON/OFF です。ヘッドライトのオブジェクト自体は、単純に平らにした球オブジェクトで、そのすぐ前にスポットライトを前向きに配置したものです。これを ON にするための作業は2つです。まずスポットライトの強度を0から0以外の値にして(必要な明るさによります。私は5にしました)、光を出します。もうひとつは、ヘッドライトの球のテクスチャを鈍い灰色から明るい黄色に替えて、光を出している感じを出すことです。

スポットライトを先にやりましょう。Pose トラックを使うと、照明のパラメータをどれでもアニメーション化できます。スポットライトを両方選び、アニメーション → トラックを追加 → ポーズ を選択します。それぞれの Pose トラックを順にダブルクリックして、以下の図のようなダイアログを呼び出します。

照明はフェードイン/フェードアウトではなく突然に ON/OFF にしたいので、平滑方法不連続 を選びます。


次はアニメーションでの初期値(OFF)を設定しましょう。タイムメーカーを0に動かし、両方のスポットライトの Pose トラックを選択します。アニメーション → 選択トラックに設定 を選び、キーフレームを作成します。それぞれのキーフレームを順にダブルクリックすると、以下の図のようなダイアログが表示されます。



標準のスポットライトのダイアログに見えますが、この場合は、この時刻点での照明のパラメータのどれでも設定できます。スポットライトの角度減衰率(Falloff Rate) を望ましいように設定しましょう。そして 強度 を0にして照明を消します。

ヘッドライトを点灯したい時刻点にタイムメーカーを持ってきます。そこで先のようにキーフレームを設定してダブルクリック、強度 に5(またはほかの数値)を入力します。ヘッドライトを消灯したい時刻点に再びタイムメーカーを動かし、キーフレームして 強度 を0に戻します。スポットライトの曲線は以下のようになります。(訳注: 訳者の環境 ver. 2.9.1 for Mac ではなぜか、図のとおりにしても 1.0 秒でヘッドライトが消灯しませんでした。その直後で新たにキーフレームして強度0に再設定したらうまくいきました)



次はヘッドライトのオブジェクトのテクスチャです。テクスチャの時間変化には テクスチャパラメータ アニメーショントラックを使います。まずパラメータを含んだテクスチャを設定する必要があります。これで時間とともに求める効果を替えられます。私が作ったものはこれです。

ここでのパラメータ名は「ヘッドライト ON」で、ヘッドライトが OFF のとき0、ON のとき1になります。

このパラメータは2つの簡単な「テクスチャ」(「ヘッドライト ON」が0のときは鈍い灰色、1のときは黄色い発光テクスチャ)を切り替えるのに使います。

このパラメータは単純に、2つの色倍率モジュール(1つは間接的に)での倍率要素として使われます。「ヘッドライト ON」が1に等しいとき、黄色の倍率要素が1となり、灰色(数式 1-ヘッドライト ON で与えられる)の倍率要素は0となります。その逆では逆に作用します。2つの色は加算モジュールで単純に加算され、1つの出力が拡散反射色プロパティボロックスに接続されます。また黄色は発光色ボックスにもつながれ、発光効果も作ります。




通常の方法で、このテクスチャをヘッドライトのオブジェクトに割り当てます。

ヘッドライトのオブジェクトにテクスチャパラメータアニメーショントラックを追加する必要があります。両方のオブジェクトを選択して、アニメーション → トラックを追加 → テクスチャ を選びます。スコア上の Texture トラックをダブルクリックして、以下の図のダイアログを呼び出します。

ダイアログの一番上で名前と 平滑方法 を設定できます。スポットライトと同じように、このテクスチャを瞬間的に変えたいので、不連続 を選択します。

ダイアログの下のほうには、使用できるテクスチャパラメータがリスト表示されます。今回は「ヘッドライト ON」のみです。これを選択して OK をクリックしましょう。

時刻0で、Texture トラックそれぞれのヘッドライトについてキーフレームを設定します。このキーフレームをダブルクリックして、以下のダイアログを表示してください。ここで、前もってトラックのオブションで選択しておいたパラメータすべての値を設定できます。今回の場合、「ヘッドライト ON」の値を0にします。





ヘッドライトを点灯したい位置にタイムメーカーを動かします。そこでキーフレームを作り、「ヘッドライト ON」の値を1にします。最後に、ヘッドライトを消灯したい位置に移動、新規のキーフレームを設定して、「ヘッドライト ON」の値を再び0にします。(訳注: ヘッドライトのときと同じく、作者の環境ではチュートリアルのとおりに設定しても消灯されませんでした。設定の消灯の少し後ろで新たにキーフレームして、パラメータを0にしたらうまくいきました)



加速/減速


加速と減速は、自動車の動作で明らかに重要な部分です。ここではそれを扱います。

あらかじめ定義した経路に沿っての基本的な加速/減速の場合、とても簡単に設定できます。単に曲線で経路を描き、その曲線と自動車オブジェクトのトップの Null オブジェクトを選択して、アニメーション → 曲線からパスを設定... を選びます。先に使った 一定速度 ではなく、今回は 一定加速 にします。そして 時間・速度・加速のボックスに適切な値を入力します。先のように、入力フィールドにデータを入力すると、ほかの値は自動計算されます。初速と加速はメモを取っておきましょう。

これで自動車のボディ自体は終わりました。もちろんタイヤの回転も直さなければなりません。このような真っすぐな加速では、一番すっきりした方法は手続き Rotation トラックを使うことです。これでフレームごとにタイヤの回転を計算します。

車軸オブジェクトに アニメーション → トラックを追加 → 向き → 手続き でこのトラックを追加します。時間 t で自動車が移動する距離 S は、以下で与えられます。

S = ut + 0.5 × a × t2 u は初速、a は加速。

ゆえにタイヤの回転数は n = S/(pi × d)

回転角の総計は A = n × 360°

i.e. A = (ut + 0.5 x a x t2)/(pi x d) x 360 degrees - (1)

スコアのリスト上で手続きトラックをダブルクリックして、手続き編集機能を表示します。ウインドウ左側のリストから 関数 → 式 で式を追加してダブルクリックしてください。式 (1) をボックスに入力します。このとき Sa は、先に 曲線からパスを設定... ダイアログでメモを取っておいた値を置き換えます。


1つのトラックで異なる加速/減速を含む複雑な動作では、異なる方法が必要です(この場合に役立つ提案をくれた Peter Eastman に感謝)。以前のように経路を描くところから始め、曲線からパスを設定... ツールを使います。この段階では一定速度にします。これで先に見たようなキーフレームが1組できます。今度は車軸オブジェクトを選択して、曲線-自動車トラック(訳注: 自動車の Null オブジェクトのトラックのこと)に一致する最終フレームをキーフレームします。最後のキーフレームをダブルクリックして、Rotation(=(速度×時間)/(π×d)×360)として適切な値を入力します。ここまでは、上で既に行ったアニメーションと同じです。

曲線-自動車トラックに一致する車軸の Rotation トラックに、新規のキーフレームを作成します。AoI はそのキーフレームで回転を正しく補間します。スコアの曲線を見てみると、線形の関係ができているでしょう。そうなっていなければ、キーフレームを正しい場所にドラッグしてください。もし曲線-自動車の Position トラックのすべてのフレームで、曲線-自動車の Rotation トラックのようなキーフレームがなければ、ここでもキーフレームする必要があります。結局、曲線-自動車の Position と Rotation と車軸の Rotation トラックで、以下の図のようにキーフレーム位置を合わせなければなりません。



あとはキーフレームをドラッグするだけです。上で選択したすべてのトラックのキーフレームをドラッグすることは重要です。例えば自動車を加速する場合、特定のフレームですべてのトラックのキーフレームを選択して、左にドラッグします。なぜなら、キーフレームの初期の位置は一定速度を、キーフレームの間を詰めれば加速を、間をあければ減速を表すからです。車軸のキーフレームを自動車に同調させれば、タイヤの適正な量での回転が保証されます。


Art Of Illusion 文書 に戻る