見出し画像

【Blender #1】Eeveeすごい! 2.8xを触る

栄えあるPart1なので、張り切っていきます。今回のお題はこれです。
(長いです。もし読んでくれる方がいましたら、囲ってある部分だけ読めば大丈夫だと思います。)

なんかすごい複雑そうなのに、まさかの13分チュートリアル。外部のテクスチャも一切不要。凄すぎます。とりあえず見様見真似でやってみましょう。

大まかな流れは、
回転体を作る→立方体にパーティクルで回転体を設置  だけ!
複雑だったのは回転体のマテリアル設定くらいです。

このチュートリアルで学んだこと

①Eeveeについて
いままでのBlenderには、レンダリングエンジンがBlenderレンダーとCyclesレンダーしかありませんでした。Blenderは早いけど、透過とか反射とかが綺麗に表現できません。一方Cyclesだとその辺りが正確で、写実的な表現ができます。ただその代わり、「サンプリング数」を上げないとノイズが酷く、見れたものではありません。ノイズが気にならないくらいにサンプリング数を上げると時間がかかって1枚の画像のレンダリングに10分。1秒の動画を作るのに5時間かかります。
これを何とかしてくれるのがEeveeレンダーです。Eeveeはゲームレンダリングエンジンをもとに作られているので、常識外のスピードでレンダリングしてくれます。ほぼリアルタイム。ただ欠点もあります。一番覚えておくべきだと思うのは、Eeveeではカメラ自身の動きからしかモーションブラーが計算されないということ。アニメーションを作るときは、基本的にカメラを動かしましょう。

②モデリングテクニック
SFチックなものって、幾何学模様をよく使いますよね。実はモデリングが簡単なんです。そういう模様は機械的に生成できるから。そして今回のモデリングで覚えた操作はこれ。(編集モード)

ループカット :Ctrl+R+ホイール
押し出し :E
面を差し込む(inset、つまり内側に面を生成する) :I
垂直方向に面を差し込む :I→Ctrl+ドラッグ

それから、編集モードでの選択は使いこなせるといいですね。今回は

ランダム選択
選択範囲の拡大縮小 :Ctrl+テンキー±
選択範囲の逆転 :Ctrl+I

を使いました。これらを使えば下の画像のようなものも1分足らずで作れちゃいます。

コメント 2020-04-20 120502

③マテリアル・テクスチャ・ノーマル
ここが一番難しいところ。この辺を勉強するとUV展開だのバンプマップだの難しい言葉がたくさん出てきます。でも今回はベースがただの立方体なのでそんなに難しくありません。こいつらを設定する時は、ノードの利用が必須。丁寧に見ていきます。

ノードを開くとおそらく最初からプリンシブルシェーダーがくっついています。金属の表現はこのシェーダーで十分で、「メタリック」と「粗さ」のパラメーターをいじるだけでいい感じになってくれます。メタリックが1だと、「スペキュラー」はほとんど変化が見られません。

コメント 2020-04-20 123550

続いてノーマルを作っていきます。ノーマルとバンプって何が違うの?と気になったのでここにメモ。長くなっちゃったので囲っておきます。

 バンプとノーマル、両方ともポリゴンで作ると大変な細かい凹凸を、テクスチャをもとに実際は凸凹してないのに凸凹してるように陰影をつけてレンダリングする機能です。詳しく言うと、「画像から計算されたベクトルに応じてその面が動いたように見せかける」ということ。
 バンプはグレースケールのテクスチャを用います。テクスチャの各ピクセルに、明度という1次元の情報が入っているわけです。これによって、バンプでは面に対して垂直な方向に、任意の高さだけ面を浮き上がらせることができます。
 一方ノーマルはカラーのテクスチャを用います。各ピクセルにはRGBという3次元の情報が入っているわけです。これをXYZ座標に対応させて法線ベクトルをつくっているので、ノーマルでは浮き上がる高さと方向まで指定できるのです。ノーマルマップが青色っぽいのは、X、Y方向を-0.5~0.5で指定、Z方向を0~1で指定する(マイナス方向の法線はない)ため、<X,Y,Z>=<0,0,1>→<R,G,B>=<0.5,0.5,1>がデフォルト値だからなんですね。

