Blender ウォッチング

無料の3DCG統合環境「Blender 5.1」ではシェーダーコンパイルが高速化

小粒ながら嬉しい改善点が色々

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

「Blender 5.1」の新ノードによるイラスト風エッジレンダリング

 3月17日(中央ヨーロッパ夏時間)、「Blender 5.1」が公式リリースされました。

 本リリースはメジャーアップデートの後であるためか、新機能の追加や変更が減った代わりに、修正や改善が多数あります。

機能紹介動画

What's New in Blender 5.1! Official Overview

 上はリリース毎に公開される公式動画です。今回は14分弱程度で、割とお手頃な(?)視聴時間です。

 今回から3回にわたるこの集中連載では重要と思われるものをいつものように独断と偏見でピックアップしてご紹介していきたいと思います。

EEVEEレンダーの新機能と変更

EEVEEシェーダーコンパイルの高速化

 “シェーダーコンパイル”とは、簡単にいえば、GPUが3DCGの質感をリアルタイムで描画するための“下準備”です。3DCGゲームでもゲーム開始時などに行われ、しばらく待たされることがよくあります。

 「Blender」も例外ではなく、3Dビューポートのシェーディングモードを[マテリアルプレビュー]や[レンダー]に切り替えた時に、未表示のマテリアルがあるとシェーダーコンパイルが行われます。[シェーダーエディター]でマテリアルを編集した時も同様です。

 そんなわけで、シェーダーコンパイルの高速化は作業の妨げが減るという点においては大きな恩恵が得られるのです。

 実際にテストしてみます。計測にはBlender Foundation公式からダウンロードできるデモの、「Classroom」と、Tree, leaves and grassを使用し、シェーディングモードをマテリアルプレビューに切り替えた時の速度を測定してみました。

 まずは「Classroom」では、v5.0.1が12秒でしたが、v5.1では4秒。なんと3分の1に減っています!

 そして「Tree, leaves and grass」。v5.0.1は31秒もかかりましたが、v5.1では15秒で2分の1です。先の「Classroom」の方がマテリアル数は多いのですが、こちらは複雑さが影響しているものと思われます。

2つの公式デモファイルを利用したシェーダーコンパイル時間の比較

ライトパスの強度プロパティ

 全体的に[直接照明]と[間接照明]のそれぞれの強度を個別に変更できるプロパティが追加されました([レンダープロパティ]-[ライトパス]-[強度])。コンポジターでも同様のことはできますが、こちらの方が簡単に操作できます。

[レンダープロパティ]-[ライトパス]-[強度]の[直接照明]と[間接照明]用設定

平面プローブによる光沢の反射・屈折

 v5.0では、平面プローブによる鏡面内には光沢の反射はありませんが、v5.1ではちゃんと反射・屈折するようになりました。

 まだ制限があり、例えば「メタリック」と「コート」の反射を持つ場合、メタリックのみが反映されます。

v5.1の平面プローブによる鏡面反射には光沢が映りこんでいる

シェーダーのRGB化ノードのアルファ対応

 [シェーダーのRGB化]ノードで、シェーダーのアルファ透過情報を出力するようになりました。

アルファ透過情報を持つテクスチャを渡したシェーダーを[シェーダーのRGB化]ノードで変換した例

 他にもテクスチャメモリの消費量削減や、v4.1以前にあった[ワールド空間ライティング]オプション([マテリアルプレビュー]以上のシェーディングモードで、背景の回転を止めるオプション)の復活などの機能があります。

Cyclesレンダーの新機能と変更

Cyclesのノーマルマップノードの新オプション

 テクスチャ素材には「ノーマルマップ」と「ディスプレイスメントマップ」がセットになっている物があります。これらの併用時、ノーマルマップの適用をディスプレイスメントで変形した形状に行うか、元の形状に行うかを選択するオプションが[ノーマルマップ]ノードに付きました。

「ノーマルマップ」ノードの新オプションによる比較。左の「ディスプレイスメント済ベース」が従来の挙動

レンダリングが少し高速化

 GPUで5~10%、CPUでは5~20%程度レンダリング速度が改善しました。

 他にも、ビューポートでのオーバーレイとの重ね合わせのズレが修正されていたり、粗い面でのデノイズに生じたアーティファクトが削減されるなど、様々な問題も修正されています。

両レンダー共通の変更

レイキャストノード

 新しい「レイキャスト」ノードは、指定の方向に「光線」を発射し、当たった部分などの情報を出力します。凝った処理ができますが、比較的重く、CyclesとEEVEEで処理も少し変わります。

 公式の「skeleton-arm-xray.blend」は、X線写真のような表現を行うデモです。比較的短くてわかりやすいと思います。簡単に言えば入射の長さによって透過度を変えています。

公式デモ「skeleton-arm-xray.blend」のノードツリーの一部(クリックで全体)。単純かつフレームやコメントが挿入されていてわかりやすい

 同じく公式デモの「raycast-line.blend」はセル+エッジシェーディングのデモで、入れ子のノードグループもあり、なかなか複雑です。

 デモは白黒ですが、アペンド機能でコピーし、少し編集すれば色付けやテクスチャも付加できます。EEVEEとCyclesでマテリアル出力が分かれていることに注意してください。ライセンスはCC0なので気にせず組み込めます。

  1. 頂点ペイントやテクスチャペイントなどで色付けします。
  2. [頂点カラー]または[画像テクスチャ]ノードと、乗算モードの[カラーミックス]ノードを追加し、つなぎます。
  3. EEVEEの場合は[マテリアル出力]ノードの前に、Cyclesの場合は[最小]ノードと[トーンBSDF]ノードとの間に挿入します。
改造して利用する場合、色付け用のノードを挿入する位置に注意

 もっと改造すれば描線をつける条件などの細かい調整もできますが、そこまでしなくても、ある程度ならノード内の数値の変更のみでも調整はできます。

 例えば、タイトルの画像の眼の部分はデフォルトだと顔と眼の間に描線が付いてしまうのですが、[Edge Detection.001]ノードの[Object Edge]ソケットにつながる[減算]ノードの[値]を大きくして目立たないようにしています。

[Edge Detection.001]ノードの[Object Edge]ソケットにつながる[減算]ノードの[値]の違いによる比較(クリックでスクリーンレイアウト全体)

 なお、アルファ透過による切り抜きには未対応です(上記の画像では舞い散る花びら)。

ライトオブジェクトの[ノードを使用]が廃止

 「v5.0」でのコンポジターに続き、ライトオブジェクトの[ノードを使用]も廃止されました。ノードを使用していなかったオブジェクトは自動的にノードを利用するように変換され、新規ライトオブジェクトにもノードツリーが作成・追加されます。

v5.0のライトオブジェクトのノードエディターのヘッダーと、v5.1のヘッダー。[ノードを使用]チェックボックスが消えている

終わりに

 次回は「Blender 5.1」のモデリング関連の新機能と変更についてご紹介する予定です。

 ではまた。