LoginSignup
4
3

More than 1 year has passed since last update.

【全Blenderユーザに薦めたい】レンダリングを失敗させないアドオン:FinalCheck

Last updated at Posted at 2022-05-19

image.png

はじめに

Blenderをはじめ、プリレンダーCGのレンダリングは、時間がかかるが故に非常に気を使う工程です。
寝る前にレンダリングを実行し、起きて見てみたら失敗していた...という経験がある人もいると思います。

失敗の原因には、

  • 非表示にしていたオブジェクトがレンダーでは表示されていた
  • 処理が重くなるため作業中にオフにしていた機能を、レンダー時にオンにし忘れていた
  • テスト用の低クオリティ設定のまま最終的なレンダリングをした
  • テクスチャ画像のパスが壊れていた

など、ケアレスミスと呼べるものも多くあります。これらのミスはシーンが複雑になるほど増えていくものです。人の目での確認は限界がありますが、自動化し簡単にチェックできるようになれば、制作が効率化するに違いありません。
そこで、ボタン一つでシーンの問題を一覧で確認できるアドオン FinalCheck を作成しました。個人的に最近の制作でも結構役に立ったのでおすすめしたいです。

FinalCheck - Blender Addon

無料ダウンロードは、Gumroad(投げ銭も可)、もしくはGitHubから。
または、Blender Marketから1ドルで購入できます(いずれも内容は同じです)。

概要

FinalCheckは、シーンの問題をチェックし、簡単に修正できるアドオンです(日本語、英語に対応)。
チェックボタンを押すだけで、問題のあると思われる項目を一覧で表示します。
レンダリングの直前にチェックすることで、ケアレスミスによるレンダリングの失敗を防げます。

チェックする項目

  • コレクションの可視性: ビューポートとレンダーでコレクションの可視性が異なるか。
  • オブジェクトの可視性: ビューポートとレンダーでオブジェクトの可視性が異なるか。
  • パスが不明なファイル: 画像ファイルのパスが壊れているか。
  • レンダー領域: レンダー領域が設定されていて、レンダー領域が縮小しているか。
  • 解像度%: 解像度%が100%より小さいか。
  • サンプル数: レンダーのサンプル数がビューポートのサンプル数より小さいか。
  • インスタンス化: ビューポートとレンダーでインスタンサーの可視性が異なるか。
  • モディファイア: ビューポートとレンダーでモディファイアの可視性が異なるか。
  • コンポジット: ビューアーノードとコンポジットノードのインプットが異なるか。(α版)
  • パーティクル
    • エミッターを表示: ビューポートとレンダーでエミッターの可視性が異なるか。
    • 子パーティクルの量: ビューポートとレンダーで子パーティクルの量が異なるか。
    • パーティクルの表示率: ビューポートでのパーティクルの表示率が100%より小さいか。
  • グリースペンシル
    • モディファイア: ビューポートとレンダーでモディファイアの可視性が異なるか。
    • エフェクト: ビューポートとレンダーでエフェクトの可視性が異なるか。

結果の一覧は、シーン - ビューレイヤー - コレクション - オブジェクト - モディファイア - モディファイアの詳細設定(現在パーティクルのみ)というように、階層構造で表示されるため、分かりやすい表示になっています。
また、各項目は、項目の右側に現在の値などのUIが表示され、簡単に修正できます。
[New!] : レンダリング時に自動チェックできるようになりました!(Ver.0.2.0)

設定項目

チェック項目ごとにチェックする・しないを設定から変更できるため、巨大なファイルでも必要なチェックを迅速に行えます。また、全てのシーン・ビューレイヤーをチェックするか、現在のシーン・ビューレイヤーのみをチェックするかも設定できます。

将来的な目標

  • ユーザーからの要望があればチェック項目の追加
  • レンダリング前に自動的にチェックする機能の追加
    • 現状Blender APIの制約的に難しい部分がある。

技術的側面・制作時の課題

Blender APIによる制限

Blender API(bpy)の機能に依存する部分が多く、その制限によってできないことはどうあがいてもできません。
例えば、APIの制限により見送った機能には、

  • コンポジットノードのチェック(現在は部分的に実装しています)

などがあります。
また、Blender APIはBlenderのバージョンごとの違いが結構あり、本アドオンはBlender 2.8以前では利用できません。

細かい話になりますが、API経由で設定するアドオン独自のコマンド(オペレーター)は、その引数のタイプが決まっており、リストやメソッド、参照等を渡すことができません。そのため、参照を渡したいときには、オブジェクトIDをstringに変換し、引数に入力し、コマンド内で参照に戻すというオーバーヘッドが発生します(ちなみに、オブジェクトIDは数値で表されますが、intへの変換は桁の問題でできません)。

データ構造の複雑さ

チェックでは様々なBlenderの内部データにアクセスしますが、複雑な部分も多いです。
特にコレクションについては、マスターコレクションと通常のコレクションのクラスが異なったり、それぞれが入れ子になって存在するため、扱いが難しかったものの一つです。

おわりに

個人的に欲しいと思い、2か月ほどかけて制作しました。
自分で使っていて結構役立っているので、ぜひいろんな人に使ってもらいたいと思っています。
フィードバックやバグは、GitHubもしくはTwitterからお願いします。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3