Search Unity

Unity の HD レンダーパイプライン(HDRP)を用いたカーコンフィギュレーターの開発

, 1月 23, 2019

パリに本拠を置く Light & Shadows は、HDRP を使用して驚くほど現実感があるリアルタイムイメージを制作しました。Light & Shadows が執筆したこのブログ記事では、同社がどのような過程を経てこれらの優れた成果を達成したのかについてご紹介します。

Light & Shadows の歴史

Unity では、Light & Shadows と緊密に連携しながら、実物さながらのビジュアル品質をリアルタイムに再現するためのプロジェクトに取り組んできました。本記事は Light & Shadows によって執筆されたもので、同社が Unity の新しい HD レンダーパイプラインを使用して、驚異的なまでにリアルな Lexus LC 500 の動画をどのようにリアルタイム生成したか、その技術的な詳細を紹介しています。Light & Shadows は、主要産業に属する企業からの魅力的なビジュアルコンテンツへのニーズの高まりを受けて、2009 年に設立されました。設立以来、同社は新機能を継続的に導入して顧客に提供し、革新を重ねながら成長を続けてきました。高品質なレンダリングやコスト軽減、生産性改善などはその主な例です。このブログの以下の内容は、Light & Shadows から寄稿されたものです。

リアルタイムレンダリング:自動車業界のためのゲームチェンジャー

近年のテクノロジーの進化は、自動車のユーザー体験のみならず、その売買方法にも変化をもたらしています。Light & Shadows は、自動車のビジュアライゼーションやオフラインレンダリング分野において深い経験を有しており、その経験は PSA カーコンフィギュレーターや Dassault Aviation との共同プロジェクトで証明されています。弊社では最近まで主に別のリアルタイムエンジンを使用していましたが、現在では、Unity とのパートナーシップを締結し、HDRP を使ったリアルタイムレンダリングによって、新たなレベルのビジュアル品質とパフォーマンスを達成するべく取り組んでいます。これらの新機能の性能を証明するため、私たちは先ごろ、Lexus LC500 のリアルタイムレンダリングを実演する動画を制作しました。

プロジェクトの全貌:モデルの準備から仕上げまで

CAD データ準備ツールとプロセス

私たちは、LC500 プロジェクトに取り組むため、すべての可視表面と特定の内部形状を対象に、Lexus から境界表現(B-rep)CAD データを提供してもらいました。ハードサーフェスのモデリングが一切必要なくなったので、これは非常に助かりました。ただし、モデルが非常に複雑なので、データの整理と準備が課題となりました。この課題をクリアするため、私たちは PiXYZ ソフトウェアを使用して、その高度なテッセレーションとスクリプタブルなデータ準備機能を利用することにしました。

複雑な製品においてはよくあることですが、Lexus のモデルは複雑なオブジェクト階層で構成されており、自動車の部品数は数千個にも及びました。そこで私たちは、自動車の内部と外部を分けることにしました。これによって柔軟性が増し、モデルの 2 つのパーツを並行して作業できるようになりました。また、パワートレイン、シャーシ、車両構造部品などの設計コンテンツを分離できるようになりました。

ソースデータはファイルごとに 1 つの車両として整理されているのではなく、同じ車両のすべての形状オプションをカバーした、パーツのコレクションとして整理されていました。そのため、データを論理的な方法で整理し、Lexus ユーザーに提供されているバリアント(オプション)を反映させることができました。私たちは XML ファイルを使って、ソースデータ内の各パーツを、関連するオプションロジックに論理的に結び付けました。この XML とカスタムスクリプトを使用することで、車両の複数のバリアントを 1 つのフォームに分離し、オプションの組み合わせごとにビジュアルがすぐに生成できる形式で整理することができました。

各種のパーツを分離したら、次のステップはテッセレーションでした。このプロセスでは、CAD データ(B-rep)をテッセレート済みのフォーム(三角形)に変換して、3ds Max や Unity などのアプリケーションで使用できるようにする必要がありました。私たちは PiXYZ を使用することで、比較的軽量なテッセレート済みモデルを生成しつつも、優れたビジュアル品質を確保することに成功しました。

最適なライティングとベイキングを実現するためのオプション

私たちは、自ら設定したきわめて高水準なビジュアル品質を達成するため、ライトマップを使用してライティングを強化しました。このワークフローでは、車両のすべてのパーツを一切の重複なくアンラップする必要がありました。そこで私たちは、自動アンラップツールを使用しつつ、必要な部分ではインタラクティブに(手動で)アンラップを行ってシームの配置を最適化しました。

