Cinema 4Dでアニメ眉の表現
手描きのアニメのキャラクターの前髪の上に眉や目が描かれるのは、キャラクターの表情がわかりやすくする表現です。
ただ、これを3DCGソフトを使っての2D表現にするトゥーンレンダリングやセルレンダリングという手法では、とても難しいのです。というのも3DCGソフトは基本的には現実に沿ってレンダリングをするため、手前に何かものがあれば隠れて見えなくなります。現実でも前髪が長ければ、眉は隠れてしまうのと同じです。
3Dツールによっては、前後関係を無視して強制的にレンダリングする機能もありますが、そうなると今度は髪以外のものが手前に来たときに見えてしまうことになり困ります。
他の方法としては、通常のレンダリングとは別に眉だけレンダリングして、After Effectsなどで合成してしまう方法があります。ただ、これは工程が1つ増えてますので避けたいところです。
できれば、普通にレンダリングした状態で下記のような状態にしたいものです。
これを解決するには、ノードマテリアルの<レイをトレース>ノードで解決できます。この<レイをトレース>は、指定したところからレイを飛ばし、最初にヒットしたサーフェイスの情報を返します。これを使うことで前髪の後ろにある眉の状態をサーフェイスに反映できます。イメージとしては下図をご覧ください。
<レイをトレース>で得られる情報は、カラーやジオメトリ法線、オブジェクトなどが取得できます。
カラーが取得できるので、肌と眉の色が違えばオブジェクトの色で眉と肌を判定できます。判定方法は以下のようなノードです。
<レイをトレース>ノードで髪の向こう側のオブジェクトの色を出力して、<比較>ノードで演算を等しいにしておけば、眉毛のカラーと比較して同じであればTure (1:つまり白)、違う場合はFalse (0:黒)が出力されます。これをアルファチャンネルに入力すれば、マスクとして使えます。
あとはこのマテリアルを髪のマテリアルの上に重ねればOKです。
この方法には、眉が単色だった場合のみできる方法です。細眉だったり、眉の輪郭だけ髪に透過させたい場合に使えます。
ただ、大きな制限があります。眉かどうかをカラーで判定しているので、基本単色でしかできません。数色で構成されている場合は、複数の<比較>ノードを追加して結果を合成して使う方法がありますが、テクスチャやグラデーションがあるようなケースでは使えません。
また、<レイをトレース>で出力されるカラーは、ライティングされたマテリアルのカラーになるので、発光マテリアルなどライティングによって色が変化しない必要があります。
テクスチャが使われている眉の場合
眉を強制的にレンダリングする方法もあります。こちらは<レイをトレース>のオブジェクト出力を活用でします。この<レイをトレース>ノードのオブジェクトという出力は、Cinema 4Dが内部的に自動的に割り当てているオブジェクトのユニークID(データタイプ: Uuid)を出力します。
これを<オブジェクトリンク>ノードで眉のオブジェクトのユニークIDを出力して<比較ノード>の比較結果をアルファマスクとして使います。
また、マテリアルの発光チャンネルに、<レイをトレース>ノードのカラーを入力すれば眉のカラーがそのままレンダリングされます。
ただし、こちらの方法にも制限があります。これはオブジェクトで比較するため眉が別オブジェクトになっている必要があります。そのため、顔と眉を一つのモデルで作成している場合は使えません。モーフターゲットで表情をコントロールしているケースでは、オブジェクト管理が少し面倒になるかもしれません。
こちらのケースでも、<レイをトレース>で出力されるカラーは、ライティングされたマテリアルのカラーになるので、発光マテリアルなど色が変化しないほうが自然に見えると思います。
ぜひ、表現に合わせて試してみてください。
この記事が気に入ったらサポートをしてみませんか?