恣意的思逸記

PCの中や外でものをつくる

Blender でモーショングラフィックス(忙しい人向け)

前置きが長い

いろいろ言い訳をしていたら前置きが長くなってしまったので、適当に読み飛ばしてほしい。


友人の結婚式


友人が結婚することとなった。とてもめでたい。

夫婦となる二人のことはよく知っているし、最大限に祝福したいと思っていた。なにせとてもめでたい。

私自身、拙いながらもこれまで何度かいろいろなイベントで映像制作させてもらった事もあり、それを知っていたその友人夫婦から、式当日に会場で流す、

  • オープニング映像
  • 新郎新婦紹介映像
  • 当日来れない人からのコメント映像
  • エンディング映像

の制作・編集を任されることとなった。


めでたい

  • オープニング映像
  • 新郎新婦紹介映像
  • 当日来れない人からのコメント映像
  • エンディング映像

の制作・編集を任されることとなった。


多い

トータルコーディネートやん。




うれしい悲鳴

何においても、ものづくりができるきっかけがあるというのは素敵なことだと思うし、更にそのものづくりが人のためにあるとなると、俄然やる気も出て、やり遂げられればそれこそ本望だと思う。

ただこの時、本当に、本当に時間がなかった。
人を気遣ってくれる友人夫婦だったので「私たちにも何かできることはあるか?」と心配してくれたが、正直な話「うんじゃぁあと3日ほど時間をとめてほしい」とお願いしたい状況だったし、実際はそんな冗談も言えない状況だった。


テーマは「学校」

式にはテーマがあった。「学校」だ。
とにかく「みんなが通ったことのあるステレオタイプの学校」が連想されて、かつ皆が懐かし楽しい気持ちになれば良いとの依頼だったので、「運動会」「学内放送」などに派生させて、勢いでなんとかオープニングのたたき台を作った。



vimeo.com



パスワードは:marriage
プライベートな内容は省いているので途切れ途切れになっている。

ちなみに映像の最後に司会が出てきて「ヘイヘイちょっとみんなノリわるくない~?式終わっちゃったよ~??」てな感じで煽りが入り会場を盛り上げる。
音割れしてたりごみオブジェクトが映り込んでたりいろいろ言いたい感じではあるけど、結局このたたき台が本番の映像となった。


映像制作ソフト Blender で制作した。

巷では3DCGソフトとして名を馳せているらしいが、私は映像制作ソフトだと思っている。


前置きここまで

前置きが長くなったが、ここではBlenderで上記のようなモーショングラフィックスを作成する時に行った、「Action Constraint使うと作業楽&速い」なTipsを書こうと思う。


怠けたい

さて、こういう映像制作に限らず、最小の努力でよい結果を得るための努力はとても大切だと思う。いいものは作りたいけどなるべく怠けたい。


上のモーショングラフィックスでいうなら、

制作するオブジェクト、アニメーション、その他手がかかる部分は少なくしたい、リソースは使いまわしたい、けど単調にしたくない

という感じだ。さらに、上のような音と同期させた映像は、アニメーションの開始/終了のタイミングがシビアになりがちなので、なるべく少ないパラメータでアニメーションの速度やタイミングの制御をしたい。


※以下は思い出しながらの書き起こしなので、手順が若干間違っている可能性があります。

Action Constraint便利

Blender のAction Constraint機能はとても便利で、一番好きな機能だと思う。

上記の映像では、複数のオブジェクトが動く複雑っぽく見えるアニメーションでも、実際は一つのオブジェクトの任意のパラメータ(主にX軸方向の移動)だけで制御されていたりする。


Action Constraintって何?どうゆうこと?
とりあえず下記で例を示すので、これを見れば何ができるのかわかると思う。

アニメーション制御

まず下準備。これさえしとけばもう動画は完成したといっても過言ではない、というのはさすがに過言だとは思うけど、とにかくこの下準備によって後々かなり楽ができる。



1.アニメーションの用意
映像の中で、連続的に表示したいとか、速度を調整して表示したいアニメーションを用意する。

あ、うん。って感じだ。
このままだと、うれしくも楽しくもエロくもない。


2.Parent の追加

このアニメーションオブジェクト(YESオブジェクトと呼んでおく)をいろんな位置・姿勢・大きさで使いまわすために、ベースとなる親オブジェクトを用意する。
ここでは Empty の Circle を選んで、アニメオブジェクト→Circle の順で選択し、 [Ctr+P]で設定。


3.制御用のオブジェクトの追加

その後に、このアニメーションのタイミングや速度を制御する制御用オブジェクトを追加する。
なんのこっちゃという感じでもとりあえず用意しとく。
ここでは何のオブジェクトの制御を行うのかを見やすくするため、”yes_drv” と入力したテキストオブジェクト を用意した。

このテキストオブジェクトも同様に Circle を親オブジェクトとして設定しておく。
また、このオブジェクトは、アニメーションするYESオブジェクトとは別レイヤーにあると後々うれしいので、制御用オブジェクト専用レイヤーを用意して、移動しておくといい。


4.アニメーションの削除