さて、それでは今回はバンプを使います。ニュアンス的にバンプ⊂ノーマルなので、白黒のレンガテクスチャをキューブUV展開のマッピングでバンプに反映させます。(日本語か?)
Node Wranglerというアドオンは入れといたほうがいいみたいです。

Node Wrangler: ノードの便利機能を増やしてくれるもの。
Ctrl+Tでテクスチャ座標とマッピングをすぐ出してくれる。

テクスチャ座標はUVに繋ぎ変えて...っと。もうそれっぽくなりました。バンプなしと比較するとずいぶん違います。

コメント 2020-04-20 135338

さて、レンガテクスチャをいい感じにしたら、さらに歪めるためにチュートリアルではこんなノードの組み方をしています。

コメント 2020-04-20 141405

え、何これカラーがベクトルにつながってるんだけど。気になるので掘っていきましょう。
まずボロノイテクスチャが何者かを知るために、ボロノイ分割を軽く調べると、「空間内に配置された各点に対して、距離を一定に保つような線で領域を分けたもの」って感じでした。それって垂直二等分線じゃん!そうそう、ユークリッド距離で生成されたボロノイテクスチャは、ばら撒いた点に対して書ける垂直二等分線をうまくつなぎ合わせて作られたものみたいです。で、じゃあその「距離」ってどうやって計算するの?ということでいろんな人が定義した「○○距離」というのがあって、チェビシェフ距離はカクカクな図形が作りやすいとのことです。
じゃ、結局「マッピング」にはどんな画像が入っているのか、プリンシプルシェーダーにカラーをつないで見てみます。

コメント 2020-04-20 145304

なるほどすっごいカラフル。でさらに、上の画像では「テクスチャ座標」と「ボロノイテクスチャ」のUV-ベクトルによる接続を、左はON、右はOFFにしてあります。綺麗に表示させるためにはUV→テクスチャベクトルの接続はしっかりやっておく必要がありそうです。
さて、問題はベクトルとカラーの接続です。何が起きているんでしょう。

コメント 2020-04-20 150835

比較するために、
ミックスのカラー→シェーダーのベースカラーに繋いだもの
マッピングのベクトル→シェーダーのベースカラーに繋いだもの
を左右の順に並べてみました。なんか色違くない?wowwow。
(※これは後で気づきましたが、マッピングの拡縮Zが0だったためです。)

コメント 2020-04-20 152258

いろいろ実験してみた結果。(上はRGBカーブで青成分をカットしてる図)

テクスチャ座標のUVは2次元ベクトル。カラーは3次元ベクトル(あるいはα値があるから4次元?)。UVベクトルは、UVのX軸Y軸が各々赤成分と緑成分に対応して出力される
つまりUVベクトル→カラーに入れると赤と緑で描かれたものが出てきて、青は0埋めされる。
カラー↔ベクトルはXYZとRGBが対応して出てくるだけで、同じものとして扱える。ただ、カラーをマッピング等のベクトル操作でカラーが扱う範囲を超えた数値にすると、それを色としてシェーダーに入れたときにおかしな見え方をする。
テクスチャに入力するベクトルはマッピング用の2次元情報なので、XYの値のみが取られて、Zの値は捨てられる。

なかなか奥が深いです。調べても出てこなかったので上の話は僕の仮説ですが、まあ多分大丈夫でしょう。要するに、UVに合った形で作成したボロノイテクスチャを、本来のUVにうっすら合わせることで、レンガテクスチャに入るはずだったUVマッピングを見た目の整合性を保ちつつ歪ませたということですね。
では続けて回転体に色と発光部を付けていきます。

コメント 2020-04-21 102042

まず金属部の色ですが、これはバンプ用のテクスチャからとってくればOK。カラーランプで全体のコントラストを調整したら、ベースカラーに接続します。またミックスシェーダーを用いて発光部をつくります。モデルの一部をランダムに光らせる仕組みは簡単で、レンガテクスチャに変化を「一定」(Aviutl的に言うと瞬間移動)に設定したカラーランプをかけています。

コメント 2020-04-21 103334

