見出し画像

MatcapをBakeする


Blenderでモデリングやスカルプティングしている際にMatcapを利用することがあると思います。今回はそのMatcapをBakeしてテクスチャに焼き込む方法を紹介します。必然的に読者はこのニッチな方法を知りたい方に限ります。MatcapとBakeとは何かという説明はとりあえず書いておきますが、詳しくは自分で調べてみてください。MatcapやBakeはBlenderに限らずCGではよく利用されますので、言葉くらいは知っておくと良いかもしれません。

この記事はかなりBlenderの操作を端折っております。ページの最後に.blendファイルを添付してありますので、そちらを見ながら確認していただけたらと思います。(要 blender 2.82以降)

Blenderは2.82で確認していますが、shaderノードとbakeに対応しているバージョンならば実現可能だとは思います。

Matcapって何?

Matcapは丸い円の中に光の反射具合などを描き込んだ画像をイメージテクスチャとして、視点とオブジェクトの法線方向からそのイメージテクスチャを参照して滑らかに狙い通りの陰影を描画できるという技術です。光源に依存しませんので、モデリングの際には非常に役に立つものです。

画像1

今回はこちらのツイッターでお見掛けして自由に使っていいそうなので、こちらを利用させていただくことにします。

Bakeって何?

Bakeとはイメージテクスチャにその状態(色や法線など)を描き込む(焼き込み)作業のことです。画像にしてしまえばUnityなどのゲームエンジンに渡すことができますし、トポロジーの違うメッシュに焼き込むことでテクスチャの描きなおしなど手間を削減できます。後者は近年ではスカルプティングからのリトポロジーした場合などでよく使う方法ですね。以下の動画などでイメージは伝わるかと思います。

準備

それでは早速先に進みましょう。Matcapの画像を用意し、モデルを用意します。今回はBlenderに内蔵されているモデルのSuzanne(おさるさん)を利用します。このSuzanneはUV(テクスチャ座標)が設定されているので採用しました。Bakeは画像に焼き込む作業なので、UVが設定されていなければいけません。Matcapとモデルが用意できたら次へ進みましょう。

MatcapをShaderで実現する

最初のステップはMatcapをモデルに適用します。普段は3DViewportで使う際には手間はかかりませんが、Bakeしようとするならばレンダリングという工程に介入しなければいけません。そこでShader EditorでShaderを作って実現します。Shader Editor でノードを編集するアレルギーのある方、そのアレルギーは根性でどうにかなるタイプなので挑戦してみるのも可能性を広げるために良いかと思います。無理強いはしません。

テキストで表現するのは面倒なので、まずはこの画像を見てください。

画像2

はい。この通りです。これをまるっとマネをして、そのマテリアルをオブジェクトに割り当てるだけでMatcapは実現できるとおもいます。

テクスチャ座標計算の枠で囲んだ部分がオブジェクトの(頂点の?)法線と視点(カメラ)からMatcap画像を参照するUV座標を計算しています。ここを解説すると前提とするCGの知識がさらにいくつか必要になってしまうので割愛します。MappingノードのパラメータでLocationで参照位置をずらして、Scaleで拡大しています。この数値を少しいじるだけで言いたい事は伝わると思います。

上記のシェーダを組んだ状態でマテリアルをオブジェクトに適用するとしたの画像のように反映されていると思います。3DViewportの視点の位置を変更しても反映されていると思うので確認してください。

画像3

さて、これでShaderで実現することができましたね。

Bakeの準備

次はBakeの順番なんですが、ちょっと準備が必要なので、項目を分けました。

Shader Editor の空いているスペースにImage Textureノードを作成してください。このノードにNewボタンがあると思うので押下し、任意のサイズの画像を作成してください。Blankで結構です。どうせBakeしたときにすべて上書きされます。

画像4

今回はわかりやすくするためにbakedって画像名で生成し、割り当てておきました。

画像5

他のパラメータなどはデフォルトのままです。

さて、これで準備は完了です。

Bakeする!

さて、では準備も終わったので、焼き込み作業とまいりましょう。まずはプロパティエディタのレンダープロパティを開いてください。2.8系ではデフォルトのレンダラはEEVEEだと思いますがBakeはCyclesでないとできませんのでレンダラをCyclesへ変更しましょう。

続きまして、同じくレンダープロパティの下の方へ目を向けるとBakeの項目が見えると思いますので、閉じていたら開いてください。ここには様々な焼き込み項目があります。Bake Typeで焼き込む情報を選択できます。今回は今見ている状態をそのまま焼き込むのでCombineとしておきます。

画像6

これで準備完了です。Bakeボタンを押すことで焼き込み作業開始です。レンダリングには時間がかかると思いますが、Blenderの下部にインジケータがあると思いまうので、終わるまでちょっと待っていてくさい。レンダリングが終われば画像が生成されていると思います。

画像7

上の画像のように、UV展開された形に合わせて焼き込みされているのが確認できますよね。この画像をもとのモデルに割り当てれば視点の位置に依存していたMatcapが見事固定されたと思います。これにどんな需要があるんでしょうか。わかりません。

おわりに

いかがでしたでしょうか。Bakeがよくわからない?大丈夫私もわかりません。Shaderノード難しかったですか?難しいですけど、CGの原理がわかると自由に色々できるようになるので、すごく楽しいです。学問のCGの初歩の初歩でも習得すると世界が広がります。おすすめ。

今回の記事はTwitterの質問にあった問題をちょっとまとめたものです。みなさんもBlenderで分からないことがあったら ハッシュタグ blender質問室 で投稿すると答えてくれるかもしれませんよ。また、困っている人を見かけたらわかる範囲で答えてあげて、コミュニティーを活性化させましょう。


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