広告
広告

Blender でセルルックを作る方法まとめ

カテゴリ:blender

線画の描画は輪郭抽出する方法まとめを参照。

目次

ビュー変換の設定

Eevee

Blender レンダー

Cycles

法線のスムージング

コンポジットを使う方法

UV をレンダリングする方法

水彩

外部リンク

ビュー変換の設定

Blender 2.79 からビュー変換のデフォルトが Filmic になった。Filmic はダイナミックレンジが広がるため、フォトリアルなルックでは重要だ。しかしアーティストが直接色を指定するセルルックでは、コントラストの低下や色の変化が起こるため推奨しない。セルルックではビュー変換をデフォルトにした方がよい。

flimic VS. default
Filmic とデフォルトとの比較

Eevee

Eevee のセルルック技法まとめ

Blender Render

ノードでセルルック

basic
基本的なノード
ramp
ノード上で範囲を調整できるようにする
影の中にグラデーションをつける
影の中に影をつくる

テクスチャを使う場合

bi texture
テクスチャで陰色を指定する場合のノード

その他

任意の場所に影を作る

考察編 02: 新トゥーンマテリアルの設定と、アニメ表現における陰色の決定要因のお話。

顔の中に口を埋め込む

Cycles

OSL と放射(Emission)ノードとを使えば Cycles でもセルルックができる。OSL のランバートシェーダは以下のようになる。このランバートシェーダはライトの位置を入力する必要がある。ライトの位置は Combine XYZ とドライバーとで指定できる。

OSL を使うと GPU を使ったレンダリングはできないことに注意する。OSL を有効にするには「プロパティパネル > シーン > パフォーマンスの Open Shading Language」にチェックを入れる。

osl
OSL を有効にする
shader lambert(
    vector light_location = vector(0,0,0),
    float threshold = 0.2,
    float strength = 1.0,
    output color Color = color(1,1,1)
)
{
    vector to_light = light_location - P;
    vector lay_dir = normalize(to_light);
    float val = dot(N, lay_dir);
    if( val < threshold ){
        // invisible from light location
        Color = color(0,0,0);
        return;
    }
    
    float distance_to_light = length(to_light);
    int is_shadow = trace(P, lay_dir, "maxdist", distance_to_light);
    if( is_shadow > 0 ){
        // shadow area
        Color = color(0,0,0);
        return;
    }
    
    Color = val/(distance_to_light*distance_to_light) * strength;
}
result
ノードと実行結果

複数ライトを使う場合は Add を使う。

multi light
光源を複数使う場合

.blend ファイルダウンロード

放射ノードの間接光を無効にする

ライトパスの「カメラレイか?(Is Camera Ray)」を使うと間接光を無効化できる。放射ノードの強さにつなぐ場合は影ができる。透過ノードと組み合わせると影も消せる。

emit direct
放射ノードに直接つなぐ場合
emit transparent
透過ノードと組み合わせる場合

Toonkit for Cycles($40)は輪郭抽出やフォンシェーダのような便利なノードが使える。

Cyclesのトゥーンシェーダ【3DCG(Blender)で日本のアニメ的な表現をする方法まとめ】

任意の場所に影を作る(Cycles)

法線のスムージング

法線を手動で編集する方法はBlender で法線を編集するアドオンを参照。 この項目では球ポリゴンの法線をコピーする方法を紹介する。

法線の表示

Mapcap を使えば法線を可視化できる。プロパティパネル > シェーディング > Matcap にチェックを入れ、虹色の球を選択する。

matcap
Matcap による法線表示

法線転写の手順

球の法線を顔にコピーするには、まず頭を包むような球を作成し、その球のシェーディングをスムーズにする。

sphere
顔を包む球

次に頭ポリゴンの自動スムーズにチェックを入れる。

auto smooth
自動スムーズ

最後に頭ポリゴンにデータ転送モディフィアをつける。これにはショートカットも用意されており、転送先メッシュ(頭のメッシュ)、転送元メッシュ(球のメッシュ)と選択した後に「Ctrl + Shift + T > カスタム法線」を選択する。

data transfer setting
データ転送の設定

ショートカットを使う場合は頂点グループで法線の転写先(頭のメッシュ)をマスクする機能が使えないデメリットがある。

shortcut
Ctrl + Shift + T を使う場合

陰が凸凹になるときは、データ転送の下に細分割曲面をつける。

modifier stack
データ転送の後で細分割曲面

カスタム法線が不要になった場合は形状データから削除できる。

delete cusom normals
カスタム法線の削除

法線メッシュの編集

コピーした頭を使う

球の法線に違和感を覚えるときはコピーした頭ポリゴンを使う方法もある。コピーした頭ポリゴンに「ポリゴン数削減」と「細分割曲面」とを適用してデータ転送する。

