前回は頂点マップを使ったクロスシミュレーションのコントロールを作ったところまででした.
今回は簡単なループアニメーションを作っていきますが,そのためにベースとなるセットを用意しています.この状態から作成していきます.
シーンの内容は次のようになっています.いろいろとオブジェクトがありますが,重要なのは前回と同じ設定になっているクロスタグが付いているトーラスと,頂点マップ用の線形フィールドがある点です.
Youtube動画も参考にどうぞ
もし気に入ったらチャンネル登録,いいねを頂けると嬉しいです.
作成するアニメーション
今回作成するアニメーションの流れは次のようになります.
トーラスがY方向に上昇する
トーラスが線形フィールドに入ることで頂点マップが記録される
- 頂点マップによりクロスシミュレーションが始まり,プラス方向の重力(プロジェクト設定で設定します)に従って上に飛び去っていく
というようなものです.

単純に考えればトーラスに対してキーを記録しても良いのですが,今回は台座となるオブジェクトを上に移動させ,それによりトーラスを線形フィールドに入れます.トーラスが飛び立った後に,台座は元の位置に戻します.何かの装置のような動きを1つ加えるということです.ただ,ここではこの装置についての整合性といったようなことは特に考えません.ただただ台座が上下運動を繰り返すだけです.
台座のオブジェクトを動かす
ここではトーラスに直接キーを記録せず,親オブジェクトにあたる「Anim Object」というヌルに対してキーを記録していきます.親オブジェクトを動かすことで子オブジェクトも動かすことができるからです.なぜこのようにするかというと,例えばトーラスを別のプリミティブオブジェクトなどに置き換えたとしたら,トーラスにキーを記録していると別のオブジェクトにもう一度キーを記録する手間が発生してしまいます.親オブジェクトにキーがある場合は,子オブジェクトを入れ替えるだけで済みます.小さな手間ですが,色々な形状やオブジェクトをあれこれ試していくと小さな手間も意外と面倒になってきますから,なるべく変更に強いシーン設計をしていくように考えていく癖をつけると良いと思います.
それでは,タイムラインを「0」フレームに移動させます.「Anim Object」を選択し,「座標」タブを開き,
「P.Y」…「-200㎝」
でキーを記録します.
続いてタイムラインを「60」フレーム目に移動させて,
「P.Y」…「20㎝」
でキーを記録します.

続いて タイムラインを「70」フレーム目に移動させ,
「P.Y」…「0㎝」
でキーを記録します.

さらにタイムラインを「90」フレーム目に移動させ,
「P.Y」…「0㎝」
でもう一度キーを記録します.

最後にタイムラインを「120」フレーム目に移動させ,
「P.Y」…「-200㎝」
でキーを記録します.一番最初の位置と同じですね.

アニメーションとしては徐々に上昇し,頂点に到達したら反動で少し下がり停止後,最初の位置へ戻るという流れになります.大きな問題はないですが,モーションを調整するとしたらFカーブを以下のように調整してみても良いでしょう.

Fカーブを調整したい場合は,タイムラインを開き(Shift + F3),Tabキーを押してFカーブモードにします.目的のキーを選択し接線を調整します.
アニメーションを再生させるとすでにこれでループアニメーションが完成していることになります.ただ,カメラアングルは調整してごまかさないといけません.

親オブジェクトにキーを記録したことで子オブジェクトにはキーを記録せずに色々な形状,オブジェクトで試すことができます.

クロスシミュレーションのキャッシュをとる
クロスシミュレーションをはじめとした物理シミュレーションや前フレームの状態が次のフレームの状態を決めるような機能を使っている場合はタイムラインを適当に動かすとアニメーションが正しく再生されないことが分かります.
それらの機能を使う場合にはレンダリング前にキャッシュを取っておくようにしましょう.
クロスタグを選択し,「キャッシュ」タグを開き「キャッシュを計算」ボタンを実行します.

キャッシュ計算が終わると「キャッシュモード」が「オン」になります.また,キャッシュを使っているときはシミュレーション結果が事前にオブジェクト形状に記録されるため,タイムラインを適当に動かしてもアニメーションが壊れることがなくなります.また,クロスタグのアイコンがキャッシュモード状態に切り替わります.

