3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

3DCGをやるならBlenderのCyclesと向き合うことのススメ

(約 8,300文字の記事です。)
長文ですが、もし3DCG初心者で「レンダラー」についてよく分かっていない人ならばきっとお役に立てます。長文ですがお付き合いください。

f:id:yamato-tsukasa:20191023001334j:plain

Zbrushから3DCGに入った素人が、ZbrushメッシュをBlenderでリグ入れ&ポージングできるようになり、TwinmotionではなくてBlenderのCyclesでレンダリングしてみようかと思って色々と衝撃を受けた日記です。

Zbrushは主にフィギュア造形師など、レンダリングよりも3Dプリンタに行く過程で使われていることが多いですが、3DCGを扱う上でレンダリングエンジンとよく向き合う必要性を感じました。レンダラーには有料、無料、種類もたくさんありますが、私はしばらくはBlenderのCyclesと向き合うことにしました。

いいたいことが溢れてまとまらなそうなので、各項目ごとに分けて書きます。

Twinmotionのお手軽表現から抜けてわかったこと

f:id:yamato-tsukasa:20191013191024j:plain

Twinmotionは優秀なリアルタイムレンダラーだ。UE4ベースだから。そこはリスペクトしている。今後もしばらくはお世話になるつもりだ。だが、お手軽故に細部をいじれない。そこで今回からBlenderのレンダラーでの表現を模索し始めたわけです。

まずこれ、前回Zbrushで作ったナメコです。Zbrushのスクショ。

f:id:yamato-tsukasa:20191021233550p:plain

今回、これをBlenderにfbxで持っていってBlenderでレンダリングしてみたわけ。何も分からないからとりあえずやってみた。Blenderで初めてF12キーを押した気がする。結果、デフォルトでのEEVEEでのレンダリングであった。

f:id:yamato-tsukasa:20191022221831p:plain

もちろん最初はグレーのまま。あまりにも味気ないので、今まで身に付けた「頂点ペイント」を表示させる方法を利用して、Zbrush上で付けたポリペイントを表示させる。

f:id:yamato-tsukasa:20191022222040p:plain

いよいよナメコらしくなってきました。
この段階でだいぶ「見え方」が違う。3DCGで見え方が違うってのはとても重要だ。だって見せるために作っているのだから。
f:id:yamato-tsukasa:20191021233550p:plain:w160 f:id:yamato-tsukasa:20191022222040p:plain:w180


ちなみに最初は椎茸を作るつもりが、ふっくらさせて縁をグラデーションさせたらなぜかナメコになったので、もうナメコでいいや、という経緯。今では割とお気に入り。創作ではこういうことがよくある。

で、ライトの項目で影のON/OFF、影の濃淡の項目があった。

EEVEE(リアルタイムレンダラー)は絶妙なフェイク表現

f:id:yamato-tsukasa:20191022222205j:plain

ん?光源を制御しないで影だけが濃くなったり薄くなったりするのって、おかしくね?ありえないよね?

で、気付いた。EEVEEはUE4みたいにリアルタイムレンダラーだから、リアルタイム性を優先するために色んな部分を省略したり近似していたりする。牛本にも書いてあるとおりだ。

無料ではじめるBlender CG アニメーションテクニック ~3DCGの構造と動かし方がしっかりわかる 【Blender 2.8対応版】

無料ではじめるBlender CG アニメーションテクニック ~3DCGの構造と動かし方がしっかりわかる 【Blender 2.8対応版】

牛本でも最初にCyclesの説明があり、EEVEEの方が難易度高いよ、という断り書きがあってEEVEEのテクニックの紹介になっていた。なので、EEVEEは、箱庭表現ではあまり好ましくない。作業中の軽快なプレビューとして使うにはよさそうだが、最終仕上げならCyclesのほうがよさそうだ。(後述するが、やはり静止画出力ならCycles一択で、敢えてEEVEEを選ぶメリットがない。)

光を操るということ

よくよく考えてみると、3DCGでの表現の最終形態は、全て光の制御にあるわけで。静止画でも動画でも。光源が、オブジェクトに反射して、見える。見える結果を作る。それがレンダリング。だから、どのレンダラーを使おうが、どのソフトを使おうが、最終的に「光を操る」ことに全てが集約される。これに気付いた。

影を操るということ