左がベースカラーにレンガテクスチャを適用したもの、右がカラーランプを挟んだものです。左で白いところは右でも白いですが、左でグレー以下のところが右では黒くなっています。ここでふと「カラーランプって輝度調整とかコントラスト調整みたいなもんなの?」という疑問が浮かんでくるので考察してみます。

コメント 2020-04-21 104658

カラーランプは、係数を入力してグラデーションを作り、カラーとアルファを出力するノードです。入力は0~1の1次元データ。そして係数は、カラーランプの左端0~右端1の位置に対応しています。したがってカラーランプは、コントラスト調整などはしていません。係数として入ってきたグレースケール画像に対し、「黒=係数0の場所にはカラーランプ上の位置0の色を出力してね」といった作業をしているんですね。

あとはレンガテクスチャの拡縮や放射色を設定すれば回転体は完成。ここまで方針さえ決まっていれば、外部テクスチャを使わずとも10分くらいで出来てしまいます。

④パーティクル
ここからは作った回転体をパーティクルを使って並べていきます。直方体をベースにヘアーパーティクルとして回転体を適用すると、こんな感じになります。

コメント 2020-04-21 110607

気を付けるのは、レンダーを拡縮ランダムに設定することと、オブジェクトの回転を有効にしておくことくらいです。「ヘアー」はパーティクル発生源のオブジェクトの面に対して、垂直にパーティクルを生やすモードです。生やされるパーティクルをオブジェクト(すなわちここでは作った回転体)とすれば上の画像のようになるわけです。オブジェクトの設定としては、
・グローバル座標系
・オブジェクトの回転
・オブジェクトの拡大縮小
があります。
これらのうちチェックをつけたものは、元のオブジェクトの変化と連動するようになります。回転体の回転角度を変えれば、一気にそれっぽくなります。Iキーでキーフレームを挿入し、Y回転を時間変化させれば、よりカッコよくなるでしょう。

コメント 2020-04-21 111746

⑤カメラー・ライト・ボリューム・イージング
さあ、もうほとんど完成です。カメラを穴にぶち込みます。するとこんな風になっているはずです。

コメント 2020-04-21 112331

あ、パーティクル発生源の直方体にも、回転体と同じマテリアルを適用しておいてくださいね。カメラに動きをつけるためにキーフレームを挿入したら、ライト・ボリュームも設定します。ボリュームとは、適切な日本語訳が難しいですが霧みたいなものです。ぼんやり光らせたり、差し込むような光(god ray)を表現したりするのに役立ちます。ただ、光を吸収してしまうので暗く濁ったイメージを与えかねません。密度は慎重に設定してください。さらに、ライトを追加します。ライトは位置と光色を設定したらカメラを親に関連付けます。ここまでやれば、こんな絵になるはずです。

コメント 2020-04-21 113619

そしてあともうひと手間。直方体の奥、何もない空間が見えると困るので、後ろにメインの直方体とボリュームを2~3個複製します。ここではコレクション機能を使います。この"コレクション"という概念、blender2.8で追加された画期的なアイデアなようです。ただ当分は、「なんかすごいグループ機能」と思っていても大丈夫かもしれません。

最後にイージングです。グラフエディターを使います。blenderはデフォルトではすべてのキーフレームに対して加減速移動が適用されます。今回は4秒程度のビデオクリップなので、リニア移動(直線移動)で大丈夫です。リニアにしておくとループが出来るという利点があります。

コメント 2020-04-21 115107

カメラのキーフレーム2点を選択、Tキーで補間方法>リニアを設定します。
それでは簡単なポストプロセッシングを設定して、コンポジションでグレアをかけて、(いじるのはブルーム、モーションブラー、カラーマネジメント、ガンマくらい)

コメント 2020-04-21 120341

いざ書き出しです。できました。

画像17

今までもチュートリアルを真似してこういうのを作ることはあったんですが、なぜノードをそう繋ぐのか、そのマテリアル設定にするのか等、ちゃんと考えたことがありませんでした。改めて言語化するって大切だと実感しました。
今回は5000字の変態ボリュームになってしまいましたが、次回からはこの1/5くらいのクオリティで頑張るつもりです。書くのもいいけどもっと実践しろ!ってね。それでは、また。

この記事が参加している募集

おうち時間を工夫で楽しく

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