何故キャッシュをとるか?
何かの理由で再レンダリングが必要になった場合を考えてみましょう.シミュレーションというのはアニメーションを再生するたびに必ず同じ結果になるわけではありません.キャッシュを取っておけば,必ず同じ状態のアニメーションが再生されるため,同じ状態をレンダリングすることが可能です.
キャッシュがあれば,複数台のPCでレンダリングしても結果が同じになるので,Team Render(分散レンダリング)したり,クラウドレンダーファームを使ったりしても大丈夫なのです.
もしキャッシュを取っていない場合,別のPCでレンダリングした結果がフレーム間で異なるので,これはとても良くないでしょう.
これは一台のPCでレンダリングする時でもシミュレーション系や,MoGraphでディレイモディファイアレイヤなどの前フレームの状態が現在のフレームの状態を決めるような機能を利用する場合はかならずキャッシュをとることをオススメします.これはCinema 4Dに限らず他のソフトでも同じことなのでよく覚えておきましょう.
※MoGraphの場合はMoGraphキャッシュタグというものが用意されています.
※再度シミュレーションを行いたい場合はキャッシュモードをオフにします.
クロスにマテリアルを付ける
クロス用のマテリアルはアセットブラウザから利用させてもらうことにします.アセットブラウザを開き(Shift + F8)検索バーで「carpet」と入力すればいくつか表示されます.チュートリアルではオレンジ色のベーシックなものをとりあえずチョイスして後でカラーだけ好きに変更していくことにします.

シーンに追加したマテリアルを開き,「カラー」チャンネルを変更します.カラーテクスチャにはすでに「Layer」シェーダがついているので,Layer,またはサムネイルをクリックして設定に入ります.

レイヤーシェーダとはPhotoshopのようにレイヤーをスタックしてテクスチャを作ることができる機能です.一番下のレイヤーに「Fresnel」があるので,こちらをクリックして設定に入ります.

フレネルシェーダのグラデーションでカラーを調整します.左側のカラーはカメラからの角度が浅い部分に出てくるカラーで,右側はカメラと直交する辺りに出てくるカラーです.

次に,「拡散」と「反射」は「オフ」にしておきます.もちろん調整してもらっても良いですが,今回はレンダリング速度を優先して両方とも「オフ」にしておきます.

マテリアルはこれでOKとします.
ライティング
このシーンにはまだライトが無いので作っていきます.使用するレンダラーは標準レンダラーを前提として進めます.Redshiftや他のレンダラーの場合は適宜調整が必要です.
シーンにスポットライトを追加します.

作成したスポットライトを選択した状態のまま,Altキー(MacはOption)を押しながらクローナを作成し,クローナーの子オブジェクトにします.クローナーはライトを配置するためにも使用頻度が高いオブジェクトです.ただ,このままだとグリッド状に配置されているので調整していきます.

クローナーを選択し,「オブジェクト」タブを開きます.
「モード」…「放射」
「複製数」…「8」
「半径」…「330㎝」
とします.

「座標」タブを開き,
「P.Y」…「-260㎝」
とします.

さらに,複製したスポットライトの角度を変えるため,「トランスフォーム」タブを開き,
「R.P」…「80°」
とします.

スポットライトの角度を変える方法ももちろんあるわけですが,ここではトランスフォームの役割について少し解説します.クローナーのトランスフォームとは複製後のクローンの位置,角度,スケールを一括で調整できるパラメータです.この座標は各クローン自身のローカル座標を元に変化します.
もちろん,予め角度を変えた状態のスポットライトを複製するという方法もありますし,エフェクタで調整する,という方法もとれます.色々な方法があるのでトランスフォームを使うのが最善,というわけではなくあくまで一つの方法であるという点は何をするにも常に意識しておくとと良いでしょう.

ライトの設定を調整する
スポットライトを選択し,「一般」タブを開きます.
「影のタイプ」…「シャドウマップ」
にしておきます.シャドウマップは計算が早い影(ただし正確でない)を描画します.本来なら「エリア」を使いたいところですが,今回はスピード重視でシャドウマップにしています.もちろん,エリアシャドウを使ってもかまいません.ライトのカラーも好きに変更してみましょう.