立体感の表現は、影を操ることでもある。最初に感じたように、光源を一切変えずに影だけが変化するなど物理的にはあり得ない。(後述のAOを使えば多少は変わるけど。)
なので、レンダリングするということは、光と影を操ることなのだ。光源の調整が第一で、その次にオブジェクトの表面状態(マテリアル)が来る。光源なしにマテリアルでは何も表現できない。当たり前だが。

お絵描きと3DCG表現の決定的な違い(光源の考慮)

ちょっと脱線。
お絵描きで、赤を塗ると真っ赤になる。そりゃそうだ。
だが、3DCGでは、マテリアルを真っ赤にしても、レンダリング結果が真っ赤になるとは限らない。オブジェクト角度に応じたグラデーションで赤のコントラストが出来上がる。ツルピカ設定なら直接光の白が反射して見えることもあるだろう。

赤を塗っても赤じゃない。

これがお絵描きと3DCGとの決定的な違いだ。塗った色が必ずしも見えるとは限らない。(部分的にはみえること「も」ある)


お絵描きは二次元、3DCGは文字通り三次元だ。だが、この1つ分の次元の違いが「奥行き表現」だけだと思っていたのがさっきまでの私。普通の人もそう理解しているはずだ。上下左右前後で三次元でしょ?というのは正しい。

だが、実はお絵描きと違って次元が増えている部分がもう一つある。

実は、この1次元の違いは、キャンバスだけではなく、カラーパレットそのものに奥行きが付いて、照明でカラーパレットが照らされているという理解に達した。そしてカラーパレットはプールのように奥行きがある。

お絵描きのカラーパレットの赤、これは実は、視点と平行した角度0で(見る人の後頭部側から)白の照明に照らされた結果、見える赤である。なので、照明の角度を変えたり、赤の質感を変えたりすると、最初は真っ赤だった物が、どんどん赤の色味や質感が変わる。透明感のあるルビー色にもなる。3DCGでメッシュを赤に塗るということは、その見える赤の色や質感を塗ることなのだ。お絵描きのカラーパレットの色そのものが、すでに赤+質感になっている。赤の次元が1つ増えているのだ。質感という次元。ペンキの赤なのか、クレヨンの赤なのか、色鉛筆の赤なのか。油性マジックの赤なのか。(いわゆるPBRの質感設定のあれこれ)

3DCGというと、とにもかくにも立体表現に目が奪われがち。実際に私もそうだった。だが、更にもう一つの難敵は、実は質感表現だったりする。そして質感表現と向き合うためには、

レンダラーと向き合うことになる。

光の制御だ。光源の位置や強さというパラメトリックなことだけではない。レンダリングエンジンがどうやって光と影を作るのかというレンダラーの特性と向き合うことになる。

お手軽にTwinmotionを使っていては、ここに気づけなかった。またKeyshotやFusion 360などの外部レンダラーをお気軽に使っていても、気づけなかったと思う。パラメーターがない、そんなもんだ、と思い込みやすいからだ。

だがBlenderのレンダラーは色々できる。統合環境ソフトのレンダラーがそう簡単にパラメータが少なく制限されていることもないだろう。恐らくはMayaやUE4などもかなり幅広く表現できるはずだ。だがEEVEEで気づいたこの違和感、リアルタイム性を優先するUE4でも感じた可能性があるが、UE4にはCyclesに相当するような切り替え機能がない。だから気づけなかった可能性がある。そしてMayaはそもそも月額が高すぎて手が出ない。

生粋のPBR出身として進化してきたCyclesと、今主流のリアルタイムレンダラーなEEVEEとをすぐに切替えて両方試せたことが、私にとっての大きなエポックメイキングだったと思う。

Blender 2.8ではCyclesがGPUを使って演算できるようになっていたことも偶然味方した。どのVer. からGPU対応になったかは知らないが、そこそこのグラボを詰んだPCでその恩恵にあずかれるのは願ったり叶ったりだ。CPUのみと比較して10倍速はさすがに違いすぎる。3秒なら待てるが、30秒は待てない。GPU動作は3秒のほうを実現してくれる。これならばCyclesをメインに操作することすらできる。

Cyclesがオススメの理由

で、改めてEEVEEとCyclesとを比較するべく情報収集。一番役に立ったサイトがこちら。

Cycles vs. Eevee - 15 Limitations of Real Time Rendering in Blender 2.8 - CG Cookie

AOは要するに影の中の濃淡

主な違いはAOの表現の精度だ。AOの分かりやすい説明はこちら。