カプセルポリゴン

カプセル型のポリゴンの法線をコピーする方法もある。

capsule polygon
カプセル型のポリゴン

コンポジットで陰色を付ける方法

コンポジットで色を付ける方法は3つのレンダーレイヤーを使って色を付ける。ひとつ目はグレーでシェーディングしたレイヤー、ふたつ目は影のない色でレンダリングしたレイヤー、最後は影色でレンダリングしたレイヤーだ。これはマテリアルでやっていたことをコンポジットでやっているだけだ。

この方法はテクスチャの使い方に制限がある。マテリアルオーバーライドを使ってレンダリングするので、レンダーレイヤーあたりテクスチャが1枚しか使えない。既存のモデルでこの方法を使う場合はテクスチャを結合し、UV を修正する必要がある。

手順

明るい色のレンダーレイヤー・陰色のレンダーレイヤー・マスク用のレンダーレイヤーを用意してノードで合成する。

layer
レンダーレイヤーの設定
ノード

テクスチャを使う場合

実際はこの球のように単色で塗られることはなく、テクスチャが使われるだろう。 その場合には以下の3つのレンダーレイヤーとテクスチャとを用意しミックスする。

  • 明るい色でレンダリングされたレイヤー
  • 陰色でレンダリングされたレイヤー
  • 影色を指定するマスクレイヤー

マテリアルを設定する際にはマテリアルオーバーライドを使う。 マテリアルオーバーライドを指定すると、そのシーンのすべてのオブジェクトは指定したマテリアルを適用してレンダリングされる。 これを使わないとモデルを複製する必要があるうえ、レイヤーを3つ消費する。

material override
マテリアルオーバーライド指定

Blender Render では明るい色・陰色を指定するマテリアルに Shadeless を指定すると、余計な影が乗らなくなる。

shadeless
Blender Render で Shadelss の指定

マスクマテリアルのテクスチャを黒で塗ると、そこに影色を乗せられる。

mask texture
マスクテクスチャに常に影になる場所を指定する
render results
それぞれのレイヤーのレンダリング結果:左からマスク、影色、明るい色

レイヤーをミックスするノードは以下のようになる。

レンダーレイヤーをミックスするノード

.blend ファイルダウンロード

UV をレンダリングする方法

UV をレンダリングする方法はレンダリングされた UV をもとにコンポジットでテクスチャを参照する。これはマテリアルオーバーライドを使う方法よりも高速でセットアップの手間が少ない。加えて UV 座標が変更されない限りテクスチャを編集しても再レンダリングする必要がない。

ただし透過マテリアルを処理できず、複数のオブジェクトがある場合はマスクする手間がかかる欠点がある。

設定

「レンダーレイヤー > パス > UV」にチェックを入れる。

enable uv
UV の有効化

透過を無効にする。

disable transparent
透過を無効にする

そしてグレーでレンダリングする。このグレーのレンダリング結果をもとにどこを陰にするかをきめる。マテリアルオーバーライドを使うと、いちいちマテリアルからテクスチャをはがす手間が省ける。

コンポジット

通常のテクスチャと影色のテクスチャとを用意して、コンポジットで合成する。

uv-node
コンポジットノード

マテリアルインデックスやオブジェクトインデックスでマスクする

オブジェクトやマテリアルごとに参照するテクスチャが異なる場合は、オブジェクトインデックスやマテリアルインデックスでマスクする。マテリアルオーバーライドを使ってシェーディングした場合、マテリアルインデックスは取得できない。そこでマテリアルインデックスのみを出力するレンダーレイヤーを作成し、そのレンダーレイヤーからマテリアルインデックスを取得する。

水彩

再現:スタジオジブリさんの水彩コンポジット

blender 3d『水彩調の3DCGテスト設定』

[Unite]映像制作にも使える高機能シェーダ「ユニティちゃんトゥーンシェーダーVer.2」はどのように作られたのか

もっとアニメらしく!>>ゲーム&アニメのセルルック3D最新事情(2016.09.21)

[CEDEC]「STREET FIGHTER V」のアートディレクションに見るイメージイラストを3Dで再現するカプコンの秘伝

西川善司の「試験に出るゲームグラフィックス」(1)「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密,前編

西川善司の「試験に出るゲームグラフィックス」(2)「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密,後編

[Unite]Unityがプリキュアの制作現場を効率化する。

セルアニメ風(トゥーンレンダリング)“天使の輪”〈その1〉

セルアニメ風(トゥーンレンダリング)“天使の輪”〈その2〉




関連記事

任意の場所に影を作る

輪郭抽出する方法まとめ

顔の中に口を埋め込む

Blender 記事の目次


広告
広告