見出し画像

Blenderなんかやっていたら無職になっちゃいました(涙)

こんにちは。小説家で映像作家の榊正宗です。

↓こちら、わたしが無職になってしまった証拠写真です。

無職になってしまった榊正宗 画像はリンク先のアマゾンプライムより引用

って、また、いつもの釣りじゃねぇか!

と、お怒りの皆様、わたしは嘘はついてませんよ(・∀・)!それに、「いつもの」ってなんですか👿!プンプン💢!

Blenderなんかやってたので、うっかり、無職(転生のスタッフ)になっちゃいました(爆笑)。またオレ何かやっちゃいました😉?

さて、あんまり(オッサン構文)やりすぎると本気で怒る人がいそうなのでこの辺で。

改めまして、無職転生の20話のフィギュアのシーンを担当致しました。もちろん、Blenderで制作しております!

今日の記事は、実際に無職転生にも使われているテクニックではございますが、お仕事の守秘義務が関わる作品独自のテクニックではなく、わたしが昔から力を入れております3DCGの輪郭検出技法についてまとめたいと思います。(※今回は無職転生に関するメイキング記事ではありませんのでご了承下さい。ここでは権利的にも最重要機密であるロキシーちゃんのパンツは見れません。観たい人はアマプラで!製作委員会に許可申請とかしてない記事なので、あくまで一般的な技法の検証です。って書いておかないと、最近わりとマジでこのあたり厳しいのです……)

こちらの記事は、BLUGjpさん主催のアドベント・カレンダーの記事になっております。

今年のアドベント・カレンダーは、まだ、あんまり埋まってないようなので(12月2日時点)、どんどん参加して、Blender界隈を盛り上げましょう!

そういえば、とある方に今年はBlendxJPやらないんですか?って、聞いたら、『お酒が飲めないからやらない』とおっしゃってましたよ!(※真面目な話をすると、一方的なイベント発表だけでなく、ユーザー同士のコミュニケーションを重視されているそうです)

さて、Blenderの輪郭線ですが、いろいろな手法があります。最近LineArtという新機能が実装されて、話題になりましたよね。実際、どの輪郭線描画機能が良いのか徹底的に検証してみました。

今回は、FreeStyle、LineArt、Toonkit、塗り分け法、反転ポリゴンの5つの技法について比較検証していきたいと思います!

今回長い記事なので、忘れないうちにポチッと❤マークをお願いします。(モチベーションがアップします!)

■流体での輪郭線の比較

では早速、下記は、流体に対して輪郭線を出してみた比較動画とそのレンダリングにかかった時間です。輪郭線以外の条件は基本同じです。※今回はEeveeを使用しています。ToonkitのみCyclesです。

▼FreeStyle

レンダリング時間 1分55秒

線そのものはとてもきれいですが、よくみると、動画としては線のチラツキが発生しています。

▼LineArt

レンダリング時間 1分31秒

FreeStyleと似た感じのチラツキが出ています。デフォルトでは、やや線が出過ぎる感じですね。ベイクしてからグリースペンシルで線を手作業で消すという運用が必要のようです。

▼Toonkit

レンダリング時間 9分40秒

ちょっと線が薄いのは、太くすると線が乱れるためです。動画としてはかなりキレイですが、Cyclesにしか対応してないのでレンダリング時間が遅いのが難点です。

▼塗り分け法

レンダリング時間 34秒

静止画としてはやや太さにばらつきのあるノイジーな線ですが、動画だと比較的自然です。線が出過ぎることもなくバランスが良い仕上がりになりました。ちなみにこの塗り分け法という技法は2008年頃に神風動画さんのセミナーで知った技法です。なお、元ネタの神風動画さんは色ではなくマスクをたくさん使われていて、After Effectsを使用されています。

▼反転ポリゴン

レンダリング時間 27秒

思ったよりきれいな線になりました。レンダリングも最速でした。このくらいなら案外映像用途でも使えるかも。ただし1000万ポリゴンとかあると、2000万ポリゴンになっちゃうので、ポリゴン数が膨大な背景モデルなんかには使えません。

■それぞれの輪郭検出の詳細なレビュー

