広告
広告

Blender でレンダリング時間を短縮する方法まとめ

カテゴリ:blender

目次

概要

Eevee を使う

レンダラーを変える

Cycles

GPU を使う

GeForce(OptiX)を使う(2.90)

ビューポートデノイズ(2.90)

適応サンプリング(2.83)

デノイズを使う

プリンシプルシェーダを速くするテクニック

Scramble Distance + Dithered Sobol

ライトパスの最適化

外部リンク

AI デノイザ

デノイザノードを使う(2.81)

デノイザアドオンを使う

レンダラー非依存

レンダーファーム

ハードウェア

OS

Blender レンダー

Blender 自体の設定

シーンとオブジェクト

レンダータブ

概要

バージョン 2.90 の時点では、レンダリングを高速化する方法は大きく分けて2種類ある。Eevee を使う方法と Cycles でデノイザノードを使う方法だ。バージョン2.90 からは Maxwell 以降(GeForce 700, 800, 900, 1000) の GeForce でも Optix によるビューポートデノイズやレンダリング高速化の恩恵が受けられる。

Cycles ならライトパスの最適化を行う方法もある。

スチル・ルックデブ(ルック開発)

スチル・ルックデブならEeveeデノイザノードOptiX Viewport Denoising ビューポートデノイズE-Cycles アドオンが候補になる。

Eevee はヘアー、ボリューメトリックス、透過などの品質はよくないが、リアルタイムでレンダリングできる。

デノイザノードは画質は悪化するがレンダリング速度は劇的に速くなる。OptiX Viewport Denoising ビューポートデノイズを使えば Cycles でもビューポートのレンダリングに数秒しかかからない。

アニメーション

デノイザノードCycles のデノイズはアニメーションさせると時間方向のノイズやちらつきが発生するため、アニメーションでは使用されない傾向にある。ヘアー、ボリューメトリックス、透過などの品質が許容できるなら Eevee が選択肢に入る。Cycles なら Adaptive Sampling を使い、ハードウェアに投資して、サンプル数を上げる。

Eevee を使う

Blender 2.80 以降では Eevee が使える。Eevee はゲームエンジンで使われているラスタライズ法でレンダリングするリアルタイムレンダラーだ。透過や反射の表現に制限はあるが、それが許容できるならば最終的なレンダリングにも使える。

Eevee は基本的に物理ベースの表現しかできないが、Shader to RGB ノードを使えばセルルックも可能だ。

Eevee の使い方

レンダラーを変える

セルルックならば Cycles より Blender レンダーや Eevee の方がレンダリングが速い。

フリーの物理ベースレンダラーは Cycles 以外にも選択肢がある。クオリティーやレンダリング時間の比較はRender Engine Comparison: Cycles vs The Restを参照。

その他にも POV-RayKerkythea やモンテカルロレイトレーサーの Y・A・F・A・R・A・Y がある。

有料のレンダラー

Arnold For Blender($45~)

V-Ray for Blender(1年ライセンス¥80,000~)

Redshift 3.0 & Blender 2.82 Plug-in Alpha Testing Preview($500~)

Cycles

4 Easy Ways to Speed Up Cycles

GPU を使う

Blender 2.8

Blender 2.8 以降は CPU と GPU と両方を同時に利用してレンダリングできる。

User Preference のシステムタブで Cycles 演算デバイスを選択し、プロパティパネルのレンダータブで「パフォーマンス > デバイス」を GPU 演算にする。

settings
Blender 2.8 Alpha での設定
タイルサイズ

Boost Clock によると Blender 2.80 で nVidia の GPU を使って Cycles のレンダリングをする場合、タイルサイズでレンダリング時間はほとんど変化しない。

Blender 2.79

User Preference のシステムタブで Cycles 演算デバイスを選択し、プロパティパネルのレンダータブでデバイスを GPU 演算にする。

enable gpu
GPU を有効にする(AMD の GPU の場合)

GeForce(Optix)を使う(2.90)

バージョン 2.90 からは Maxwell 以降(GeForce 700, 800, 900, 1000) の GeForce でも Optix(Cycles のハードウェアアクセラレーションと Viewport Denoising)が使える。

GeForce RTX を使う(2.81)

OptiX 対応のビルド(2.81 以降)で GeForce RTX を使うと Cycles のレンダリング速度が最大で 110 %高速になる。「プリファレンス > システム > Cycles レンダーデバイス」で Optix を選択するとハードウェアアクセラレーションが有効になる。

OptiX Viewport Denoising (2.83)

バージョン 2.83 以降かつ GeForce RTX を使用している場合は、Cycles で AI によるビューポートデノイズが使える。「プリファレンス > システム > Cycles レンダーデバイス」で Viewport Denoising ドロップダウンの OptiX AI-Accelerated を選択すると使えるようになる。