Action Constraint を使用する際、先に制作したアニメーションは不要なので、YESオブジェクトを選択した後、Dope Sheetウインドウの Action Editor で、YESオブジェクトに登録されているアニメーション(TextAction)を削除しておく。
今後アニメーションに変更がある際は、このAction Editorでそのアニメーションを呼び出して編集すればいい。


5.Action Constraint の設定

満を持して Action Constraint の登場だ。
アニメーションを制御したいYESオブジェクトを選択し、Properties ウインドウの Constraint から Action Constraint を選び、Target に制御用オブジェクト、To Action に自身の持っていたアニメーション、From Target はLocal の X Location とかにして、Action Rangeには、To Action に設定したアニメーションの長さを、Target Range には制御オブジェクトが制御を行う範囲を設定する。
今回は下記のようになった。


すると、


最初に設定したアニメーションを、制御用オブジェクトの、From Target に設定されたパラメータ(ローカル座標系上のX軸方向の移動)を使って制御できるようになる。

具体的には、
制御用オブジェクトのパラメータ(X値)が Target Rangeの Min の値の時、To Action に設定したアニメーションのカレントフレームは Action Range の Start のフレームになり、
制御用オブジェクトのパラメータ(X値)が Target Rangeの Max の値の時、To Action に設定したアニメーションのカレントフレームは Action Range の End のフレームになる。


何がいいのか

任意のアニメーションのカレントフレームが、制御用オブジェクトの位置で制御できることで、アニメーションのタイミング、速度(逆再生も可)が変更でき、また、アニメーションするオブジェクトの位置・姿勢・大きさなどは親オブジェクトで変更可能なので、
上記の設定をするだけで、下のようなアニメーションがすぐに作れる。
※以下のアニメーション画像にはボーンが表示されているが、使用しなくても同じことができる。


先の映像ではこういったアニメーションを多用している。最初に比べてちょっと賑やかになった。ちょっとエロいかもしれない。


本当の便利さ

上は Action Constraint のシンプルな例だが、この機能はかなり応用が利く。

たとえば下のような単調なアニメーションを作成する。


ボックスが移動するだけの単純なものだ。Blender のアニメーション入門とかで作れそうなとてもシンプルなもの。


だがこれを、上で述べた方法で制御できるようにしておき、それを並べ替えることで


こんなアニメーションができ、さらに、例えば Modifier のArray を使用すれば、



のようなアニメーションが作れる。ここまでくると、画面遷移などのエフェクトとして使えそう。



ここで重要なのは、制御用オブジェクトの位置が、対応するオブジェクトのアニメーションのタイミングをコントロールしているということで、
そのオブジェクトの位置を段階的にずらすことで、


こうゆう変化になり、同じように Modifier のArray を適用すれば



こんな感じになり、いろんなバリエーションの動きが作れる。エロい動きも作れる。

また、Array を使わずに複製して、個々のアニメーションオブジェクトに対応する制御用オブジェクトの位置をめちゃくちゃに配置し、それらを同時にX方向に移動アニメーションさせるだけで、






のような、ちょっと有機的な動きに変更できたりする。


そのほか

これまでの例は制御用オブジェクトの位置を変えただけだが、制御用オブジェクトなどの設定はそのままに、Dope Sheetウインドウの Action Editor から、同じ長さの下記のようなアニメーションに変えて、




更に制御用オブジェクトの動きを制御する制御用オブジェクトを用意すれば、



なんかどこかで見たことある動きを持ったオブジェクトも作れたりする。


また、回転だけのアニメーションを持ったオブジェクトを用意して、そのオブジェクトを複製する際、複製オブジェクトの親オブジェクトを、複製元のオブジェクトに設定し、そのアニメーションを段階的にしてみれば、



トランスフォーマーっぽい動きも作れそう。もちろんエロい動きも。


氷山の一角

上で挙げたのは思い付きで作れる簡単なもので、他にも例えば、移動、回転などだけでなく、マテリアルなど、いろんなパラメータがアニメーションする一つのオブジェクトに対して、それぞれのパラメータに対応した制御用オブジェクトを個別に用意し、上で挙げたような変化を加えれば、よりバリエーションに富んだアニメーションがお手軽に作成、制御できるようになるし、もともとが単純なアニメーションだったのに、組み合わせによって想像もできなかった複雑な動きが生まれたりするので、いろいろ試してみる価値はありそう。


ちなみに

先の映像では、一画面に表示されるオブジェクトが少なかったので問題にはならなかったが、賑やかな映像になってくると、制御用オブジェクトの数が3ケタとかになってきたりして、快適な作業ができなくなってくるので、なにかいい方法がないか考えている。
いい方法が思いつき次第、プラグイン化したいと思う。


ちなみに2

実は、Blender のDriver 機能を使えば、この Action Constraint と組み合わせて、もっといろんなことができるようになる。
Driver でパラメータにバリエーションを持たせる方法については、とても参考になるチュートリアルがあるので、興味があれば見ることをお勧めしたい。

Variations: Blender drivers for randomizing object, mesh, material, texture, and node properties on Vimeo