▼Freestyle

静止画については抜群にきれいで線の装飾もたくさんの種類があります。静止画についてはめちゃくちゃ優秀です。ですが、残念ながら、動画については、かなり弱いです。細かい線がチラついたり途切れたりします。この調整は静止画だったらそれほど負担ではないのですが、動画ではかなり厳しいです。

漫画家さんには圧倒的にオススメ。でも、アニメ業界では絶対に使わないください。とくに背景動画での使用は禁止です!

▼LineArt

とても面白い機能です。ベイクすることで、3Dで抽出した輪郭線がグリースペンシルになります。つまり、「理想の線がでなければ、描けばいいじゃない?」という、マリー・アントワネット的なツールが、このLineArtです。まったくそのとおりなのですが、実際にベイクして書いてみると、フレームが多い場合はかなり大変です。コマ数の少ない、手書きしたグリースペンシルの補助として使うのが良いと思います。グリースペンシルとの相性は抜群なので、顔だけ手描きのグリースペンシルといった使い方がオススメです。線質、線の太さが完全にいっしょになるので、ほんとうに全部手で書いたようになります。

↑こちらのようなグリースペンシルと合成した作例では、LineArtが良いと思います。線質が同じなので、全部グリースペンシルで手描きしたように見えます。

リアルタイムでも表示可能なLineArtですが、ポリゴン数が増えるとめちゃくちゃ重くなります。とあるアニメのお仕事で、車を6台走らせるシーンで使用しましたが、144フレームのレンダリングで8時間ほどかかってしまいました(涙)その後に塗り分け法でやりなおしたら30分で終わりました。

▼Toonkit

Blenderマーケットで販売されている有料アドオンです。

動画はすごくきれいなのですが、太い線が苦手です。細くすると若干薄くなりすぎる傾向があります。また、線の設定があまりないので、狙った場所に線を出すのが難しいです。

太い線が苦手

現在、ToonkitはCyclesでしか使えません。CyclesXの登場で、状況は変わるかもしれませんが、現状では他の輪郭検出と比較して、レンダリング速度が遅くなるだけなので、あまり魅力を感じませんでした。

▼塗り分け法

我らが大大大本命!塗り分け法。わたしはこちらが一押しです!昔は頂点カラーでやっていましたが、最近はUVカラーの利用をオススメしております。こちらについては、ピックアップして、のちほど設定方法を詳細に説明します。

塗り分け法の輪郭線は、静止画としてはややノイズが入った、太さにばらつきのある線になります。しかし、動画にするととても自然で、手描きアニメの線と馴染む、アナログ感のある線になります。

昔は、こちらの技法を人に勧めると、塗り分けるのが面倒だと言われることがありました。たしかに昔はそうだったかもしれません。しかし、AOVが搭載されたことにより状況が変わりました。(詳細は後述)
また、検出した線がアンチエイリアスなしになってしまう問題も、コンポジットノードのアンチエイリアスノードの実装で解消されました。

昨今、Blenderを採用するアニメ作品が増えています。アニメ作品に使う輪郭検出は、塗り分け法一択だと思います。アニメ業界に広まれ!

▼反転ポリゴン

みんな大好き反転ポリゴン!ゲームやVRなどは、ほぼこの技法が使われています。Blenderではソリッド化モディファイアで手軽に実装できるため、Youtubeなどのモデリング講座では多くの方が、こちらを推奨されているようです。欠点としては、近くと遠くで太さが変わること。迫力が出て良いのですが、線ではなく立体であることがわかってしまい、3Dっぽさが強調されてしまうことがあります。このため手描きアニメとの親和性があまり高くありません。

意図せずに遠近感が線に出てしまう

ソリッド化のモディファイアーにドライバを仕込むことでシーン単位では、線の太さをカメラに対して自動制御可能です。しかし、オブジェクト単位で部分的にカメラに合わせて輪郭線を調整することは、現状は難しいようです。(カメラ距離で頂点ウェイトを調整すれば出来るかもですが、うーん……)