細かいことですが,クローナーの名前も分かりやすくします.「クローナー インナースポット」などとしましょう.分かりやすい名前を心掛けるといいですね.
このクローナーを選択して,複製します.Ctrl + C, Ctrl + Vでも良いですし,Ctrlキーを押したままクローナーをドラッグしてもよいです.複製したクローナーの名前を「クローナー アウタースポット」などとして区別しておきます.

クローナー アウタースポットを選択し,「オブジェクト」タブを開き
「半径」…「600㎝」
「オフセット」…「22.5°」
とします.オフセットは最初のクローンの位置を最初の位置からずらして配置することができます.太いパイプは45°間隔で並んでいるので,その間の22.5°ずらことで丁度パイプの中間地点に移動します.
また,「トランスフォーム」を開き
「R.P」…「100°」
にしておきます.


ライトのカラーや強度は好みで調整してみてください.
空のライティングとグローバルイルミネーションを設定する
このままレンダリングしても真っ暗ですね.スポットライトによる直接光だけだとライトで照らされていない箇所は真っ暗になります.現実の世界では暗闇になること自体が難しいですが,Cinema 4DのCG世界ではデフォルトでは真っ暗闇です.
作って覚えるシリーズをこなしてきたのであれば,「空」による照明とグローバルイルミネーションを設定して調停してみてください.以下その方法を記します.
空オブジェクトをシーンに追加します.
ライティングは空オブジェクトを追加します.

アセットブラウザ(Shift + F8)を開き,Templates & PresetsのフォルダからHDRIを探して,好きな空用マテリアルをシーンに追加して空に適用します.


空オブジェクトを照明として機能させるためにはレンダリング設定でグローバルイルミネーションを追加する必要がありますので,「レンダリング設定」(Ctrl + B)を開き,「特殊効果」から「グローバルイルミネーション」を追加します.

空自体はレンダリング時にカメラから見える必要はないので,空オブジェクトを選択し,「タグ」メニューから「レンダータグ」→「コンポジット」タグを適用し,「カメラから見える」を「オフ」にしておきます.

レンダリングすると少し照明としての効果が弱い場合(使用するHDRIの素材によります)は,空用マテリアルの発光チャンネルを開き,テクスチャの「混合モード」を「乗算」にし,「明るさ」の値を100%以上にあげていくことで照明強度を強めることができます.

同じ作業を毎回行うのは手間なのでアセットブラウザを上手く活用しましょう
ちなみに,この操作を毎回行うのは手間ですね.こういった感じでよく使う設定はアセットブラウザに登録しておけばいつでも呼び出すことができるのでぜひ使いこなしましょう.
例えば,このマテリアル付きの空オブジェクトをアセットブラウザに登録してみます.アセットブラウザを開きます.(Shift + F8)
とりあえずプリセットに登録してみましょう.左列から「プリセット」を探して選択します.

登録後は,アセットブラウザの空をダブルクリックすればマテリアル付きで追加できます.
アセットをアイコン化する
アセットブラウザを開くのすらも手間なので省きたい…そんな場合はアセット自体をアイコンとしてレイアウトに組み込みましょう.
「ウィンドウ」メニュー→「カスタマイズ」→「パレットをカスタマイズ」を開きます.

コマンドマネージャが開き,アイコンパレットを編集できるようになるので,アセットブラウザに登録した「空」をアイコンの好きなところにドラッグ&ドロップして追加します.

このようにアセット自体をアイコン化しておくこともできます.通常の空オブジェクトとアイコンが同じになってしまいますが...アイコンのカスタマイズは可能ですがここでは割愛します.
追加したアイコンをクリックすればすぐにマテリアル付きで読み込めるので便利です.
レイアウトを保存する
レイアウトやパレットをカスタマイズしたら,カスタムレイアウトとして保存しましょう
このようにパレット,またやレイアウトをカスタムしたら,いつでもそのレイアウトに変更できるようにレイアウト自体も保存しておきます.「ウィンドウ」メニュー→「カスタマイズ」→「レイアウトを別名で保存」から,名前を付けて保存します.保存したカスタムレイアウトはウィンドウ右上に追加されているのでいつでも切り替えができます.さらに「初期レイアウト」として保存も行えば,Cinema 4D起動後はこのレイアウトで起動できます.


