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 1.1 をリリースしました

Published Wednesday April 11th, 2018 | Leave a comment
Posted in Qt 3D Studio | Tags: ,

この記事は The Qt Blog の Qt 3D Studio 1.1 Released を翻訳したものです。 執筆: Sami Makkonen, 2018年03月02日 Qt 3D Studio 1.1 をリリースいたしました。このリリースではユーザーインターフェースの大幅な改善がなされ、UI とデータの連携方法についても改善がなされました。 Qt 3D Studio は 3D のユーザーインターフェースを構築するためのデザインツールで、Qt ベースのアプリケーションに 3D のコンテンツを埋め込むことができるようになります。Qt 3D Studio では、3D コンテンツのルックアンドフィールやアニメーション、ユーザーインターフェースのステートを簡単に作成することができます。詳細については これまでの記事 をご覧ください。 データインプット Qt 3D Studio のユーザーからいただいた多くのフィードバックを受けて、アプリケーションの内部データを Qt 3D Studio の世界へ渡すところの改善に取り組み、Data Input と呼ばれる新機能を追加いたしました。バージョン 1.1 ではこの機能はテクノロジープレビューで、現時点でテキストと数値付き範囲の2つの型のデータを扱うことができます。数値付き範囲は主にアニメーションのコントロールで使われます。テキストの方はユーザーインターフェースのテキストやスライドの変更に使われます。データインプットの使い方の詳細は ドキュメント をご覧ください。 Behavior スクリプト 1.1 のリリースでは […]

Read More

Qt 3D Studio ランタイムのアンドロイド端末へのリモートデプロイ

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

この記事は The Qt Blog の Qt 3D Studio Remote Deployment on Android Devices を翻訳したものです。 執筆: Mats Honkamaa, 2018年01月11日 この記事では Qt 3D Studio の Qt 3D Viewer を用いた Android 端末へのリモートデプロイについて紹介します。この機能によりコンピューター上で行われた Qt 3D Studio のプレゼンテーションの変更をターゲットデバイス上で確認することが可能となります。 ターゲットデバイスの準備 リモートデプロイの準備として以下のステップが必要です。 Google Play から Qt 3D Viewer をダウンロード し、ターゲットデバイスへインストール。 ビューアーを起動 メニューの File > Connect を選択。 任意のポート番号かデフォルトのポートを指定して OK をクリック。 接続情報、IP アドレス、ポートがビューアーに表示されるでしょう。 ターゲットデバイスへの接続 […]

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
Get started today with Qt Download now