アンビエントオクルージョン・はじめの一歩 - アンビエントオクルージョンちゃん

AOは要するに影の中の濃淡表現なわけ。もちろん影とは直接光で作られた影がメインだが、それ以外の「影の中の影」の濃淡が、結局の所AO表現です、と言うわけ。その濃淡は、そりゃレイトレーシングなら忠実だし、近似したらどこかで誤差が大きくなる。だからCyclesとEEVEEでは精度が異なる。その代わり演算時間も大きく異なる。

だが、静止画でのアウトプットでほしいのは精度のいい方なので、Cyclesが私にとって必要、と言うことになる。EEVEEは作業中に活躍してもらおう。



とまぁ、ここまででTwinmotionやFusion 360のレンダラーベースだった頃からすっかり脱却した私。後は私の勝手な推察と、今後の方針のメモ。

背景のないスタジオ撮影オブジェクトが多い理由

3DCGモデルの紹介では、やたらと背景のないスタジオ撮影チックな絵が多い。ここに違和感を感じていたが、今なら分かる。

背景を作ると、背景を「見せる」ための照明技術が更に必要になってしまう。要するに手間なのだ。単純に「背景を用意する」手間だけではなくて、「背景を見せる手間」も追加されるのだ。つまり2重に手間がかかるわけだ。それに対して1枚のフラットな用紙を用意するだけで万能なスタジオセットならば、1つ作っておけば使い回せる。この手間の差だ。

そりゃ確かにわざわざ背景作らない。

今回の発見で、背景を「見せる」手間の存在に気付いたのです。
箱庭表現が多いのも、箱庭という領域そのものの広さを限定することで、その領域を「良く見せる」ための照明を設計しやすくなる。これが無限遠に達する広大なエリアなら、照明も広大になる。なのに使うカットが1, 2カットなら照明の設計の方のコストが多すぎる。カメラのフレーム外+アルファの箱庭にした方が照明を設計しやすい。箱庭にしない表現の方が、遥かに難易度が高い。むしろそういうシーケンシャル風景のほうが難しい。だが、非リアルタイムでシーケンシャル風景、必要か?必要な風景の領域は、既に決まっているのに?

頂点ペイントで行く理由

光と影の話に戻る。
3DCGでは、確かにモデルの形によって光と影ができるが、ややこしいことに、従来技術の産物として、ノーマルマップなどの技がある。これ、影を使って立体を表現するという逆説的なテクニック。光源の位置に対応するように影ができれば、多くの人は立体を認識する。この影のできやすさをテクスチャに記録した物がノーマルマップだ。

f:id:yamato-tsukasa:20191022234537j:plain
UE4のマテリアルのサンプルを眺めた結果 - 画力がないなら立体を作ればいい

ノーマルマップの表現は遠くから見るとかなり立体的だが、真横から見ると真っ平ら。影による擬似的な立体表現だからだ。

正確なノーマルマップの理解はGoogleで検索してください。

こんな風に、立体を表現する方法は、ダイレクトに凹凸を作る以外の方法がある。これによって頂点数を減らして軽くできるなどのメリットがあるわけだが、3DCGの学習を進める上で、今の私にとっては、純粋に、レンダラーの光と影の制御と学習に集中したい。なので、そういう小手先のテクニックは今は不要だ。後から学ぶ。なので、純粋に立体による凹凸と光と影が望ましい。

だが、いつまでもグレー一色だと寂しい。そこで頂点カラーの登場だ。頂点カラーならばZbrushでポリペイントとして塗れる。ま、立体の上にWindowsのペイントを貼り付けたような程度だが、そのシンプルさが逆にいい。テクスチャの解像度だとか、UV展開の歪みだとか、そういう細かい部分に囚われずに済む。Zbrush上で見たまんま描いて、みたまんま表示されるはず。ところがBlender上では見え方が違う。なぜだ?というように、シンプルだからこそ「なぜ違って見える?」を検討しやすくなる。Cyclesと向き合うには、これくらいシンプルでないと素人には難しい。

もちろん、後から順にテクスチャやマテリアルに踏み込む。だが今しばらくは、純粋に、メッシュの形と頂点ペイントとCyclesの特性を自分の物にしたい。ここら辺をシンプルにして完全に理解した上で、見え方の違いを検討することで、Cyclesの特性が理解できると思うからだ。