検証では、レンダリング速度は最速でしたが、必ず2倍以上にポリゴンが増えますので、ハイポリになるとめちゃくちゃ重くなります。背景に使ってみたことがありますが、レンダリングどころか、ポリゴンが増えすぎてBlenderが落ちてしまいました(涙)リアルタイム表示のキャラクター向きの技法だと思います。

■総評

クリックして拡大して読んでね!

こちらに総評をまとめました。

結論しては、静止画ならFreestyle、動画なら塗り分け法ということになると思います。

■ピックアップ

今回はピックアップとして塗り分け法の基本的な実装方法をご紹介します。Blender2.93以降では、塗り分け法は、AOVとアンチエイリアスノードを使用するのがオススメです。

▼AOVを設定


AOVは、新しく搭載されたマテリアル出力機能です。簡単にいうと、マテリアルノードで設定できるものはなんでも、レンダーパスに出力できます。この機能がなかった頃は、レンダーレイヤーを分ける作業が大変でした。

Shadingタブからシェーダーエディタの、追加→出力→AOV出力で出力先を設定します。

たとえば、Lineという名前をつければLineというレンダーパスを増やす準備が整います(※これだけではレンダーパスにはなりません)

ビューレイヤープロパティから、シェーダーAOVの項目の+ボタンを押すとレンダーパスに出力されるAOVが追加されます。先程設定したLineと同じ名前にするとシェーダーノードとレンダーパスが接続されコンポジットノードで使用可能になります。(名前は手動で設定する必要があります)

※ラインと翻訳されてますがLineのことです

上記はAOVにUVマップをカラー出力した例です。ビューポートでAOVを確認したい場合は、レンダーシェーディングにして、レンダーパスの項目を選ぶと追加したAOVに切り替えることが可能です。

塗り分け法は、頂点カラー、深度、ノーマルなど様々な色情報を使用して、塗り分けることで、その境目に線を出す技法です。AOVが実装されたことにより、手作業で塗り分けなくても、いい感じの線を出すマテリアルをいろいろと試すのが楽になりました。ものによっては手作業の塗り分けは不要です。

今回は初心者向けに、UVカラーの使用を前提にお話を進めます。

▼コンポジットを設定

塗り分け法はAOVから取り出した色情報にソーベルフィルターをかけることで輪郭を検出します。追加→フィルター→フィルターを追加して、タイプをソーベルにします。


こんな感じに輪郭が検出されます。なんか色が気になりますね。このままだと輪郭線にならないので、こちらをカラーランプで調整します。

追加→コンバーター→カラーランプで、白黒の輪郭線になります。

カラーランプを一定にすると線がくっきりします。昔、ここで反転を使っていたのですが、カラーランプの色を、左側を白に、右側を黒にすればカラーランプだけで白地の黒の線が表現出来ることに最近気が付きました。

昔は、ここで線のジャギを消すために200%でレンダリングしてAfterEffectsで縮小することでアンチエイリアスをつけたりしていましたが、アンチエイリアスノードが実装されたので、そのまま完成出力が出来るようになりました。

元のマテリアルに輪郭線を合成する場合は、追加→カラー→ミックスを使用します。輪郭線は係数に接続してください。

たった4つのノードをつなげるだけ!

元のマテリアルを、画像からミックスの下段に接続します。上段に指定した色が輪郭線の色になります。

如何でしたでしょうか。めんどくさいと思われていた塗り分け法ですが、コンポジットが内包されているBlenderだと簡単に実装できます。昔はAfterEffectsを使用していたので、ほんとうに楽に実装できるようになりました。

静止画最強のFreeStyleとAfterEffectsなどの外部ソフト不要で実装できる動画最強の塗り分け法。この両方が、Blenderでは本当に手軽に利用できます。Blenderめっちゃ凄いですね!

セル調アニメ風の3DはBlenderを使用するのが最強だと思うんですよね。

(オマケ)

▼VRoidの輪郭線

塗り分け法を使うと、VRoidの輪郭線が出しやすいと思います。VRoidはアバターパーツの種類を増やすためだと思われますが、透過テクスチャーが多用されています。他の技法だと、透過テクスチャーに対してうまく線が出ないので、透過テクスチャーのあるマテリアルをAOVで色に変換してやって線を出すのが良いかと思います。

