LogoMark.png

3DCG演習/Animation のバックアップソース(No.2)

#author("2023-05-10T12:32:58+09:00;2022-08-30T09:25:13+09:00","default:inoue.ko","inoue.ko")
*第12回 アニメーションの基礎
[[3DCG演習/2023]]|''2023.08.17 -''
~


***解説動画
//#youtube(f6L6BQx1O34)
//-録画済み動画です。再生して視聴してください。
//-以下名簿が表示されます。''既読確認(出欠確認)''をお願いします。
&fontawesome(far fa-hand-point-right); __[[既読確認>]]__
~


***CONTENTS
#contents2_1

~
~
**はじめに
***様々なアニメーションの手法
-キーフレームの設定によるオブジェクトのトランスフォーム
時間の経過とともに''移動、回転、拡縮''などの変化を与えることができます。また「タイヤを回転させながら移動する車」のように、車のボディ(親)の移動とタイヤ(子)の回転を階層化することで、複合的なアニメーションも実現できます。
-パスアニメーション
アニメーションパスにオブジェクトを紐付けすると、パスに沿った移動制御が可能になります。
-オブジェクトの形状変形
以下のような方法で形状の変化をアニメーション化することができます。
--シェイプキー:基本形状と変形パターンを複数設定して制御する
--アーマチュア:不可視の内骨格(スケルトン)を持たせて動きを制御する
--ラティス:不可視の外骨格を持たせて動きを制御する
-様々なプロパティーの変化
アニメーション化できるのは、オブジェクトの動きだけではありません。マテリアルの各種パラメータやライトの輝度、カメラのズームなども変化させることができます。
~

***キーフレーム
アニメーションの基本は「キーフレームの設定」にあります。移動・回転・拡縮あるいは変形、いずれも変化の「節」となるフレーム(時刻)に、その時点でのパラメータを記憶させることで、中間の状態を自動的に補間するかたちで、アニメーションが実現します。

アニメーションの設定作業では、今見ているシーンが何フレーム目であるかを意識する必要があります。現在フレームは、タイムライン上に表示されます。
#image(Blender/CurrentFrame.jpg)
上の図では、現在位置は 30フレーム、キーフレームが 1, 40, 80 にあります。
~

***アニメーションのプレビュー
オブジェクトにキーフレームが設定されている場合、以下の操作でアニメーションをプレビューすることができます。
 キーボード:[SPACE](トグル)
 タイムラインの利用:再生(▶︎)・停止(I I)・頭出し(I◀︎)
~

***アニメーションの設定に使うエディター
-Timeline Editor:初期ワークスペースに表示されています。
-Dope Sheet:タイムラインとほぼ同様です(メニュー構成が異なる)。
-Graph Editor:キー値の変化をグラフで表示します。

尚、いずれのエディタも、画面左端のプルダウンメニュー(>)をクリックすることで、キーフレームの状態を詳細に確認することができます。
~


***アニメーションのレンダリング
アニメーションのアウトプットは当然動画ファイルとなります。以下の方法で、動画ファイルとして出力されます。
 Topbar > Render > Render Animation

出力仕様は、プロパティーエディターの Render Property タブと Output Propertyタブで、必要な項目を設定します。
-Render Property
--Render Engine:Eevee(高速) または Cycles(高画質)

-Output Property
--Format:X 1920, Y 1080 など
--Frame Rate:30 fps など
--Frame Range:開始フレームと終了フレームの間が動画出力されます
デフォルトでは 1 - 250 となっています。
30fps で 15秒 であれば 450フレーム必要なので、1 - 450 となります。
--Output:書き出しディレクトリ、File Format(FFmpeg など)
~
~

**Keyframes
アニメーション制御の大半は、キーフレームを用いて行います。キーフレームとは、当該フレーム(時刻)において実現されるべき、位置、回転角その他のプロパティ(属性値)を保持したフレームのことで、時系列に複数のキーフレームを持たせることで、キーフレーム間のプロパティは自動的に補完されます。
~

***キーフレームの設定
オブジェクトのキーフレームは、キーボードの [ I ] (Insert Keyframe)をプレスして設定します。
 [ I ] Key ( Header Menu > Object > Animation > Insert Keyframe )
#image(Blender/InsertKeyframeMenu.jpg,right,30%)
''3D Viewport 上で対象となるオブジェクトを選択した状態で [ I ] Key をプレス''すると、Insert Keyframe Menu が表示されるので、設定したいプロパティー項目を選択します。
#clear