実際、このようにZbrushのスクショとCyclesとで違いがある。色味もそうだ。これはZbrush起因なのか、Blender起因なのか、Zbrush基準色に近づけるための光源のパラメータは?などの理解もZbrushとBlenderを使う上で非常に重要だ。ではどこがどう影響したか、そういう理解だ。

f:id:yamato-tsukasa:20191021233550p:plain:w160 f:id:yamato-tsukasa:20191022235150p:plain:w160

たかがナメコ、されどナメコ、なのである。

(実は既にスムーズシェードとフラットシェードという見え方の違いが出ているのだけれど、そこは既に理解したからOK。ちなみにZbrushはフラットシェードしかないため、必要以上にハイポリにしないと滑らかに見えないが、3Dプリンタ的にはそうでないとガタガタだったりするらしい。やはりZbrushと3Dプリンタは相性がいいらしい)

もちろん頂点ペイントといっても、ミドルポリ表現なので、Zbrush上で色のスムーズ(ぼかし)なども使えるから、純粋にWindowsのペイントツールよりは高性能(笑)
でもできることはその程度だ。細かいテクスチャ的な表現はできない。その必要もない。リアル志向にするならさっさとテクスチャ表現技術にジャンプアップすればいいだけだから。だが今はまだそのときではない。Cyclesそのものの理解が先。

それと並行して、ミドルポリの見え方の特性、もっとローポリでいいか、もっとハイポリがいいかの検討も兼ねている。広い絵ならばポリゴン数は低くていいし、寄った絵ならある程度ハイポリの方がいいことになる。その辺の、自分にとっての丁度いいポリゴン数も、やってみないと分からない。そのテストも兼ねる。

Cyclesと向き合うことで見えた3DCG表現の本質

今の少ない経験では、結論はこれだ。レンダラーと向き合うことで光を表現することの本質が分かった気がする。Blenderなら無料だし、だがCyclesは割と長い期間熟成されたレンダラーだから信頼できる。それ以外の要素は一端そぎおとして、シンプルなものを色々試したい。光と、オブジェクトと、頂点カラーと、Cycles。しばらくはこれで箱庭表現に必要な要素を理解したい。

最後に

今回の記事で8千文字近くを使ってお伝えしたいのは、3DCGをやるならば、早い段階で自分でメインとして使うレンダラーを決めるべきだという主張。というのも、レンダラーが変わるとノウハウが一気に変わる。ゼロスタートに戻るといってもいい。それだけ重要なことだ。だが、それを力説する人は少ないし、自分も軽視していた。お手軽で簡単に画像化、動画化できればそれでいい、と。だが、光を扱うことが3DCGの本質である以上、レンダラーを軽視しては遠回りする。最終出力が3Dプリンタならばどうでもいいことだが、画像、動画ならば無視できない。そして今、無料で使える高品質なレンダラーがBlender 2.8にはある。それを試さない手はない。それをお伝えしたかった。

もちろん、ソフトによっては有料で良質な物もあるだろう。だが、まず始めるならBlenderがいいと思ったのだ。Blender 2.8には勢いがある。試す価値はあると思うよ。

Blenderは無料だ。くどいが、2.8になってその勢いを感じる。EEVEEもCyclesも無料。グラフィックボードメーカーのNVIDIAもBlenderのスポンサーについた。IntelもAIデノイザーを開発し、2.81で実装される。NVIDIAもデノイザーを既にBlenderに提供している。NVIDIAとIntelは協業しているのは有名だ。私のPCもIntel CPU+NVIDIAグラボだ。

便利に使えて、高品質で、Blender 2.8以降の将来性を考えると、Blenderに親しんで損する要素が見当たらない。特定の有料ソフトの謎の使い勝手に縛られるくらいならBlenderのレンダラーの特性をつかんで思い通りに使って自由に表現できた方が将来性がある。そう思ったからこそ、この記事をしっかり執筆することにしたのです。

まずはレンダラーとしてBlenderを試してみるのも十分アリだと思います。


おまけ

ナメコがモデルさんみたいに見えてきた。ポージングしているようにすら見える。重症かもしれない(笑)
f:id:yamato-tsukasa:20191022232057j:plain

しばらくはナメコさんが登場し続けます。乞うご期待。




今回の創作活動は約3時間30分(累積 約1,185時間)
そのうちモデリング作業 約1時間30分(累積 約233時間)
(407回目のブログ更新)