OptiX を使ってデノイズする場合、CPU 等のほかのレンダーデバイスにレンダリングさせられる。その場合、選択したレンダーデバイスのレンダリングと OptiX 互換 GPU のデノイズとが同時に行われる。

ビューポートデノイズ(2.90)

バージョン 2.90 からは SSE 4.1 をサポートする CPU(Core i や Ryzen)で、Intel OpenImageDenoise を使ったビューポートデノイズが使える。

デノイズ中はビューポートがロックされるので、極端に少ないサンプル数を設定すると使いづらい。

inte viewport denoise
設定

適応サンプリング(2.83)

Cycles で適応サンプリングが有効な場合、ノイズが少ない場所でサンプル数を自動的に減らす。「プロパティパネル > レンダータブ > サンプリング」で設定できる。

サンプル数の閾値はデフォルトではアンチエイリアスのサンプル数と同じに設定されている。この設定で画質を悪化させずに、テストシーンでのレンダリング時間が 10~30 %減少した。

最小サンプル数(Min Samples)

適応サンプリングが実行される前に行うサンプル数。デフォルトは0で、その場合は合計サンプル数の平方根が設定される。

ノイズしきい値(Noise Threshold)

サンプリングの継続を判断するエラーの閾値。一般的には 0.1~0.001 の間の値を設定する。数値が少ないほどノイズが少なく、レンダリング時間が長くなる。0の場合は合計サンプル数に基づいて適切な値が設定される。

外部リンク

RenderMan: An Advanced Path Tracing Architecture for Movie Rendering(pdf)

デノイズ

Blender でノイズリダクション(デノイズ)

バージョン 2.79 以降で有効。

setting

シーンに存在しない属性のデノイズを無効にするとデノイズを高速化できる。

denoise uncheck
ディフューズマテリアルのみ存在する場合の設定

プリンシプルシェーダを速くするテクニック

下記の動画ではカメラから見える部分にプリンシプルシェーダを使い、見えない部分はディフューズと光沢(Glossy)とを組み合わせたノードを使っている。

Scramble Distance + Dithered Sobol

Scramble Distance と Ditherd Sobol が使えるビルドは GraphicAll からダウンロードできる(要検索)。

Scramble Distance についてはWhat happened to Scrambling Distance? It´s been used in Theory and it will help speed up rendering で議論や検証がなされている。Scramble Distance はレンダリングの精度が悪い。加えて Ambient Occlusion と同時に使うと赤みがかかったりする欠点がある。しかしレンダリング速度が 20 ~ 40 %高速になる。

デノイザノードを使う(2.81)

Blender 2.81 からはコンポジットで Intel の Open Image Denoise ベースのデノイザノードが使える。場所は Shift + A > フィルター > Denoise。

間接光の影響力が小さく、オブジェクトのマテリアルに透過が含まれていない場合、サンプル数1でも高い性能を発揮する。面積を持つ光源やガラス、暗所、SSS、モーションブラーは苦手で、サンプル数は 16 以上が必要になる。

使い方

イメージを渡すだけでも機能するが、法線やアルベドを渡すとより高性能になる。パスのデノイズデータにチェックを入れるか、法線とディフューズのカラーとにチェックを入れるかすると必要なパスを取得できる。derek barker 氏の検証ノードのように光沢や透過パスごとにデノイズする方法もある。

pass
Cycles で法線やアルベドを取得
denoiser node
ノード
demo
ガラスオブジェクトのデモ
denoiser hard
モーションブラーのあるガラス+エリアライト

細部がつぶれてしまう場合は、サンプル数を上げるよりレンダリング解像度を上げて縮小するとよい。

パスの保存

OpenEXR を使えばパスを保存できる。

save pass
パスの保存

デノイザアドオンを使う

Super Image Denoiser(€0+)

D-NOISE

ディープラーニングを使ったデノイザアドオン。GeForce 600 系以降かつ Windows でしか実行できないが、高速で高品質な結果が得られる。

E-Cycles($111.75~$749.25)

ディープラーニングを使ったデノイザアドオン。最新のバージョンではビューポートデノイズに対応している。D-NOISE に比べて以下の利点がある。

  • AMD の GPU にも対応(ただし nVidia の GPU よりパフォーマンスが悪い)
  • Mac・Linux に対応
  • 2.79 と 2.80 に対応

ライトパスの最適化

各ライトパスの説明は【Blender】【Cycles】Cyclesでノイズを防ぐ方法の総まとめを参照。

