GreasePencilを使ったセルルックもあるとのことで、やってみた。
手順解説
準備
RenderPropertiesのColorManagement設定を開く。
ViewTransformを Standardにし、LookはNoneにしておく。
そして画面内にカメラを配置しておくこと(でないとラインは描画されない)
GreasePencilでアウトラインを描写する
アウトラインを出す
Shift + A – GreasePencil と進み、今回は勉強を兼ねて Blankを実行する(下にあるCollectionLineArtとかのほうが最初からモディファイアなどが割り当てられているので便利)。
生成されたGreasePencilオブジェクトを選択した状態で ModifierPropertiesを開き、AddModifierから LineArtモディファイアを追加する。
SourceTyepはどの範囲でLineArtを影響させるかを指定。Scene全体ならScene、CollectionならCollection、ひとつのObjectならObject。
一つずついちいちは大変なので、やはりCollection単位を扱うのがベターだと思う。アウトライナーでコレクションをきれいに仕分けしておくと作業に見通しが聞きやすい
そしてすぐ下の箇所で具体的にどのCollectionやオブジェクトなのかを設定する。
LayerとMaterialもデフォルト状態ならひとつなはずのでとりあえず割り当てておく。
アウトラインを調整する
線の太さはModifierPropertiesのLinethicknessで設定する。
色の変更は MaterialPropertiesの Stroke – BaseColorで行う。
ObjectPropertiesのViewportDisplayで InFrontを有効化するとよりイラストっぽさが出るとのこと。
レンダーしたときにWarningが出る
To Render Grease Pencil enable combined and z passes という警告が表示される
これはViewLayerの箇所からチェックを入れることで解消される。
Tipsや気になった箇所
重さ対策
ビューポート上で非表示にしてもあまり軽くならなかったのでなぜだろうと思っていたが、このLineArtModifierのRealtimeの部分を非アクティブ化しておくと軽くなった。
どうも複数のGreasePencilを配置すると重くなるんじゃないかという気がする。アニメーションを作ったりするときに差し障りがあるので、ビューポート上で表示しないよう目のアイコンをオフにしてみたが軽くならなかった。
GreasePencilを割り当てるオブジェクトはひとつのコレクションにネストして格納し、基本一つのGreasePencilだけを使うようにすることで対処した。
色や太さを変えたいとか、微調整したい場合は、上記のコレクションからは除外し、個別にOutlineHelperなどでアウトラインを作成するという方法にしている。
アウトラインのマテリアルを使い分ける
例えば髪と体で別個の色でアウトラインを出したいという場合がある。デフォルトだと複数GreasePencilオブジェクトを配置してもマテリアルは共有する設定になっている。(ただ複数のGreasePencilは重い)
分けたい場合は、とりあえずMaterialPropertiesに移動し、プラスアイコンから新規のアウトライン用マテリアル作成する。で作った方に名前をつけ、アクティブにしておく。
それから今度はモディファイアプロパティへ移動し、Materialの箇所を切り替える(アイコンをクリックすると出る)
これでいけるはず。
アウトラインが指定していないオブジェクトにまで描写されてしまう問題
指定したコレクションやオブジェクトでない部分に輪郭線が転移してしまうという現象がある。
これはモディファイアの Intersection の最初の領域をチェックし、
Chainingの一番上 Intersection with Contour にチェックを入れるという2つの作業で解消できる。
アウトラインを部分的に非表示にする/
目の周りにはアウトラインを出したくないということがあった。
ただしこのGreasePencilはDrawモードで描写したものではなく、CollectionLineArtやObjectLineArtの方。
対象オブジェクトを選択しEditModeに移り、まぶたあたりの頂点を選択して頂点グループに割り当てていく。
この頂点グループの名前を参照することになるのでわかりやすく重複しないものにしておく。(今回はGreaseNoOutline)
GreasePencilオブジェクトを選択し、ObjectDataPropertiesを開く。
VertexGroupsからプラスアイコンで頂点グループを追加する(こっちはGreasePencilの頂点グループ。さっきのはメッシュの頂点グループなので注意!)
同じくGreasePencilオブジェクトのModifierPropertiesに移動する。
LineArtModifierの VertexWeightTransferへ移動する。
このFilterSourceに一番初めに作ったメッシュの側の頂点グループ(GreaseNoOutline)を割り当てるというかFilterなのでちゃんと参照できるように記入する(今回の例だとGreaseNoOutlineなのでGreaseとだけ入れたが、フルで指定するほうが確実かもしれない)
その下のMatchOutputのチェックは外しておく。
Targetの箇所は、クリックするとプルダウンで候補が表示されるはずなのでそいつを割り当てる(2番めに作った後者の頂点グループGreaseVertex)
そしたらAddModifierからOpacityModifierを追加する。
OpacityFactorをゼロにし、InfluenceからVertexGroupにはGreasePencilオブジェクトで作った頂点グループを割り当てる(これも2番めに作った方)
これで目の周りが消えれば一応オッケー。
ただなかなかうまく行かず他にいい方法があるような気もする。
特に頂点グループの名前を変更したりすると割り当てられていたグループも参照できなくなるので注意。
手書きの線っぽくする ・ 線に歪みを出す
ラインアートオブジェクトを選択して、VisualEffectPropertiesからWaveDistortionエフェクトを加える。
Amplitudeが波線の高さで、Periodが波の間隔。
画像のようにAmplitude5、Period100だとこんな感じ
アウトラインがちぎれる
なぜかこういう風にアウトラインがちぎれると悩まされたことがあった。
原因は同じ形状のオブジェクトを同じ位置に重ねて配置していると起こるので、一つを非表示にするなり位置をずらすなりすることで解消された。