maya,pymel,python,アニメーション[ごあいさつ]はじめまして。「ごのかみ」って書きにくいので「ごの」とか略してもらってもいいですよ。DFにご厄介になってまだ半年ほどですが、MassiveとTDワークを担当しております。周りの皆さんが非常にできる方ばかりな上、勉強することが多く四苦八苦している現在です。他のスタッフの方々のように有益な情報をご紹介できるかどうかわかりませんが、お時間ある方はお付き合いください。最近はスクウェア・エニックス様(以下スクエニ様)のオープンカンファレンスが楽しかったですね。刺激を受けて創作意欲がわいてきました。プリレンとリアルタイムの垣根が薄くなってきた昨今を鑑みると、こちらの業界でもスクエニ様のような技術というのは必要になってきますからね。話は全然変わりますが、僕は3DCGの中でもアニメーションの分野が一番好きなんですね。作業していると機械的にやってほしいとことかが出てくるんですよね。そこに時間割かれると、アニメーションのクオリティアップの時間が削られてしまうので、そういったところを手でやるというのがあまり好きではないんですよ。そこで、そのめんどくさいことを省きつつアニメーションを作れるということで、プロシージャルアニメーションに注目しております。いうわけで、今回のテーマは「プロシージャルアニメーションを使ってそれっぽいカットを簡単に作る」です。今回お話するプロシージャルアニメーションとは、人型キャラに適用できるものではなく、オブジェクト自体のアニメーションに関わるシンプルなものなのであしからずです。それからオペレーションにはmayaを使っております。本記事内でダウンロード可能なツール、コードを使用したことによって引き起こるいかなる損害も当方は一切責任を負いかねます。自己責任でご使用ください。[ぷろしーじゃるあにめの基礎の基礎]プロシージャルアニメーションって書くと、なんだかすごい複雑なことやっているんだろうなぁとか思われるかもしれませんが、実はそんなことありません。xこれは中学校でも習った、sin関数ですね。これでプロシージャルアニメーションです。゚Д゚)...(゚Д゚)唐突過ぎますね。わかりやすく説明します。とうにcubeを作ってexpressionにこの数式を適用してみます。sin(frame);これで再生すると先ほどのグラフのように動きます。(クリックで再生)オブジェクトに数式を与えることで、自動でアニメーションをつけてくれます。これがプロシージャルアニメーションなわけですね。これをちょっと応用した数式に変えて、見栄えをよくしてみましょう。ちなみに、ここからはスクリプトエディタ(python)で実行します。intervalspiralUpper(400)スクリプトエディタでこれを実行します。後は再生するだけです。(クリックで再生)数を増やしただけでも、さっきよりは見ごたえのあるものになりましたね。このスクリプトでは、選択したオブジェクトにsin関数とcos関数のexpressionを自動で書き込んでいます。エクスプレッションエディタで確認してもらうと何が書いてあるのかわかるはずです。ちなみにオブジェクトが整然としないように、ここではあえてランダム値を入れてます。spiralUpper(400)←この数字はcubeの数です。暇があったらここの数字部分も変えてみてください。単体のアニメーションは微妙でも物量出せばそれなりに見れる[数式作るのめんどい...]というわけで、数学関数さえ当てはめてあげれば、プローシージャルアニメーションができるというのがわかったと思います。sin関数やcos関数などの比較的動きが予測できる関数は制御しやすいんですが、それ以外の複雑な関数って作ってみないと動きがわからないですよね。それに加え、基本的に数値での調整が主になるので扱いにくいんです。いうわけで、手でアニメーションをつけちゃいましょう。支離滅裂だと思われるかもしれませんが、怒らずにお付き合いください。アニメーションというのはやはり手でつけるのにはかないません。自分の思い通りのアニメーションを思うとおりに作れるわけですから。今回ご紹介しているプロシージャルというのは冒頭でも述べたように、「機械的にめんどくさいところを短縮する」というのが目的です。手でアニメーションをつけるための補助的な手段でしかないのです。手でつけた方が結果的に早くなるならそうするに越したことはないわけです。ここでポイントその壱を思い出してください。物量あれば、それなりに見栄えよく見えるんです。一個にアニメーションをつけて、それに他のオブジェクトを追従させるだけでもそれっぽいものになるんですよ。やり方をひとつひとつ書いていくと記事が長くなりそうなので、ツールをつくりました。使用方法はファイル内にも記述してあります。0フレームで位置がリセットされます。このツールでやっていることは簡単です。アニメーションがついているオブジェクト(以下、オリジナルオブジェクト)の前のフレームの位置を記憶しておいて、現在のフレームとの差異分だけツールが適用されたオブジェクトを動かしてます。フレーム単位で記憶しているので、毎フレーム再生にしないとうまく動かないです。あとexpressionで強引にやってるので数が増え過ぎると重くなるので注意です。追従するオブジェクトの遅れてくる度合いが一括調節できます。こちらを使ったのがこのサンプルです。楽しくなりましたね(=゚ω゚)自画自賛みたいであれですが、使ってて楽しいですね、これ。暇があったらもう少し遊んでみたいです。[カット作成]さてアニメーションもできたのでサクッとレンダリングしてみましょう。ここで用意するものはHDRIのみです。ネットに落ちてるので適当に探してみましょう。(擬似HDRIもあるので注意)自分で作成するのも意外と簡単にできたりするのでオススメです。使えば簡単にライティングできるIBLってなんぞやという人に軽く説明しておきます。IBLとは画像を光源とみなしてライティングするものです。フォトリアリスティックなライティングを簡単にできるのが特徴です。そこでライティングに使うため、広い輝度情報を持つHDRIが必要なわけです。レンダラーをメンタルレイに変えてIBLを作ります。そこに先程のHDRIを貼り付けます。効果が出ないので注意です。このとき背景が変な感じになっても気にせず、オブジェクトのライティングのみに着目してください。これはあくまでライティング用に使うだけなので後で背景はオフにします。オフにすると背景が消えるので見やすくなりますよ。ライティングが終わったら背景用の球を用意します。IBLと同じ大きさの球を用意してそこに同じHDRIを貼り付けます。後はカメラを決めてから、レンダーレイヤーなんかを使ってオブジェクトだけ、背景だけをレンダリングします。最後に合成すればこんな感じになります。[後記]物量出すならパーティクルでやればいいじゃんという至極ごもっともなご意見があるかと思いますが、こうやってオブジェクト自体をいじるのも楽しいですよってことも言いたかったのです。実際の使い道はあまりないかもしれません。簡単に作れることがわかったと思いますので、お時間ある方は遊んでみてください。ちなみに、このムービーで使っているオリジナルオブジェクトのアニメーションは重力とバウンドの数式を使って作っております。こんなこともできますのでご参考までに。しょうもないツールですが、これを使って作品など自由に作ってもらってかまいません。作品を発表する場合はDFか僕のクレジット入れてくれたり、報告してくれたりすると嬉しいなぁとか何とか思ったり。(※必須):Website:Comment:コメントは承認制ですので、即時に反映されません。月別アーカイブ2016年1月2月3月4月5月6月7月8月10月11月12月2015年1月2月3月4月5月6月7月8月9月10月11月12月2014年1月2月3月4月5月6月7月8月9月10月11月12月2013年1月2月3月4月5月6月7月8月9月10月11月12月2012年2月3月4月5月6月7月8月9月10月11月12月2011年1月2月3月4月5月6月7月8月9月10月11月12月2010年12月Footer。