#image(Blender/InsertKeyframeZoom.jpg,right,30%)
''プロパティーパネル上の対象項目の上にマウスを合わせた状態で [ I ] Key をプレス''すると、その値がキーフレームに記録されます。

右の図は、カメラズームのアニメーションを想定して、カメラの焦点距離 50mm をキーフレームとして設定した事例です。このようなキーフレーム設定によって、あらゆるプロパティを時間軸上で変化させることが可能です。

~

//***キーフレームの自動記録
//#image(Blender/AutoKeying.jpg,right,30%)
//タイムラインヘッダー上にある自動記録ボタンが ON になっていると、プロパティの値が変更された場合に、設定されたフレームにキーフレームを自動的に追加します。
//~

***キーフレームの削除
オブジェクトのキーフレームは、設定時と同様の状態下で、キーボードの [ALT] + [ I ] のプレスで削除できます。
  [ALT] +[ I ] Key ( Header Menu > Object > Animation > Delete Keyframe )
タイムラインやグラフエディタ上では、キーフレームのアイコンを選択して [ x ] あるいは [Delete] で削除することもできます。
~

***Interpolation(内挿)
キーフレーム間のプロパティー値は、自動的に補間(Interpolation)されます。グラフエディタ上では、補間された値の変化がアニメーションカーブとして可視化されます。
#image(Blender/GraphEditor.jpg)
上の図では、Cubeオブジェクトの座標について、XとYの値がそれぞれ変化している様子を見ることができます。

キーフレームの補間には、''定数、線形、2次曲線、ベジエ曲線''などの方法があります。特に、ベジェ補間は、ハンドルのタイプと制御点によってカーブの形が決まります。Illustrator のパスの編集と同様の操作です。
~

***Extrapolation(外挿)
最初のキーフレームの前と最後のキーフレームの後の状態を外挿補間する方法には、''定数(状態キープ)、線形(慣性)、繰り返し''などがあります。
~
~

**Parent & Track

***ペアレント設定
複数のオブジェクトからなる被写体でアニメーションを実現する場合、オブジェクト同士の親子関係を正しく設定する必要があります。
 オブジェクトを 子 → 親の順に選択
 Object > Parent( [CTRL] + [P] ) 
-親を動かす → 子はそれにしたがって動く
-子を動かす → 親の位置から相対的に動く
~

***トラッキング設定
被写体の動きにカメラを追随させたい・・という場合は、カメラを特定の被写体に Track to Constraint します。
 カメラ→被写体の順に選択。
 Object > Track( [CTRL] + [T] )> Track to Constraint  
~
~

**PathAnimation
Curveオブジェクトのひとつである ''Path'' を使うと、オブジェクトをパスに沿って移動させるアニメーションを簡単に実現することができます。

#image(Blender/PathAnimation.jpg,right,30%)
パスとオブジェクトに親子関係(Make Parent)を設定するだけで、パスに紐付けられたオブジェクトは、キーフレームの設定なしにパスの始点から終点まで、パスの形状に沿って移動します。

-上面ビューからモーションパスを配置する
    Add > Curve > Path
-パスの形状を編集する(通常の曲線の編集と同様)
-パスとオブジェクトに親子関係を設定する
 オブジェクト → パスの順に選択
 Object > Parent( [CTRL]+[P] ) > Follow Path
-アニメーションのフレーム数が始点になっていることを確認
-オブジェクト(子)を移動して、パス(親)の始点に合わせる
-アニメーションを再生すると、オブジェクトがパスに沿って移動する様子が確認できるはずです。

#image(Blender/PathAnimation2.jpg,right,30%)
プロパティーエディタ > Object Data Property パネル > Path Animation の項目で、以下のような各種調整が可能です。
-Frames : パスの始点から終点までのフレーム数
-Follow:オブジェクトの向きを進行方向に調整
#clear
~
~

**階層アニメーション
キーフレーム操作の応用事例として、アニメーションの階層化について説明します。例えば、プロペラを回しながら飛ぶヘリコプターを表現するには、以下のような手順でアニメーションを設定します。
-ヘリコプターの胴体(親)に、プロペラ(子)をペアレント設定
-胴体(親)は、シーンの中を(パスに沿って)移動するように設定。
-プロペラ(子)は、ひたすら回転だけを続けるように設定。
&small(プロペラのキーフレームに位置情報が含まれると、親から離れてしまいます。);
~
~
~