夢はキャラクターアニメを作ること…な拝御です。ま〜、古くから映画やらアニメやら見ていたおいらですけれど、せっかくなんだから自分でキャラクターが動き回るようなのを作ってみたいと思いつつ日々を過ごす今日この頃。
ただ、あまりCinema4Dでこういったことを目指している人は少ないようで、ノウハウを記したものがなかなか無い…。他にこの目的に適したツールがあって、そっちでやるっていう手もあるんですけれど、せっかく扱いやすいCinema4Dやし、そこらへんを実現するための手法をいくつか考えたところを紹介してみようと思います。
とりあえずここではCinema4Dだけでの製作を前提にしています。モデリングだけなら慣れているメタセコを使うという手もありますが、フィニッシュをCinema4Dで行うなら「こうする」ということを前提にして作業した方が良いですし、目を通しておくことをお薦めします。
もっとも、ここにある手法だけが正当ではないし、同様の表現に他の手法で挑戦している人もいますので、そこらへんは各自模索してみてください。
キャラクターアニメーションと言っても、どちらかっというとアニメキャラ風味な画風を目指していこうかと。まだ3DCG独特の質感とかはFFMovieレベルならともかく、3DCGっぽい質感なキャラクターだと、一般にはなかなか受け入れられにくいと思うんすよ。んでもアニメキャラでセルレンダーで、できるだけセルアニメーションに画風を近づければ、記号化に成功している既存のアニメ同様、見やすくなるのではないかな〜…と。
で、注意しておきたいのは、アニメキャラといえば「目が大きい」ということ。勿論大きくないのもあるわけなんですけれど「人狼」とか、そういうのは既存の顔モデリングで問題はないので関連書籍とか見ていただくとして、それではカバーできない、右のようなキャラクターの場合でのモデリングを考えてみましょう。
デフォルメの代表格(?)のアニメキャラともなると、その目の大きさは常識的な範囲を超えています(^^;)。それを2Dで描くのは(最近では)問題ないのですが、これを3Dにするとなると色々破綻をきたします。特に眼球をさくせいしてそれを稼動させようとした場合、顕著にその破綻が突出します。
実際に作成してみればわかりますが、眼球がうまく顔面に納まらないわけです。
通常通り顔の大きさから割り出した大きさの眼球を作成してアニメキャラの顔面に当てはめた場合、その眼球の丸みと顔面の横顔が間違いなくマッチしません。
しかし逆に横顔に「アニメキャラとしてあるべき眼球ライン」を当てはめ、そこから眼球を作成した場合、左の図の赤いラインのようになってしまい、頭部から眼球がはみ出してしまいます。
そこで今までの条件に合い、顔面にも合う大きさの眼球を作ろうとすると青いラインの非正球形を取らざるをえなくなります。
んでも眼球は正球だからこそ正確じゃないっすけれど上下左右に機敏に回転するのであって、扁平な球体だとその回転の制御が難しくなります。
デフォーマで眼球を変形させる
しかし幸いにもCinema4Dにはデフォーマーという変形ツールがあります。デフォーマを用いて正球体の眼球を回転させた後に顔の形に変形させる…ということが難しくありません。
具体的には右のように元の眼球にいくつかのデフォーマを仕込みます。
眼球そのものは下図左のように球体です。しかし、まずボーンで向きを定め(ターゲットエクスプレッションで視点ターゲットを追うとかいう設定にしておくのが常套でしょう)、FFDで扁平し、その他のデフォーマで顔のモデリングに沿わす大体、眼球の左右、下部のシアーといった感じですといった形になっています。
デフォーマーの並んでいる順番は変形の順番にもなっているので、同様のことをされる場合には順序を間違えないようにしてください。
ボーンの回転で眼球の向きだけ変えているので、下図のように、目の向きが変わっても他のデフォーマのおかげで眼球が顔から飛び出ることはありません。
ちなみに、眼球オブジェクトは顔オブジェクトとは別の階層に置いておいた方が無難です。視線制御をするとわかりますが、視線ターゲットに向かう角度が2倍(?)程度になってしまうことがあるからです。
そう言った場合、眼球オブジェクトを顔オブジェクトとは別の階層に置き、眼球の一の部分にはNullを置きます。そしてプラグインやExpressionでNullの位置に追従するように設定すると、視線制御が確実になります。
左右対称を活かす
ついでに書いておきますが、Cinema4Dには左右対称にするモデリングオブジェクト「対称」があります。これを用いると右目だけ作成して左目もレンダリングさせるということが可能になります。
ただし、「対称」では「そこにあるように見える」というだけで実際にはモデリングデータがありませんので、ボーン等の変形対称にならないので、最終的には対称コピーで左目を作成する必要がありますが、すべての処理が左右対称に反映されるので、顔面も含めた、左右のバランスを身ながらモデリングを行っている最中はこのオブジェクトを利用しておくと良いでしょう。
瞳をテクスチャで処理する場合
前述の方法は眼球を別オブジェクトにする場合の手法です。アニメキャラですから、別に無理して眼球を別オブジェクトにすることもなく、一体オブジェクトにし、瞳はテクスチャで処理するという方法もあります。
具体的にはプラグインの仕様が前提になりますが、顔と瞳のテクスチャを別個に作成します。顔のテクスチャは右のように眼部分を切り抜くようにしてください。
そして左のようにオブジェクトを組みます。Faceが顔オブジェクトであり、Eye_Left(Right)はNullオブジェクトで、無理矢理(?)平行法で瞳オブジェクトを貼り付けてあります。
Faceの方にも瞳テクスチャは貼り付けてありますが、Y.Manabeさん作の継承テクスチャタグプラグインを使用します(プラグイン・カフェでInheritTextureTag
をキーワードに検索してください)。Faceの瞳マテリアルの左にあるのがそれで、各々Eye_Left、Rightのテクスチャの向き等の情報を継承します。Eye_LeftのNullが回転したらそのテクスチャも回転するわけで、その情報がFace上のマテリアルにも継承されてテクスチャの向きが変わる…と、そういうわけですな。
キャプチャには取り損ないましたが、その二枚の瞳テクスチャの上にかぶせるように、先の顔テクスチャもFaceに貼り付けてあります。オブジェクトマネージャ上では左から右にテクスチャが貼られていくので、瞳テクスチャの上にかぶせる顔テクスチャは一番右になりますはみ出してしまいましたが。
で、実際に右のような眼球一体型オブジェクトを用意します。
本来ならばもっと目のあたりの凹凸はなだらかにしておいた方がよいでしょう。実際に彫りを深くしたい場合はテクスチャかバンプマップで処理…といった感じがいいんじゃないかな。
そして実際にレンダリングすると右のような感じになります。
そしてNullをかいてんさせて視線を移すと、右のように瞳も動くわけです。
勿論、Nullにターゲットエクスプレッションを適応させ、視線ターゲットを用意してNullを追従させるとかいった設定にすれば、先の眼球別オブジェクト同様、制御が自動になります。
この手法のメリットとしては、顔のテクスチャをまるまる変えることにより、よりマンガらしい表情を出せることです。
左のように、マンガなテクスチャによるマテリアルを用意しておき、タイムライン上で設定してやれば、顔面丸ごと別テクスチャにすることが可能です瞳のマテリアルも残ったままですが、顔テクスチャの「アルファ抜け」が無いので重ね描きになり、いちいち設定を気にしなくても大丈夫です。
ちなみに、タイムライン上にテクスチャのトラックが複数あるのは、一オブジェクト上に複数マテリアルが貼られている場合、それらの分もトラックを用意してやらないと、一番右等のテクスチャを変更できないからです。
また、瞬きもテクスチャを数枚用意して、同様の設定を行います。
ちなみに左を見てもらえれば、先の「出来るだけ目のあたりの凹凸はなだらかな方が良い」という意味がよくわかると思うのですが…(^^;)。
また、この手法のミソは、Eye_Left(Right)の位置だったりします。実際に作成する場合にはうまく調整してみてください。
モデリング等々の方が済めば、次は質感設定です。ここではセルシェーディングの方法を示します。
ただ、Cinema4D標準機能のトゥーンレンダリング機能はあまり役に立ちません。輪郭線は綺麗なのですが、現状(Ver.7.3)では問題があり、うまく使用できません。そこらへんの問題点はこちらの1.2.1あたりを参照してください。
しかし無いよりは良いので(^^;)、右くらいの設定はしておいた方が…。ただ、短冊髪などの場合はOFFにしておいてください。
階調の付け方と、その向きをライトに向ける方法
レンダリング設定内のセルシェーダを利用すれば、簡単に階調表現が可能ですが、全画面一律に色数制限してしまうので、融通が利きません。また、カラーテクスチャなども減色してしまうので、セル画調と水彩背景と同居させたいといった時に不便です。
そこでマテリアルごとに階調表現を行うため、SLAを使用します。
まず必要なプラグインとして、先に挙げた継承テクスチャタグプラグインが必要になりますので、インストールしておいてください(プラグイン・カフェでInheritTextureTag
をキーワードに検索してください)。
まず新規のマテリアルを用意し、発光チャンネルだけを選択し、SLAのFalloffを選択します。
そしてその設定を以下のようにしてください。
カラーバーは適当な設定で良いですが、右の方から明るい順になります。補間法も「なし」にすればきっちりしたセル画調の塗り分けになりますが、他の補間法でなめらかな階調を設定するも良し、マッハバンドの幅をもう少しゆるやかにしたりと、色々設定してみてください。
ただし、「向き」に関してはZのみ1という設定を守ってください。
そして右のようにオブジェクトを組み、以上のマテリアルを
球体に設定してみてください。Nullは球体と同じ位置、ターゲットエクスプレッションはLightを指しています。
球体横の継承テクスチャタグは、Nullを指すよう設定してあります。当然動的な軸が反映するよう、UVWマッピングにしないようにしてください。
そのように設定すると、右のようにエディタ上ではちょっとおかしな表示になってしまいますが、階調の向きはライトを向くようになります。
実際にレンダリングしてみれば、右図下のように、明るい方がライトに向いて階調がついていることがわかります。
Falloffはオブジェクトの任意の軸に習ってグラデーションを作成するシェーダーです。その性質を活かし、その軸を継承テクスチャプラグインを利用して動的にすることにより、ライトに向いた階調を作成するようになっています。
ちなみに、先にマテリアルの「発光」のみに設定する形になりますが、「カラー」チャンネルなどにSLAのFalloffの同様の設定を施すことも可能ですが、「陰」がついてしまってうまくセル画調を表現できません。
勿論その方が良い場合もありますので、そこはレンダリングオプションタグなども使って、うまく設定してみてください。
実際、「発光」チャンネルのみの設定だと、ライトの色によるマテリアルの色の変化が表現できません。
なお、この手法は冨士さんのアドバイスにより得たものです。謝辞は後ほど(^^;)他にも教えてもらったことあるんで。
輪郭の付け方
輪郭もレンダリング設定内のセルシェーダーを使用すると便利なのですが、先に挙げた問題点もありますので、これまたSLAを使用します。
具体的にはアルファマップでFresnelを使用します。
そして以下のように設定してください。黒と白のパレットの位置で、輪郭線の太さが変わります。
これで輪郭専用のマテリアルが出来上がりますので、輪郭線をつけたいオブジェクトの一番最後のテクスチャとして貼り付けてください。なお、投影方法は関係ありません。
Fresnelはカメラから見たオブジェクト上のポリゴンの向きで色を決定するシェーダーです。今回はカメラから見てそのポリゴンが90度に近ければ近いほど黒くする…といった設定を行い、普通オブジェクトでは輪郭に近ければ近いほどカメラに垂直にポリゴンが位置するという仮定の下の設定です。
ですので、カメラに対して90度近い角度になるポリゴンがないオブジェクトでは輪郭線が発生しない場合もあります。
右の例では立方体と球を配置していますが、球体では常にカメラに対して90度近いポリゴンが存在しているので輪郭線が発生していますが、立方体の方は輪郭線にあたる部分に必ずしも90度程度のポリゴンが存在するとは限りませんので、輪郭が出ず、あるいは面全体が輪郭線扱いになってしまったりします。
オブジェクトによって適応できる、できない設定と把握しておいてください。
Cinema4D標準機能でのより細かい輪郭線の設定を望むのがよくわかるでしょう(^^;)。
ちなみに、輪郭線だけのマテリアルをオブジェクトの一番最後のテクスチャとして適応させると、エディタ上そのオブジェクトが真っ黒になってしまって、操作がしにくくなってしまいます。
その場合は、通常のカラーチャンネルや発光チャンネルのテクスチャ設定で乗算設定にするか、
SLAのFusionを使用し、カラーチャンネルや発光チャンネルに乗算するようにしてください。
陰と影を統一色にする方法
以上の方法でセルレンダーを行うことは可能ですが、一点問題があります。今までの手法でSLAを設定した場合、「陰」までは制御できますが、「影」の色を制御できません。
上の図はライトの影の機能をON/OFFと切り替えたものですが、「陰」部分は紫色に制御できていますが、「影」は普通に影っています。紫の部分に普通に黒ずんだ影が重なっているというわけです。
やはり「影」の色も「陰」に合わせたいニーズもありますのでどうにかしたいところですが、ライトの機能の中の影の色指定では色が上乗せになってしまうだけなので、うまくいかないでしょう。
そこでやはりSLAの中にあるLumasを使用します。
Lumasはオブジェクトに照明があたっている部分を調整するシェーダーなのですが(少し違うかも(^^;)よくわからんので…すんません)、言い換えて「Lumasが働く部分は照明があたる部分」と捉え、それを引き算することにより「陰と影の部分」を導き出すことが出来ます。
具体的には、まずアルファチャンネルにLumasを適応させ、以下のように設定します。
ちなみに、コントラストを設定して、境目の幅を調整することができますが、他のパラメータは上の通りのままが良いでしょう。
で、この設定で照明があたっている部分がアルファマップにより除外されるので、今度は「発光」なり「カラー」なりのチャンネルで色を設定し、「陰と影」のマテリアルが完成するので、これをテクスチャとして任意のオブジェクトの最後に貼り付ける…と。
すると右のように陰と影を同じ色に指定することが可能です。サンプルはなんか不気味な効果になってしまいましたが(^^;)こういう可愛い系のキャラの場合は影を消して陰だけで表現した方が良いのかしらん…?、セル画調での効果を出しやすくなると思います。
なお、当然のことながらこの陰影マテリアルはそれより下のテクスチャを上書きしてしまうので、下のバンプマップなどが無効になってしまったりします右の例で言えば髪の毛の凹凸。
必要によってはいくつかの陰影マテリアルを使うか、あるいはバンプマップの設定されているマテリアルにFusionでLumas効果を組み込んでください。
Lumas効果は座標軸には関係しないので、どのマテリアルにも効果を適応させることが出来ますたぶん。
なお、これらの方法も冨士さんに教えていただきました。いつもいつもご教授いただき、感謝しております(__)。