輪郭専用のAOVカラーもテクスチャーで透過しておけば、ちゃんと線が透過した袖のところで出ますよ!透過テクスチャはアルファクリップを使いましょう。

▼線の太さも変えられますよ



検出した線のモノクロ画像から白をカラーキーで透過してから、インペイントというノードを追加すると輪郭線を太くすることが出来ます。

▼自動塗り分けノード

流体のサンプルはUVが使えないのでこのようなノードになっています。

生成とノーマルを絶妙に合成して色分けしています

▼UVを使った塗り分けのコツ

線を出したい場所にシームをマークします
展開するだけでもシームのところで色が変わります。これでも線は出ます。
それぞれの原点に設定してからSキー→0で単色に塗り分けられます。UV上で点の距離が遠いほど色の差が大きく太い線になります。
やったー!立体関係なく、狙った場所に線が出ました!

つまり、UVを使った塗り分けは、シームをマークしてバラバラになった面を、それぞれの原点を使って「Sキー→0」で点にしてやることで、線を出す場所を、FreeStyleの辺マークのようにコントロール出来るわけですね。すごいですね。めちゃくちゃ便利ですね。

▼省略作画も表現出来る

AOVで距離に応じて色を合成するシェーダーを実装することで省略作画を表現可能です。

▼実はリアルタイム表示も可能なんです

↑過去に一度実験して止まってますが、Unityなんかでは、塗りわけ法のリアルタイム表示が可能なんです。Blender開発のロードマップでは、ビューポートでのコンポジットのリアルタイム表示があるみたいなので、将来的には塗り分け法がBlender上でもリアルタイムで表示出来ると思います。

▼3dsMAXのPencil+4でも試してみました

レンダリング時間 1分28秒

流石にキレイですね~。でも、よく見るとFreeStyleほどではありませんが、ほんの少しだけノイズが入っていますね。Pencil+4も原理的にはFreeStyleと同じなので、ポリゴン数が増えるほどに、レンダリング速度については塗り分けのほうが高速になります。リアルタイムポストエフェクトが実装されたら、3dsMAXからBlenderの塗り分け法に移るメリットは大きいと思います。

塗り分け法そのものは、ただの二次元輪郭検出ですから、あらゆるソフトで実現できる昔からある手法です。ですが、もともとコンポジットが一体になっているのに加えて、AOVとアンチエイリアスノードの実装で、Blenderが一番手軽で使いやすくなってきています!ぜひお試し下さい!

▼過去の仕事でもちょいちょい使ってました。

▼破線なんかを作ることも出来ます

↑要するにマスクを作れば良いだけなので、破線なんかも自由自在に作れます。こちらのクイズでは下記のようなノードを使っています。



マスクは何でも良いのですが、今回は設定がらくな市松模様をつかいました。


マスクに使った市松模様をインペイントで外に広げてから使うのがポイントです。そのままですと、検出した輪郭線よりも狭い範囲しかマスク出来ません。

■無職転生20話ぜひ観てね!

最後になりましたが、無職転生20話にもこちらの技法を使用しております。無職転生は、こだわったので線を出す場所を頂点カラーで細かく塗り分けてあります。あと、顔だけはグリースペンシルで作画してあります。

ぜひアマゾンプライムでご確認下さい。

追伸
うつ病の薬もゼロになり、来年のお仕事も頂いております。ロートルで病気上がりの私なんかがお仕事を頂けるのは、たまたま、Blenderをやっていたおかげです。Blenderには感謝してもしきれないほど恩恵を受けております。

8年前にわたしにBlenderを教えてくれた、Sくん。そして、開発者の皆様。Blenderを使って盛り上げてくださっているユーザーの皆様。ここに、すべてのBlenderに関わる人に感謝の意を表明させていただきます。

↑アニメ業界で広くBlenderが使用されるようになりましたが、輪郭線の技法で苦労されているケースが多いようです。困ってる現場がありましたら、ぜひ、こちらの記事をご紹介下さい。










この記事が気に入ったらサポートをしてみませんか?