可視表面全体にわたってラップされた UV

私たちは、ライトマップの計算方法として 2 つのオプションを評価しました。Unity とその組み込みライトマッパーで直接計算する方法と、サードパーティのレンダラー(Octane や V-Ray など)を使用して 3ds Max で計算する方法です。私たちは両方の方法を試し、それぞれの結果の品質レベルを比較したうえで、外部のライトマップと Unity の組み込みライトマッパーを統合するためのワークフローをテストすることにしました。車内のライトマップは Unity で直接計算しました。適切な設定を加えたことで、非常に満足のいく結果が得られました。直接光はリアルタイムライトで処理し、間接光はベイクで処理しました。この方法により、シーンのインタラクティブパーツをアニメーション化した場合にも、リアルなビジュアルを再現することに成功しました(ハンドルの回転やドアの開閉など)。Unity の組み込みライトマッパーを使用するやり方は非常にシンプルなので、優れた結果が得られました。

ライトマップを使用した場合の車内と、使用しなかった場合の車内

次に私たちは、Octane のライトマッパーを使用して、モデルに含まれる個別の外装に対応するオブジェクトのスペキュラーオクルージョンをインタラクティブに調整する実験を行いました。HDRP で標準シェーダーを編集し、分離された UV チャネルを適切に統合したところ、満足いく結果を得ることができ、特にボディパネル間の隙間については、非常にリアルなビジュアルが生成できました。これら 2 つのアプローチを使用することで、私たちは他のツールのライトマッパーの柔軟性と、Unity 組み込みのライトマッパーの使いやすさを比較評価することができました。最終的には、どちらのアプローチでも目標とする結果を達成できるという結論に至りました。

ライトマップを使用した場合の外装と、使用しなかった場合の外装

フォトリアリズムを実現するためのマテリアル調整

自動車のオフラインレンダリング分野における当社の長年の経験を通して、私たちは高解像度テクスチャの膨大なコレクションを、ディフューズマップ、ハイトマップ、スペキュラーマップ、ノーマルマップなどの形で蓄積してきました。今回の Lexus プロジェクトで、私たちは自分たちのお気に入りのマップを使い、最善の結果を達成したかったのですが、Unity でのパフォーマンスを最適化するには、メタリック、スムースネス、および AO マップを 1 つのマップの RGB チャネル内に結合する必要がありました。このアプローチはパフォーマンスにとっては最適なのですが、マップやシェーダーをインタラクティブに調整するうえでは課題が生じます。このプロジェクトを開始した時点ではシェーダーグラフを HDRP に使用することができなかったので、私たちは開発チームに頼んでカスタムテクスチャエディターツールを作ってもらい、テクスチャ内の各マップを標準の HDRP シェーダーで直接個別に調整できるようにしました。このエディターツールにより、私たちは Unity 内でマテリアルを微調整し、効率的に作業できるようになりました。現在では、シェーダーグラフを HDRP に使用できるようになったので、これと同じ機能をすべての Unity ユーザーが使用できるようになっています。

カスタムテクスチャーの編集

ポストプロセッシング

3D シーンに映画のようなリアリスティックな雰囲気を持たせるにはポストプロセッシングが欠かせません。HDRP には、カラーグレーディング、ブルーム、ビネット、被写界深度など、シーンの最終的な見た目を調整できるオプションが数多く提供されています。

ポストプロセッシングを行ったドアのインテリアと、行わなかったドアのインテリア

被写界深度は、リアルなビジュアライゼーションを実現するうえで不可欠なビジュアルエフェクトです。これにより、見る人の注目を特定の領域に引きつけ、シーンへの没入感を高めることができます。リアルタイムアプリで被写界深度の焦点に固定値を適用すると、仕上がりが不自然になるため、私たちは簡単なカメラスクリプトを作成し、カメラ前方の最も近いオブジェクトに自動で焦点が設定されるようにしました。Unity では、シーン内でレイをキャストして、最も近いオブジェクトを特定することは非常に簡単でした。

被写界深度エフェクトを使用した車内と、使用していない車内

見せ方、作り方にまでこだわる

私たちは、Unity の Cinemachine を使用して、「デモ」モードを作成しました。これは、事前定義済みのカメラパスを使ったシネマティックなショーケースを再生するモードで、見る人が車を特に操作していない時でも、製品の重要な機能をビジュアルで示すためのものです。