全パスを有効にしてチェックすれば、ノイズが乗っているライトパスを特定できる。あとはノイズの多いライトパスのサンプル数を増やし、ノイズの少ないライトパスのサンプル数を減らす。

light path optimization
全ライトパスを有効にする

Reducing Noise

【Blender】【Cycles】Cyclesでノイズを防ぐ方法の総まとめ

レンダラー非依存

13 Ways to Reduce Your Render Times

Rendering » Cycles » Render Settings » Performance

レンダーファーム

Google Colaboratory--非力なPCでもBlenderで高速にレンダリングする方法

Amazon EC2を使って、3Dレンダリングをしてみたメモ

RenderFlow

RebusFarm

GarageFarm.NET

RenderStreet

blendergrid

[Blender] Sheep it Render Farm がすごい

ハードウェア

  1. RAM の容量を追加する
  2. CPU のコアを追加する
  3. CPU のクロックを上げる
  4. 別の OpenGL のドライバを試す
  5. 速い RAM 使う

OS

  1. プロセスの優先度を上げる
  2. スワップ/ページファイルの容量を上げる
  3. 64bit にする
  4. 不要なアプリ/バックグラウンドサービスを終了させる
  5. ネットワークを遮断する
  6. Linux を使う
    Linux は WDDM がないため Windows より数%レンダリングが速い。

Blender レンダー

Blender 自体の設定

  1. Memory Cache Limit を上げる。
    Memory Cache Limit の設定
    Memory Cache Limit の設定
  2. 最適化されたビルドを使う
  3. レンダーウインドウを小さくする

シーンとオブジェクト

  1. 不要なライトを削除するかレンダリングしないようにする
  2. 影を生成しないようにする。影のみが必要な時は「影のみ(shadow only)」を使う
    影の設定
    影の設定
  3. バッファシャドウを使う
  4. 動かないものはライティング情報をテクスチャにベイクする
    ベイク
    ベイク
  5. メッシュを単純にする
  6. 重複頂点を削除する・距離でマージ(Remove Doubles, Merge by Distance)。ポリゴン数削減(Decimate)モディフィアを使う
  7. 細分割曲面(Subsurf)モディフィアや多重解像度(Multiresolution)モディフィアの分割数を少なくする
  8. 不透明オブジェクトの見えない部分のポリゴンを削除する
  9. 分割してレンダリングする。 背景と動くものとを別々にレンダリングし、動くものは背景を透明にしてレンダリングする。 後でコンポジットで合成する。
  10. カメラを動かさない。背景とキャラとを別々にレンダリングする際に特に有効
  11. エリアライトの使用を避ける
  12. マテリアルを陰影なし(Shadeless)にする
    shadeless
    Shadeless にする
  13. マテリアルを陰影なし(Shadeless)にして、AO をベイクする
  14. スポットライトにクリップを設定して、ライトが照らす範囲を狭くする
    Clip distance の設定
    Clip distance の設定
  15. カメラのクリッピング(clipping):を小さくする
    カメラの撮影範囲を狭くする
    カメラの撮影範囲を狭くする
  16. ワールドのアンビエントオクルージョン(AO)、環境照明(Environment Lighting)、間接照明(Indirect Lighting)を無効にする
    world の設定
    world の設定
  17. マテリアルの SSS(Subsurface Scattering)を無効にする
    マテリアルの SSS を無効にする
    マテリアルの SSS を無効にする
  18. テクスチャサイズを小さくする
  19. 背景をビルボード(板ポリにテクスチャを張り付けたもの)にする
  20. モデリングの時に面複製(DupliFace)頂点複製(DupliVert)を利用する
  21. Adaptive Subdivision を利用する

Render タブ

  1. レンダリングの解像度を下げる
  2. アンチエイリアス(AA)を無効にする
  3. モーションブラー(Motion Blur)を無効にする
  4. レイトレーシング(Ray Tracing)を無効にする
  5. 影(Shadows)を無効にする
  6. SSS(Subsurface Scattering)を無効にする
  7. バッファを保存する
  8. タイルサイズ(Tile Size)を最適化する
    最適なタイルサイズはハードウェアによって異なる。 いくつかのタイルサイズでレンダリングしてみて、最適なものを採用する。 2012 年ごろのハードウェアでは、CPU を使う場合 16~32、GPU を使う場合では 256 あたりが最適だ。 2016 年の GPU では 512 や 1024 のほうが速いことも多い。
     標準アドオンの Auto Tile Size を使えば余りの出ないサイズを計算してくれる。
    auto tile
    Auto Tile Size アドオン
  9. 辺(Edge)を描画しない
Render タブの設定
Render タブの設定

関連記事

Blender 記事の目次


広告
広告