Qt 3D Studio

エントリーレベルのハードウェア向けにリアルタイム3Dを最適化する方法

Published Wednesday May 29th, 2019 | Leave a comment
Posted in Qt, Qt 3D Studio, Qt Quick | Tags:

自動車への各種デジタル機器の搭載が拡大し続けるなか、求められるユーザーエクスペリエンスを実現するのにどのくらいのコストがかかるのか、綿密に検討することが極めて重要なタスクとなっています。量産品であれば、1つのハードウェアコンポーネントのコストが10ドルなのか、50ドルなのか、100ドルなのかによって大きな差異が出ます。だからこそ、SoCで最も効率的なソフトウェア実行方法を検討することは、非常に大切なのです。現代のユーザーは、高品質なグラフィックとなめらかなアニメーションを求めており、デジタル機器をはじめとするシステムに関しては、常に良いパフォーマンスを発揮できる安全性も重視されます。こちらの記事では、ルネサス社の車載システム用エントリーレベルSoC「R-Car D3」、Qt Quick、Qt 3D Studioにより、非常になめらかで常時60fpsのレンダリングを実現する方法についてご紹介します。 本プロジェクトの要件 本プロジェクトでは、ルネサス社の車載システム用エントリーレベルSoC「R-Car D3」をハードウェアとして選択しました。同等のパフォーマンスを備えたエントリーレベルのSoCは他のメーカーからも提供されており、The Qt Companyでも過去にNXP社のエントリーレベルSoCを使った複数のプロジェクトを実施しています。今回は、イマジネーションテクノロジーズ社のエントリーレベルGPUであるPowerVR GE8300 (https://www.imgtec.com/powervr-gpu/ge8300/)とARM Cortex A53 CPUコアを搭載した、ルネサス社のR-Car D3を利用することとしました。 さらに本プロジェクトのベースとして、The Qt Companyのビジュアルデザイナーが典型的なデジタル機器類のデザインを設計しました。左右に異なるゲージモードと、中央にはリアルタイム3D ADAS(Advanced Driver Assistance Systems、先進運転支援システム)ビューを備えたデザインを採用しました。プロジェクトの狙いは、選択したローエンドハードウェア(ルネサス社のエントリーレベルSoC「R-Car D3」)を使い、解像度1280 x 480/常時60fpsを実現することです。デザインコンセプトは、OpenGLのシェーダーとビジュアルデザインを用い、リアルタイム3Dエレメント(ADASビュー)と2Dレンダリングしたエレメントを組み合わせ、(実際にはリアルタイム3Dではない)シームレスな3D体験の実現を目指すことです。 デザインコンセプト図 初期設定と調査結果 Qt 5.12を実装したR-Car D3開発ボード上で、Qt 3D Studioを用いた初期プロトタイプを実行し、パフォーマンス分析を行いました。グラフィックはさほど複雑なものではありませんでしたが、この最適化前のデザインでは、レンダリング速度は最大10fpsにとどまりました。プロジェクトアセットの最適化後には改善が見られたものの、結果は最大20fpsと、目標の60fpsにはほど遠い数値となりました。さらなる分析を進め、アプリケーションのアーキテクチャ全体を検討する必要があるのは明らかでした。 そこでPVRTraceを導入し、D3 SoCの状態と、改善が必要な点を詳しく分析していきました。その結果すぐに、OpenGLで大きなフレームバッファオブジェクト(FBO)をした際や、ターゲットバッファのレンダリングを行った場合に、このハードウェアのパフォーマンスが低下することが判明しました。単一のフルスクリーンFBOだけでも10msのオーバーヘッドが生じていました(目標値の60fpsでは16.6msが限界で、そのうちの10msがオーバーヘッド)。 アーキテクチャの測定 本プロジェクトでは多種多様なアプリケーションアーキテクチャで測定を行い、D3ハードウェアのベースラインを明らかにすると同時に、Qt Quick + 直書きのOpenGL ADASビューという組み合わせでの測定も行いました。Qt Quickでできることはすべて試し、OpenGLコマンドでADASの描画を実行しました。結果、この設定で60fpsを実現し、この目標値が達成可能であることが確認されました。 続けて、Qt Quick + Qt 3D Studioという組み合わせに移行しました。各ゲージをQt Quickで実装し、Qt 3D Studioのコンポーネントとして中央にADASビューを配置しました。使用するFBOは1つです。3Dコンテンツが単層(単層透過)なのでFBOも1つという考え方で、テクスチャ圧縮によりRAMも節約しました。このセットアップでも、常時60fpsのレンダリング速度を実現できました。 最適なアーキテクチャの決定 試行錯誤の結果、Qt Quickで2Dエレメントを実装し、ADASビューにQt 3D […]

Read More

Qt 3D Studio ランタイムの改善計画

Published Thursday March 8th, 2018 | Leave a comment
Posted in Qt 3D Studio | Tags:

この記事は The Qt Blog の Towards an Improved Qt 3D Studio Runtime を翻訳したものです。 執筆: Laszlo Agocs, 2017年12月11日 Qt 3D Studio 1.0 が無事リリースされたため、今後の開発計画についてお知らせしたいと思います。リリースのアナウンスで概要が示されたとおり、Qt 3D 上で描画やシーンの実行を行うランタイムへの移行作業が進行中です。というわけで、この記事では具体的な内容を紹介したいと思います。 概要 シーンとレイヤー Qt 3D Studio は 3D のシーンを簡単に開発できるデザインツールで、主に 3D のユーザーインターフェースをターゲットにしています。3D モデルやテクスチャマップのようなアセットがインポートされると、デザイナーはシーンを生成し、 3D モデルを配置し、変形し、マテリアルを指定し、キーフレームベースのアニメーションを対象となるモデルやマテリアルやレイヤーのプロパティに設定します。レイヤーのコンセプトは Photoshop のようなツールに馴染みがある人には自然なもので、個々のレイヤーにはそれぞれ 3D のシーンがカメラとともに定義されます。そしてレイヤーの位置やサイズ、合成のモードなどに応じてすべてのレイヤーを合成されたものが描画され、最終的な出力となります。 レイヤーのレベルではマルチサンプリングやスーパーサンプリング、プログレッシブやテンポラルアンチエイリアシングといったいくつかのアンチエイリアスの種類が利用可能です。詳細は ドキュメント を参照してください。 スライド レイヤーを補完する仕組みとしてスライドがあります。スライドは、例えば「状態」のようなもので、Powerpoint のようなプレゼンテーションツールではありません。アクティブ(可視)なオブジェクトを定義したり、シーンによる様々なオブジェクトのプロパティの変更を定義したり、スライドがアクティブになった場合のアニメーションを設定したりすることができます。「マスタースライド」という特殊なスライドでは、すべてのスライドに共通なオブジェクトやアニメーションを定義する事が可能です。 マテリアル ピクセルベースのライトや Directional Light、Point Light、Area Light、シャドーマッピング、スクリーンスペースアンビエントオクルージョン(SSAO)、画像によるライティング など数多くの機能を提供しているデフォルトのマテリアルでは不十分な場合にはカスタムのマテリアルを摘要することが可能です。カスタム(フラグメント)シェーダーとその入力となるプロパティにセットする機能を提供します。ビルトインのマテリアルと同様、これらのプロパティは編集可能でアニメーションにも対応します。一般的なカスタムマテリアルは1つのシェーダーで構成されますが、複数のシェーダーを利用することも可能で、複数のパスを定義し、直前のパスの結果に対しての処理を順番に実行することも可能です。 エフェクト […]

Read More

Qt 3D Studio について

Published Tuesday February 21st, 2017 | 2 Comments on Qt 3D Studio について
Posted in Qt | Tags: , ,

この記事は The Qt Blog の Introducing Qt 3D Studio を翻訳したものです。 執筆: Lars Knoll, 2017年2月20日 ここ数年、Qt の内外において 3D 技術を用いた UI 開発に関する様々な作業が続けられてきました。 本日は、近い将来 Qt の一部となる、非常に強力でデザイナーフレンドリーなツールの提供に向けて、大きな一歩を踏み出したことをみなさんと共有したいと思います。 NVIDIA により Qt のこれまでの歴史の中でも非常に大きな部類に入る貢献がなされました。デザイナーフレンドリーな 3D の UI オーサリングシステムである NVIDIA DRIVE™ Design Studio を Qt に貢献していただけることになりました。NVIDIA Design Studio は既に様々な業界の製品で幅広く使われている技術です。 この度の貢献は数十万行のソースコードからなり、ランタイムコンポーネントとデザイナーフレンドリーなツール、Qt への移植の3つになります。これにより、最先端の 3D のツールが Qt の世界で使えるようになります。この記事のタイトルのとおり、これを Qt 3D Studio という名前にすることにしました。 実際の動作は以下の動画をご覧ください: この移植をさらに進めて、デザイナーが簡単に 3D のユーザーインターフェースを […]

Read More
Get started today with Qt Download now