自動車を正確に表現するために、私たちは自動車の様々な構成を管理するための手段を準備しました。ランタイム(実行可能)アプリでバリアントを切り替えるだけでなく、Unity エディター内においても、すべてのバリアントが正しく定義されるようにする必要があったのです。これを達成するために私たちは、シーンの状態を記録して自動マテリアル割り当てを行う、構成管理スクリプトを作成しました。

バリアント構成ロジック

4 種類の内装のバリアント

次のステップ

今回のプロジェクトでの経験を通じて、私たちは高水準なビジュアル品質が求められる新規カスタマープロジェクトにも、自信を持って HDRP を使用できるようになりました。データの準備には PiXYZ を使用し、レンダリングやシネマティック処理、ポストプロセッシングには Unity の最新ツールを使用して、さらには当社独自のカスタムツールやスクリプトも使用しながら、新規プロジェクトをきわめて効率的に展開できるようになりました。

最後に Unity から、本記事を執筆し、こちらの動画を制作してくださった Light & Shadows に御礼を申し上げます。自動車・輸送機器向けの Unity ソリューションの詳細はこちらをご覧ください。

37 コメント

コメントの配信登録

コメント受付を終了しました。

  1. 28.03.2017

  2. 5/24/2018

  3. Wow, nice showcase, this is really amazing! Best practice in realtime!!!

    How did you solve the UV unwrapping, you wrote that you used ‘automatic unwrapping tools together with interactive (manual) unwrapping’… Which tools did you use? Can this be done in PiXYZ or can you recommend any tools to do such tasks?

    Cheers

    1. Edward Martin

      2月 7, 2019 2:26 pm

      Hi Joe, in this specific case automatic unwrapping was done with the Unwrella plugin within Autodesk 3ds Max (for lightmaps), and manual unwrapping was done manually with built-in 3ds Max tools.

  4. One thing I do not understand, is that how could they do that in VR with the current version of Unity and HDRP that is not actually ready for VR ? (The video say VR Mode at the beginning.)

    1. Edward Martin

      2月 7, 2019 2:32 pm

      Hi Jonathan, we’ve demoed VR in HDRP already, starting at SIGGRAPH 2018. Instructions for doing this are at https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/VR-in-HDRP. I’d also encourage you to try out the 2019.1 beta https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/VR-in-HDRP.

  5. If even the professional CGI studios don’t want to use your merged map approach, you need to take the hint.
    Nobody who uses a standard shader is packing their maps in RGB channels. Professionals who merge maps don’t use a standard shader, all you do is make quick tests very tedious and add a burden of knowledge 90% of users won’t understand or don’t even have a means of achieving (as it requires a software like Photoshop)

    1. That said, the Demo was very impressive and surely the best ive seen achieved in realtime so far, most offline GPU renderers couldn’t do really better

      1. Please take a look at the Stack Lit shader included with HDRP. Does this cover your requirements? It has separate texture channels like you are suggesting. It also also support for Clear Coat which makes it great for Car Paint materials.

      2. Edward Martin

        1月 29, 2019 1:58 am

        Alex is exactly right – the new Stack Lit shader in HDRP addresses this issue, and adds clear coat as well. It produces great results, especially for carpaint. The (soon to be released) Measured Materials Library includes Stack Lit materials. We think you’ll find it very useful for projects like this.

        1. Could you please tell me where to select and use the Stack Lit shader? Is it included in HDRP 4.9? I’ve tried Unity 2018.3 and the latest beta 2019 with HDRP 5.2.3 but could not find the Stack Lit shader in the Material menu? Or is it meant to be created and edited with shader graph, there I found the option “StackLit Graph”?! I assumed Stack Lit shader is something like the default HDRP Lit shader…

  6. First of all a Really Great! demo of Unity’s HDRP. However there are few things we unity should also include in its LIT shader such as separate slot for metallic, smoothness and AO maps. For now it a bit difficult to edit and reuse the textures.
    I am also waiting for a proper Car Paint Shader in HDRP.
    For those who wants to learn more about HD Render Pipeline I have started a you tube series on HDRP.
    If anybody is interested please watch it here.
    https://youtu.be/Ua08A3kMJWY

    1. Edward Martin

      2月 7, 2019 2:44 pm

      The new Stack Lit shader is the answer to your question. Better yet, we’ve now unveiled the first materials library supporting Stack Lit, including a cool new carpaint material. These can be edited in Shader Graph so that you can customize materials to meet your specific needs. Look for more details on the blog soon, and I’m interested in your feedback! https://assetstore.unity.com/packages/2d/textures-materials/unity-measured-materials-library-138814

  7. I would like to know more about the modification of the render you performed.

    1. Edward Martin

      1月 24, 2019 6:51 pm

      There was no modification to the rendering pipeline, this project used the (2018.2) preview of HDRP available to all Unity customers. As mentioned in the article, Light & Shadows created some custom materials using their own process, since Shader Graph became available for HDRP in 2018.3, after this project was completed.

      1. Are they using StackLit shader?

        1. Edward Martin

          2月 7, 2019 3:02 pm

          Yes, Light & Shadows used an early version of the Stack Lit shader. Since then, we’ve made some significant improvements to Stack Lit, and we used Stack Lit for the new HDRP version of the Measured Materials Library.

      2. Does StackLit suitable for game in terms of performance?

        1. Edward Martin

          2月 9, 2019 12:09 pm

          Yes, it is. Stack Lit has slightly higher computational demands than Lit, but in practice it performs very well. I’d encourage you to try it out for yourself. Note that Stack Lit is HDRP only.

  8. Hey, I just published an article about improving visual quality within Unity, using tools such as post processing and shader graph. I thought people here might find it helpful. Please let me know if you have any thoughts and if you liked it –

    https://www.linkedin.com/pulse/programmer-art-unity-7-techniques-achieve-impressive-divij-sood/

    1. Edward Martin

      1月 24, 2019 6:58 pm

      Very cool, Divij! What I love about working at Unity is learning about all of the amazing ways in which Unity can be adapted to nearly any application a person can imagine. I like what you did to take a data viz problem and turn it into a visually engaging project.

      1. Thanks Edward, I’m glad you liked it! I was tasked to do this at my job – my company wants to experiment with biology inspired AI, and this worm is an inspiration for everyone. It was a different challenge for me, that’s for sure.

  9. Andrew Chaiko

    1月 24, 2019 9:12 am

    DOF is the thing that should never exist – neither in gamedev, nor in archvis! =\
    Let my eyes decide what to look at!

  10. oh.. someone please delete this second one…

  11. 2018.3 is out since more than a month, but there’s no trace of the promissed car materials yet.

    1. Edward Martin

      1月 24, 2019 8:31 am

      Hi Besjan, we’re very close to releasing the new measured materials library. We’re wrapping up some documentation now. It will be worth the wait!

      1. Cool, thanks.

        1. Edward Martin

          2月 7, 2019 2:45 pm

          Hi Besjan, I’m happy to tell you that the measured materials are now available (for HDRP / Stack Lit)! https://assetstore.unity.com/packages/2d/textures-materials/unity-measured-materials-library-138814

  12. Really nice.
    Will you show the process of creation this ?
    Also there is a bug with texture in video (1:11) around safe belt hole ;)

    1. Edward Martin

      1月 24, 2019 8:30 am

      Hi Denis, good eye! I think that is a shadow at 1:11. If you’re interested in learning more about the process, please reach out to Light & Shadows.

      1. Well…no, it’s defiantly wrong UV map there…
        https://drive.google.com/open?id=1Z7ht5Rx2DAiqBeOKa_gLDDDUp04Ymvj3

  13. Very nice.

    I have said Unity should provide a basic shader that doesn’t read the metallic from an alpha, but they expect it to be in an alpha channel for some reason, unlike any other app on the planet…

    1. Also, every HD material website provides them as separate maps.

    2. Exactly this. The layered map approach is a very poor choice for a standard shader. Nobody who actually layers maps uses a standard shader. All it does it makes quick tests extremely tedious and confuse new users.

      1. Please take a look at the Stack Lit shader included with HDRP. Does this cover your requirements? It has separate texture channels like you are suggesting. It also also support for Clear Coat which makes it great for Car Paint materials.

        1. Could you please tell me where to select and use the Stack Lit shader? Is it included in HDRP 4.9? I’ve tried Unity 2018.3 and the latest beta 2019 with HDRP 5.2.3 but could not find the Stack Lit shader in the Material menu? Or is it meant to be created and edited with shader graph, there I found the option “StackLit Graph”?! I assumed Stack Lit shader is something like the default HDRP Lit shader…

        2. Edward Martin

          2月 7, 2019 5:07 pm

          I’m replying to Martin … please try out the new materials library at https://assetstore.unity.com/packages/2d/textures-materials/unity-measured-materials-library-138814. I think it will solve your question!