上手く活用していきましょう.
グローバルイルミネーションを設定を変更する
グローバルイルミネーションの設定は少し難しいので,今回の場合デフォルトのままでも構いませんが,テストレンダリング用に軽めの設定をつくってプリセット化しておきましょう.
レンダリング設定のグローバルイルミネーションを開き,「一般」タブを開きます.
「サンプル」…「カスタムサンプル数」
に変更します.
サブパラメータを開き,
「サンプル数」…「64」
としておきます.
「イラディアンスキャッシュ」タブを開き,
「レコード密度」のサブパラメータを開きます.
「最大レート」…「-1」
「密度」…「20%」
「最小間隔」…「32%」
「最大間隔」…「32%」
「スクリーンスケール」…「オフ」
に変更します.
プリセットから「プレビュー」また「低」を選んでも良いです.
グローバルイルミネーションの品質はそれほど高くないですが,計算は早くなりますので確認用の設定として使ってください.
また,こういったレンダリング設定はプリセット化してどのプロジェクトからでもすぐに再利用できるようにしておきましょう.
レンダリング設定の「レンダリング設定」ボタンを押すか,空いているスペースで右クリックし,「プリセットを保存」を実行します.保存したい名前を入力して保存します.


保存したプリセットは同じくメニューから「プリセットを読み込み」でプロジェクトに追加できます.使用したいレンダリング設定の左にあるアイコンをクリックしてアクティブにして切り替えます.

プリセット化しておくと都度設定する手間が省けるので便利です.テスト用や本番用など用途別に用意しておくのも良いでしょう.
カメラを作成する
最後にカメラを作成して完成とします.カメラをシーンに追加します.

カメラを選択し,「座標」タブを開きます.
「P.X」…「0㎝」
「P.Y」…「60㎝」
「P.Z」…「-2000㎝」
とします.
「オブジェクト」タブを開き,
「焦点距離」…「標準レンズ(50㎜)」
にします.


一度設定したカメラを不要に動かさないように,「タグ」メニュー→「リギング」→「ロック」タブをカメラにつけておきます.ロックタグは位置,角度,スケールをそれぞれロックさせる機能です.とりあえず付けておくと設定した位置などを誤って操作しなようにできます.または任意の軸だけロックさせておく,といったこともできます.

ロックタグは使用頻度が高い方だと思いますので,覚えておくと良いです.
カメラに切り替えて,操作できないことを確認します.
本番レンダリングにむけてレンダリング設定を見直す
今のところはレンダリング設定がテスト用になっているので,本番用に調整していきます.「レンダリング設定」を開きます.(Ctrl + B)
「グローバルイルミネーション」を開き,テスト用のレンダリング設定を複製します.Ctrl + B,Ctrl + Vまたはレンダリング設定をCtrlキーを押しながらドラッグ&ドロップします.名前を差別化して本番用とし,こちらに設定を切り替えておきます.

「グローバルイルミネーション」を選択し,「一般」タブを開きます.
「サンプル数」…「256」
にします.

今回はシーン自体が簡単なので,これで十分な絵になるでしょう.より複雑で込み入ったシーンでイラディアンスキャッシュの設定も調整する必要がありますが...
出力を選択し,
「フレームレンジ」…「全てのフレーム」
にします.「解像度」は任意で調整してください.

保存にチェックを入れ,
「ファイル」にパスとファイル名を指定します.「フォーマット」は連番なら静止画フォーマットを指定します.練習なのでmp4やmovといった動画フォーマットでも構いませんが,アニメーションの場合は連番ファイルで行うのが無難でしょう.

レンダリング設定ができたら,「レンダリングして画像ビューアーに」を実行します.(Shift + R)

フレーム単位でレンダリングが開始されます.連番ファイルをAfter Effectsなどで動画として書き出せば完成となります.作業自体はそれほど難しくないと思いますが,プリセット登録などは地味ながら便利なので覚えておくとよいです.良いプリセットができたら,既存のものを上書きして更新していくと良いでしょう.
作って覚える 第5回は以上で完了です.少し長めの記事でしたが,最後まで読んでいただきありがとうございます.
完成データはこちらからダウンロードいただけます.