LogoMark.png

3DCG演習/Animation のバックアップの現在との差分(No.1)


#author("2022-08-30T09:25:13+09:00","default:inoue.ko","inoue.ko")
*第12回 アニメーションの基礎
[[3DCG演習/2022]]|''2022.08.30 -''
#author("2023-08-24T10:01:11+09:00","default:inoue.ko","inoue.ko")
*事後講義 アニメーション
[[3DCG演習>3DCG演習/2023]]|情報デザイン専攻2年 選択(集中)
~


***解説動画
#youtube(f6L6BQx1O34)
-録画済み動画です。再生して視聴してください。
***ガイダンス動画
#youtube(KKRAOaWleSk)
//https://youtu.be/KKRAOaWleSk
//録画済み動画です。再生して視聴してください。
-以下名簿が表示されます。''既読確認(出欠確認)''をお願いします。
&fontawesome(far fa-hand-point-right); __[[既読確認>https://docs.google.com/spreadsheets/d/1lpnwY25De5WG7l72sVfHjIFK40BYKqaKcvbH0ZK0SfU/edit?usp=sharing]]__
&fontawesome(far fa-hand-point-right); __[[既読確認>https://docs.google.com/spreadsheets/d/1bHOlJOdW0smlLna-qBEhkQ2U6DlnGgp3mGaBuaLP2ZA/edit?usp=sharing]]__
~


***CONTENTS
#contents2_1

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

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

アニメーションの設定作業では、今見ているシーンが何フレーム目であるかを意識する必要があります。現在フレームは、タイムライン上に表示されます。
#image(Blender/CurrentFrame.jpg)
上の図では、現在位置は 30フレーム、キーフレームが 1, 40, 80 にあります。
**アニメーション
3DCGツール では、オブジェクト全体の座標・形状、またカメラ、マテリアル、ライト、ワールドなどのプロパティーを、時間経過ととも変化させるかたちで、様々なアニメーションを実現することができます。
~

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

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

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


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

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

-Output Property
--Format:X 1920, Y 1080 など
--Frame Rate:30 fps など
--Frame Range:開始フレームと終了フレームの間が動画出力されます
デフォルトでは 1 - 250 となっています。
30fps で 15秒 であれば 450フレーム必要なので、1 - 450 となります。
--Output:書き出しディレクトリ、File Format(FFmpeg など)
--''Output:書き出し場所'' &color(red){''← レンダリング前に必ず確認して下さい''};、
--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
***キーフレーム
|25|25|25|25|c
|#youtube(mCiApvdCFH8)|#youtube(u14rFUuV7us)|#youtube(u2gzuwQGgZw)|#youtube(wXgFlPNgpMA)|
|移動・回転・拡縮|キーフレームの編集|マテリアル|カメラ・照明|
&small(それぞれ「YouTubeで見る」として大きな画面で視聴して下さい。);

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

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

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

//***キーフレームの自動記録
//#image(Blender/AutoKeying.jpg,right,30%)
//タイムラインヘッダー上にある自動記録ボタンが ON になっていると、プロパティの値が変更された場合に、設定されたフレームにキーフレームを自動的に追加します。
//~
***Parent /  TrackTo / パスアニメーション
|33|33|33|c
|#youtube(Rl4LKiR4F2I)|#youtube(4DAjlsgw174)|#youtube(yAPFnkGjhUM)|
|親子関係の設定|パスアニメーション|階層化|
&small(それぞれ「YouTubeで見る」として大きな画面で視聴して下さい。);

***キーフレームの削除
オブジェクトのキーフレームは、設定時と同様の状態下で、キーボードの [ALT] + [ I ] のプレスで削除できます。
  [ALT] +[ I ] Key ( Header Menu > Object > Animation > Delete Keyframe )
タイムラインやグラフエディタ上では、キーフレームのアイコンを選択して [ x ] あるいは [Delete] で削除することもできます。
~
オブジェクトやカメラの動きを設定する際は、オブジェクト間の親子関係の設定や、カメラのターゲットロック、パスに沿わせて移動させるなど、主従関係を正しく持たせることが必要になります。例えば、プロペラを回しながらパスに沿って飛ぶヘリコプター・・には、以下のような設定となります。

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

キーフレームの補間には、''定数、線形、2次曲線、ベジエ曲線''などの方法があります。特に、ベジェ補間は、ハンドルのタイプと制御点によってカーブの形が決まります。Illustrator のパスの編集と同様の操作です。
-回転のみを継続けるプロペラ部分の設定( Rotation のみを記録)
-プロペラ(子)をヘリコプターの機体(親)に対して、ペアレント設定
-機体(親)が、パスに沿って移動するように、Follow Path を設定
~
~

***Extrapolation(外挿)
最初のキーフレームの前と最後のキーフレームの後の状態を外挿補間する方法には、''定数(状態キープ)、線形(慣性)、繰り返し''などがあります。
**課題3 Another World 
シンプルなオブジェクトの移動・回転・拡縮、色や光の変化、パスアニメーションなど、形式は自由です。実写とは異なる 3DCGならではの表現の可能性を模索してください。
-参考 : [[YouTube: 3DCG Animation]]
~
~

**Parent & Track

***ペアレント設定
複数のオブジェクトからなる被写体でアニメーションを実現する場合、オブジェクト同士の親子関係を正しく設定する必要があります。
 オブジェクトを 子 → 親の順に選択
 Object > Parent( [CTRL] + [P] ) 
-親を動かす → 子はそれにしたがって動く
-子を動かす → 親の位置から相対的に動く
***提出仕様
-画面サイズ:自由(最小 640px幅)
-時間:10秒以上(10 s  x  24 fps  =  240 frame 以上)
&color(red){レンダリングに要する時間は、[ 静止画のレンダリング時間 X フレーム数 ] となります。反射・透明等の再現を Cyclesエンジンで行うと、相当な時間がかかる・・とお考えください。この演習を事後講義としたのは、レンダリング時間の問題があったためです。};
-音声:自由(基本的に無音でも構いません)
-提出形式:YouTube にアップした上で、[[個々のページhttps://design.kyusan-u.ac.jp/socialdesign/?3DCG%E6%BC%94%E7%BF%92]]に埋め込み掲載
--演習3として、作品タイトルとコメントを記載して下さい。
--無音の場合は、掲載動画の直下に「この作品には音声はありません」などと、無音であることを注記してください。
-提出締切:9月30日(課題1、2の最終提出も同日最終締)
~

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

**PathAnimation
Curveオブジェクトのひとつである ''Path'' を使うと、オブジェクトをパスに沿って移動させるアニメーションを簡単に実現することができます。
**APPENDIX
今回の説明内容の詳細は、以下のページに記載しています。動画を見るより読む方が早い・・という方は、以下をご覧下さい。
> __[[Blender/Animation]]__

#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(プロペラのキーフレームに位置情報が含まれると、親から離れてしまいます。);
~
~
~