前回までの連載で、THETA Z1を使用したHDRIの作成に関する内容はひととおり紹介しました。今回は、制作したHDRIを活用する際のTIPSなどを紹介していきます。

記事の目次

    CGSLAB LLC.

    テクスチャスキャナの作成/スキャン。3Dスキャナ、フォトグラメトリー等を用いた3Dスキャニングなどのサービス、研究開発をしています

    site.cgslab.info

    関連記事:
    CG映像業界のテクニカル系の仕事を探る 第3回 前編:CGSLABの仕事
    CG映像業界のテクニカル系の仕事を探る 第3回 後編:3DスキャニングとCG映像制作の民主化

    配布データについて

    本連載向けのGitHubリポジトリのリリースページに、マルチHDRIプロジェクションのBlenderシーンを用意しました。

    ダウンロードについてを確認してzipファイルをダウンロードの上、展開しておいてください。

    Release 第7回:HDRI TIPS集 · cgslab/CGW_TEHTAZ1_VFXHDRIHandbook · GitHub

    素材サイト等で入手できるHDRI

    これまで、本連載では高品質なHDRIの作成方法などを紹介してきました。

    では、素材サイトなどで入手可能なHDRIを使用するのはダメなのか? 必ず実際に撮影しなければならないか? というと、そんなことはありません。

    例えば実写合成のバックプレートと合わせるといった場合には重要となりますが、フルCG映像などの場合であれば、ルックとして問題なければ演出なども含めて素材サイトのHDRIの使用は問題ないでしょう。

    また、実写合成においても、背景がフルCGなど実写素材の比率が低い場合は、今回紹介する手法が理解できていれば、実写素材をHDRIの色味に寄せるなどの調整を行なって馴染み良く使用することが可能です。

    特に近年ではカメラ自体の性能も良くなり、手法含め高品質な高解像度HDRIの配布・販売サイトが増えてきています。

    ※一般的に、IBLにのみ使用する場合は2K~8Kあれば十分です。それ以上はメモリ消費が大きくなるだけです

    ただし、以下のような品質が担保されないHDRIだと、色かぶりを起こしていたりして、CG感が強くなってしまったり、全体がのっぺりしたライティングで見映えの悪いレンダリング結果になってしまいます。

    ・キーライトの補正などが適切に行われていない
    ・リニアライズが適切に行われていない
    ・不適切なカラーマネジメントにより彩度が高い など

    特に10年以上前に作成されたようなHDRIは当時のカメラや制作手法的にこの傾向が強いため、使用する際は注意が必要です。

    品質を判断する方法のひとつとして、HDRIをバックプレート、背景として使用した場合にCGと背景が馴染んで見えるかどうか、を確認すると良いでしょう。

    低品質なHDRIでルックデヴをしてしまうと、ライティングが変わった途端に見え方が変わったりして、トラブルの原因となります。逆に、ちゃんとしたHDRIでルックデヴを行えていると、本番のライティングによる問題を見つけやすくなります。

    HDRIを使用したIBLは、あくまでも手軽にフォトリアルなライティングするためのひとつの手段でしかありません。演出に合う適切なものを選択しましょう。

    HDRI素材サイトの紹介

    HDRIの素材サイトのとして、有名なものを一部紹介します(品質を保証するものではありません)。

    マルチHDRIプロジェクションとモデリング

    今までの連載でも触れましたが、HDRI撮影の際には、短距離でライトを配置したり、ライティングされる対象が動いて立体的なライティングにならず違和感が生まれたり、落ち影が実写プレートなどと異なってしまうといった問題が発生します。

    その場合、HDRIを撮影した環境の3次元的なシーンを構築し、その位置に相当するライトを空間的に配置する必要があります。HDRIは撮影点を中心に360度撮影となるため、天球状のテクスチャプロジェクションを行うことで角や凹凸などの位置を推定することができます。

    こういった処理が必要になるのは室内シーンがほとんどですので、部屋自体を計測できなかったとしても、HDRIから推察してモデリングすることが可能です。

    また、そうしたモデリングと合わせて複数枚のHDRIをテクスチャプロジェクションすることで、HDRIでの立体的なライティングを可能にするテクニックがあります。

    参考にしたのはBhavesh BudhkarさんがBlog内で紹介している以下のチュートリアルです。この内容はMayaとArnoldを使用していますが、Blenderでも再現してみました。

    Bhavesh Budhkar - Multi HDRI Projection (Maya/Arnold)

    今回、こちらの複数のHDRIをテクスチャとしてプロジェクションするマテリアルをBlenderで構築してみました。

    このように[HDRI_projector_A/B/C]の球体エンプティの範囲にそれぞれRGBの単色がプロジェクションされるようになっています。

    このシーンでは、プロジェクションするメッシュとプロジェクション用の球体エンプティを用意して、その範囲に画像をプロジェクションするようにマテリアルを構築しています。

    事前に球体エンプティを[HDRI_projector_A/B/C]として、2,000mmのサイズを標準として用意しています。

    プロジェクション自体はマテリアル内の処理で完結させているので、プロジェクションしたい対象にマテリアル(Multi_HDRI_Projector)をアサインするだけで完了します。

    以下がマテリアルの全容です。

    サンプルとしてRGBの3つのプロジェクションを行う構成ですので、[HDRI_projector]となる球体エンプティごとに3つのフレームに同様のノード内容が用意されています。それらをMixColorノードで合成しています。

    以下の構成でひとまとまりになります。

    [テクスチャ座標(Texture Coordinate)]ノードでオブジェクトの位置を取得し、それを[環境テクスチャ(Enviroment Texture)]ノードと[HDRI_Range]ノードに受け渡して影響範囲の位置を調整可能にしています。

    この影響範囲は[テクスチャ座標(Texture Coordinate)]ノードの[オブジェクト(Object)]で指定した球体エンプティ(HDRI_projector_A)のスケールサイズや回転と同期するように作成しましたので、スケーリングすることでその影響範囲を調整できるようになっています。

    実際にはHDRIを[環境テクスチャ(Enviroment Texture)]ノードに読み込み、[加算(Add)]ノードのB端子に接続することで、HDRIの合成が可能になります。

    最終的に合成したいHDRIの数だけこのセットを用意して、[ミックス(Mix)]ノードでまとめて[自己放射(Emission)]シェーダーノードでライトとして機能させることで、複数のHDRIでのライティングが可能になります。

    このサンプルシーンでは3つですが、これ以上の数にしたい場合は球体エンプティ(HDRI_projector)とこのフレーム全体を選択→複製([Ctrl/Cmd]キー+[D])して、[テクスチャ座標(Texture Coordinate)]ノードのオブジェクトを増やした球体エンプティに切り替えましょう。

    また、このHDRIプロジェクションをライトとして[自己放射(Emission)]シェーダで使用する場合は少し注意が必要で、あまりにスポットで高輝度となるメッシュライトはファイヤフライ(高輝点)ノイズが発生する上に、サンプルの問題か、適切な輝度をもった照明になりません。

    この問題は光源をライトオブジェクトに置き換えるのが一番の解決法ですが、レンダリング設定の[パスガイディング(Path Guiding)]を有効にすることでも改善されます。

    ※この項目はBlender4.1でもCycle Render(CPU)でのみ利用可能な項目となっているため、GPUレンダリングは行えない点に注意が必要です

    この[パスガイディング(Path Guiding)]は、レンダリング時のパストレースに対してシーン内の光源分布などを学習させて最適なライティングを得られるようにする項目ではありますが、通常のタイリングレンダリングを行うと、現在のレンダリング範囲で光源影響を最適化してしまうため、タイルごとにムラが発生してしまいます。この問題は単純にサンプル数を増やしても改善されません。

    ▲タイルの形にサンプルムラが発生しているのが確認しやすいように、デノイズ処理を外しています

    そのため、同様にレンダリング項目のパフォーマンスから[パフォーマンス(Performance)→メモリ(Memory)]の項目を開いて[タイルの使用(Use Tiling)]をOFFにし、フレーム全体をサンプリングしてレンダリングすることで改善されます。

    • ▲タイルごとのムラが改善されています

    また、HDRIベースでモデリングする場合は、雪見月さんがQiitaでHDRI画像をシリンダリカルにプロジェクションマッピングしての環境モデリング方法を紹介してくれています。

    上記の方法では環境テクスチャでの球状マッピングになるので、こちらで紹介されているマッピング変換のTIPSは大変有効です。HDRI画像合わせでモデリングする際には、ぜひこちらも参考にしてみてください。

    360度カメラの撮影像からモデリングする(@yukimituki11)

    HDRI関連で便利なアドオン

    BlenderでのHDRIやルックデヴ時に便利なアドオンが公開されていますので、いくつか用途的に重要なものを解説しつつ、その他便利なものについても紹介します。

    太陽光源方向合わせ:HDRI Sun Aligner

    GitHub - akej74/hdri-sun-aligner: Blender addon for aligning an object (e.g. a sun) to match the brightest part in a HDRI environment

    HDRIでレンダリングする場合に起こる問題として、解像度と輝度の問題からサンプリングノイズが発生することがあります。

    その際に同一方向に同じ程度の強度のライトを配置して、HDRIの画像から光源を消し込むことで、ノイズが少ない結果を高速なレンダリング速度で得ることができます。

    またBlenderでは、EEVEEを使用する際HDRIでのライティングでは落ち影が発生しません。そのため、特に屋外のはっきりと影が落ちるようなシーンでは、太陽光(Sunlight)が必要になります。

    このアドオンは読み込んだHDRIの輝度値の高いポイントを計算し、それに太陽光(Sunlight)の方向を合わせてくれるアドオンです。

    ライトの強度に関しては特に設定してくれるわけではないので、ビューポートレンダリングにして結果を確認しながらリファレンス画像と合わせる必要があります。

    また、HDRI自体の光源情報があるため、クランプや消し込みを行なったものと最終的に差し替える必要が出てきます。

    連載第4回ではBlender4.x系に対応していなかったので、ビルトインアドオンのSun positionを紹介していましたが、Blender4.x系に対応したことと、読み込んだ画像に対してワンボタンで自動で位置出しをしてくれるため、今回紹介しました。

    使い方

    1.HDRIの事前読み込み

    事前にWorldに[環境テクスチャ(Environment Texture)]としてHDRIを読み込んでおきましょう。

    2.方向の計算

    [Calculate sun position]ボタンをクリックして実行すると、[Calculated sun position:]の項目に値が表示されます。

    3.光源位置の確認

    [Preview]ボタンをクリックして実行すると画像エディタが開き、HDRIのどのポイントに向けて太陽光の方向を調節しているかが確認できます。

    • ▲露出を下げて芯を適切に捉えているのを確認します

    4.太陽光の追加

    この状態で[Add new sun]ボタンを実行すると、太陽光がシーンに追加されます。

    5. 回転ドライバーの追加

    おまけではありますが、以下のように環境テクスチャに[マッピング(Mapping)]ノードと[テクスチャ座標(Texture Coordinate)]ノードを接続しておきます。

    このあと[Add rotation driver]ボタンを実行すると、[回転(Rotation)]でHDRIの向きや角度を変更すると同時に太陽光(Sunlight)オブジェクトも連動して回転するので調整しやすくなるでしょう。

    マテリアルのカラーマッチ:Color Match - Sync Renders To Color Palette

    Color Match - Sync renders to Color Palette - Blender Market

    Blendermarketには、Miha Marinko氏が制作・販売しているColor Match - Sync Renders To Color Paletteというアドオンがあります

    これはレンダリング結果の指定箇所の色が指定したカラーになるよう反復レンダリングを行い、カラーマッチさせるものです。照明の色や反射などの影響を無視して、マテリアルのカラーを指定カラーにすることができるため、プロダクト広告のなどの用途に向いています。

    応用した使い方として、高品質なHDRI(リファレンスと色合わせ済み)を使用すれば、リファレンス画像からピックした色とCG上のマテリアルの色合わせを簡易的に行うことができます。

    通常、純粋にリファレンス画像から色をピックしても照明の影響や画像の露出バランスの影響を受けるため、実際より明るい色や反射の乗った色をピックしてしまいます。

    この「Color Match Sync - Renderss To Color Palette」と作成したHDRI、リファレンス画像を利用することで、照明の影響をキャンセルした素材本来のベースカラー(アルベド)の推測が可能になります。

    使い方

    実際に使用する際に、気づきにくい注意点を紹介しておきます。

    カラーマッチの機能を使う際には、PythonのPILというライブラリが必要になります。プリファレンスからアドオンをインストールして有効化する際に、アドオン項目を展開して下部の[Install Requirements]ボタンを押して、PILライブラリのインストールも合わせて行いましょう。

    ※場合によっては管理権限で起動する必要があるかもしれません

    インストールが無事完了すれば、下部の[Check Installation]ボタンの横に[PIL is installed]というメッセージが表示されているはずですので確認しましょう。

    実際に、先のカラーチャートのバックプレートを参考に使用方法を見てみましょう。

    Color Match Sync - Renderss To Color Paletteアドオンをインストールすると、サイドバーに[ColorMatch]というタブが追加されます。

    1.目的とする色の選択

    [Target Color]のカラーピッカーで、目的の色をリファレンス画像からピックします。HEXコード入力はプロダクト系で指定色に合わせたりするために付いています。

    今回は推察しにくいチャート右上の青緑色を選択しました。

    2. レンダリングの位置を調整する

    このアドオンは、調整したいマテリアルがアサインされたモデルを実際にレンダリングし、その結果と目的の色を反復レンダリングし比較して差がなくなるように推定していく方式です。

    そのため、使用するには実際にレンダリングする対象が必要になります。また、ターゲットとしてピックするリファレンスと同じカメラアングル、オブジェクトの面の方向、方向合わせ済みのHDRIも必要です。

    今回は平面のチャートとの比較ですので、だいたい同一の面方向の面が存在する立方体を配置して見てみましょう。

    シーンに立方体モデルを追加した後は、[Target Point]の X・Y座標とサイズを変更しどの部分の色を合わせたいかを指定します。

    • ▲[Preview]をONにするとレンダー範囲が表示されます
    • ▲合わせたい色の面の位置となるように調整しましょう

    3. 変更するマテリアルのベースカラーを選択

    変更したいマテリアルまたはシェーダーエディターでのマテリアルノードのカラー プロパティを右クリックし、メニュー下部の[Assign to Color Match]オプションを選択します。

    選択すると[Color to be Changed]の項目に、どのマテリアルのどのカラーチップかがメッセージされます。

    4. Color Matchの実行

    ここまでできたら、下部の[Color Match]ボタンをクリックして実行します。

    設定したレンダー範囲が、現状のライティング環境で反復レンダリングされ、その領域の色がターゲットとした色にできるだけ近くなるようくり返されます。

    くり返しが終了すると、そのときにマテリアルの色が目的の色に一致する補正された色としてアサインされます。[preview]のチェックを外してみて、実際のカラーチャートの横に置いてみましたが、ほとんど差がありません。

    このように推察が難しそうな色であっても、数秒で比較をもって設定することができますので、効率化やばらつきの減少につながります。

    テクスチャに対しては適用できないため、推測した色に対してテクスチャを補正するかたちになります。

    また、簡易的としているのは、実際には、レンダリング結果の色にはこの他にRoughness値や反射の値などが影響するからです。それらの値は事前にリファレンスなどのスペキュラを見ながら調整しておく必要があります。

    逆に、それらの設定を上手くできていれば、反射が乗っていたり、多少色かぶりしたりしているような素材や金属の反射色を推測することもできます。

    反射の度合いについては、以前寄稿した「CGSLABが教えるテクニカルルックデヴの真髄。フォトリアルルックデヴのためのリファレンス撮影TIPS」でも実写と合わせたHDRIとスキャンモデルを比較して、反射値の推察を行いました。

    ▲左:実際の模型の写真、右:スキャンした3DモデルとHDRIから推察した反射値を入れたタイヤ

    このように実際の対象がなかったとしても、リファレンスとなる画像とそれを撮影した同一箇所のHDRIを用意することができれば、ルックデヴを効率的に行いやすくなります。

    その他HDRI関連のアドオン紹介

    Photographer 5

    Photographer 5 - Blender Add-on

    全般的に使えるカメラ設定アドオンです。

    実際のカメラの物理値での露出バランスの設定や、色温度やボケやヴィネットと言ったポストエフェクトなども設定可能です。HDRI関連ではフォルダを指定することで切り替えを容易にしてくれる点、落ち影の用意のためにShadow Catcher設定をした床面をワンボタンで配置してくれる点などが非常に便利です。

    Gaffer - Light & Hdri Manager

    Gaffer - Light & HDRI Manager - Blender Market

    シーン上のライト管理アドオンですが、HDRIのアセット管理にも使うことができます。回転や強度調整などもアドオンのパネルUI上で操作可能です。

    また、トライアル版として制限なしの無償版がGitHubで公開されていますので、こちらを使ってみて、気に入ったら購入して開発者を支援することもできます。

    Marmolight

    MarmoLight - Blender Market

    ピンポイントにHDRIの一部分の強度を変更するのは難しく、ノイズ問題もあります。そうした際にポイントライトなどを配置して、ライトの強度調整ができるとルックがつくりやすくなります。

    Marmolightは読み込んだHDRIからピックした箇所に、近似色のライトを配置してくれるアドオンです。注意点としては、特にHDRIの強度を拾ってくるわけではないので任意にライト調整が必要な点と、SunAnalyzerと同様にその位置の照明強度と重なってしまうので、場合によっては消し込みが必要になる可能性がある点です。

    もちろん同様の機能はアドオンの名前に取られているMarmoset Toolbag にもありますので、Blenderに限らないレンダリングであればそちらを使用するのも良いでしょう。

    HDR Light Studio

    Blender HDRI Studio Lighting Plugin - With Free Trial

    HDR Light Studio自体は単独のソフトウェアで、ライトやグラデーションを配置してHDRIを自作できるものです。

    HDR Light Studioは対応しているソフトウェアとプラグインやアドオンで連携することで、作成したHDRIを書き出しすることなく、連携ソフトウェアのビューポートレンダーで確認することができます。

    一連の連載ではVFX用途でのHDRI制作について紹介してきましたが、こうした演出向けのHDRI制作には非常に強力なツールとなります。

    三脚・人物消し

    三脚・人物消しは必要?

    基本的にライティングとしてHDRIを使用する場合に、三脚や写り込んだ人物は照明に影響しないため、多くの場合消す必要がありません。しかし、映り込みに対して影響があったり、配布するために消す必要があったりする場合には消し作業が必要になります。

    いくつか手法がありますが、ここでは2つのやり方を紹介します。

    Nukeを使用した三脚消し

    ここでは、三脚の映り込みと影を消します。

    [SphericalTransform]ノードで[Output→Projection]を「Cubemap」、[Format]を「Faces」、[Face]を「-Y」に変更します。解像度設定は[Format]を「To Width」、[Width]を「2340」にします。THETA Z1のデータの場合、2,340より大きい解像度であれば劣化が少ないです。

    [RotoPaint]ノードの[Clone brush]などで消したい箇所をペイントします。

    初めに作成した[SphericalTransform]ノードを複製して、[Swap Input/Output]ボタンを実行します。

    するとInputの設定が、[Projection]は「Cubemap」に、[Format]は「Faces」に入れ替わります。ノードのインプットは-Yをつなぎます。解像度設定は[Format]を「To Format」、[Output Format]を元の解像度に合わせます。ここでは「7,350✕3,675」とします。

    Mergeノードで元の画像に重ねれば完了です。

    Affinity Photoを使用した三脚・人物消し

    Affinity PhotoはEXRを読み込むことが可能で、32bit環境でペイント等を行えます。

    Affinity Photoの[レイヤー→ライブ投影→正距円筒投影]を選び、ビューをマウスで動かして消し作業が必要な箇所が見えるようにします。

    次にインペインティングブラシツールを選び、消したい箇所をペイントすることで簡単に消すことができます(Photoshopの[コンテンツに応じた塗り]と近い機能)。

    ※ペイントするレイヤーがアクティブになっている必要があります

    同様に、タイルなどの場合はパッチツールを使うことでも簡単に消すことができます。

    ペイントが完了したら、[レイヤー→ライブ投影→投影を削除]で元のパノラマに戻ります。ペイント範囲を変えたい場合は[ライブ投影を編集]でエリアを選び直せます。問題なければ保存して書き出し、完了です。

    次回で本連載は終了となります。最終回では、HDRIに関する小話を紹介します。

    TEXT_CGSLAB
    EDIT_小村仁美 / Hitomi Komura(CGWORLD)