Qt Data Visualization の概要
Qt Data Visualization モジュールは、学術研究や医療などの分析が要求される業界向けに、応答が速く複雑で動的な 3D 可視化を開発する方法を提供します。Qt 3D Data Visualization は、3D バー、散布図、サーフェス可視化を提供します。ユーザインタラクションとリアルタイムの 3D 描画ビジュアライゼーションを組み合わせることで、空間を効果的に使用するユーザインタフェースを作成できます。3D 表示と 2D 表示を切り替えることで、データの視覚化において 3D の価値を真に活用できます。
グラフのルック&フィールは、事前に定義されたテーマを使用するか、または新しいテーマを定義することによってカスタマイズすることができます。さらに、シーンはカメラの設定を指定することでカスタマイズでき、個々のアイテムは定義済みまたはユーザー定義のメッシュを使用することでカスタマイズできます。
Qt Data Visualization は、Qt アイテムモデルやハイトマップからのデータを視覚化するために使用できる、既製のデータプロキシを提供します。各グラフタイプには基本的なプロキシ・タイプがあり、その可視化に適したフォーマットでデータを受け取ります。詳細はQt Data Visualization Data Handling を参照してください。
エンドユーザーは、グラフの回転、データの拡大・縮小、項目の選択、3Dデータの2Dスライスの表示など、いくつかの方法でグラフに表示されたデータを操作することができます。詳細はQt Data Visualization Interacting with Data を参照してください。
注意: Qt Data Visualization モジュールはメンテナンス中です。新しいプロジェクトでは、Qt Graphsモジュールの使用を検討してください。3Dレンダリングについては、QtGraphs 、QtQuick3Dを使用しています。QtQuick3DはQtRhiを使用しています。QtRhiは各プラットフォームのネイティブレンダリングバックエンド(macOSではMetal、WindowsではDirectX、LinuxではOpenGLまたはVulkan)に依存します。Qt Data VisualizationからQt Graphsモジュールへの移行については、Qt DataVisualizationからのQt Graphsへの移行を参照してください。
グラフの種類
Qt Data Visualization モジュールでは、以下の 3D グラフタイプを提供しています:
QAbstract3DGraph クラスはQWindow をサブクラス化し、異なるグラフ・タイプを実装する独自のサブクラスに対してレンダー・ループを提供します:Q3DBars Q3DScatter およびQ3DSurface 。グラフ・タイプによって、データの表示方法が決まります。
3D棒グラフ
3D棒グラフは、データをカテゴリー別にグループ化された3D棒として表示する。Q3DBars 、QBar3DSeries 、QBarDataProxy のクラスはグラフの作成に使われ、 、 のクラスはグラフにデータを設定したり、グラフの描画モードや網掛けなどの視覚的なプロパティを制御するのに使われます。QMLでは、対応する型はBars3D 、Bar3DSeries 、BarDataProxy です。
詳しくは、How to construct a minimal Q3DBars graph 、単純棒グラフの例を参照してください。
3D散布図
3D散布図はデータを点の集まりとして表示します。Q3DScatter クラスはグラフを作成するために使われ、QScatter3DSeries とQScatterDataProxy クラスはグラフにデータを設定したり、グラフの視覚的なプロパティを制御するために使われます。QMLでは、対応する型はScatter3D 、Scatter3DSeries 、ScatterDataProxy です。
詳しくは、How to construct a minimal Q3DScatter graph 、単純散布図グラフの例を参照してください。
3D曲面グラフ
3D曲面グラフはデータを3D曲面プロットとして表示します。Q3DSurface クラスはグラフを作成するために使われ、QSurface3DSeries とQSurfaceDataProxy クラスはグラフにデータを設定したり、グラフの視覚的なプロパティを制御するために使われます。QMLでは、対応する型はSurface3D 、Surface3DSeries 、SurfaceDataProxy です。
詳しくは、How to construct a minimal Q3DSurface graph 、Graph Gallery、Surface Graph Galleryの例を参照してください。
データのレンダリングにOpenGLを使う
データのレンダリングにはOpenGL 2.1以降を使用することを推奨します。OpenGL ES2を使用する場合(WindowsのAngleビルドを含む)、以下の機能はサポートされません:
- 影
- アンチエイリアス
- サーフェスのフラットシェーディング
- ボリュームオブジェクト(3Dテクスチャを使用するため
ソフトウェア レンダラーでは、OpenGL ES2 エミュレーションのみが利用可能です(つまり、QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL) を使用する場合)。
レンダリングモードの選択
QML では、AbstractGraph3D.RenderingMode プロパティを設定することで、グラフをウィンドウの背景に直接描画するのか、それとも通常の QML アイテム描画時に描画されるオフスクリーン表面に描画するのかを指定することができます。
背景描画モードは間接描画モードよりも若干パフォーマンスが向上しますが、その代償としてQMLの動作が非標準となります。例えば、グラフはQMLアイテムのZ順序に従いませんし、部分的に透明にすることもできません。したがって、レンダリングモードを変更することは、パフォーマンスとクオリティの問題になります。
Qt Quick はデータレンダリングに専用のシーングラフを使用するため、データの視覚化に最適です。
3D軸
Qt Data Visualizationは以下の軸タイプをサポートしています:
- 値軸
- カテゴリ軸
軸は、線またはグリッドを表示するように設定できます。どちらの軸タイプも、QAbstract3DAxis クラスまたはAbstractAxis3D QML タイプの特殊化です。
値軸には、値の範囲と、範囲を分割するセグメントとサブセグメント数を指定できます。各セグメント間にはラベルが引かれます。グリッド線は、各セグメントと各サブセグメントの間に引かれます。値軸は、QValue3DAxis クラスまたはValueAxis3D QML タイプを使用して実装されます。
カテゴリ軸には、名前付き範囲と調整可能な範囲幅があります。軸範囲によって定義されたデータ・ウィンドウ・サイズに基づいて、等しいサイズのカテゴリに分割されます。ラベルは、提供されている場合は、カテゴリの位置に描画されます。グリッド線は、表示されている場合はカテゴリ間に描画されます。カテゴリ軸は、QCategory3DAxis クラスまたはCategoryAxis3D QML タイプを使用して実装されます。
グラフに軸が明示的に設定されていない場合、ラベルのない一時的なデフォルト軸が作成されます。これらのデフォルト軸は軸アクセサによって変更することができますが、特定の方向に対して軸が明示的に設定されると、その方向のデフォルト軸は破棄されます。
すべてのグラフ・タイプで、複数の系列を同時に表示できる。すべての系列が同じ数の行と列を含む必要はない。行ラベルと列ラベルは、行軸と列軸に対して明示的に定義されていない限り、最初に追加された系列から取得される。
軸フォーマッタを使用して、値軸グリッド線とラベルをカスタマイズすることができます。QValue3DAxisFormatter クラスとValueAxis3DFormatter QML タイプは、線形値 3D 軸のフォーマット・ルールを提供します。QLogValue3DAxisFormatter クラスとLogValueAxis3DFormatter QMLタイプは、対数値3D軸のフォーマットルールを提供します。
極横軸は、polar プロパティを設定することで、曲面グラフや散布図に使用することができます。
3Dテーマ
テーマとは、グラフのすべての視覚的要素に適用される、UI スタイルに関連する設定の組み込みコレクションです。
Qt Charts には以下の定義済みテーマが用意されており、カスタムテーマのベースとして使用できます:
- Qtは緑を基調とした明るいテーマです。
- 原色は、黄色を基調とした明るいテーマです。
- Digiaはグレーを基調とした明るいテーマです。
- Stone mossは、黄色を基調としたミディアムダークのテーマです。
- アーミーブルーはブルーを基調としたミディアムライトのテーマです。
- レトロはブラウンを基調としたミディアムライトのテーマ。
- エボニーは白を基調としたダークなテーマ。
- Isabelleは黄色を基調としたダークなテーマです。
- User definedはデフォルトのテーマで、カスタマイズが可能です。詳しくはDefault Theme をご覧ください。
カスタムテーマはゼロから作成することもできる。
グラフが複数のデータ系列のデータを表示する場合、いくつかの設定は系列ごとに個別に指定できます。例えば、グラフの層ごとに異なるグラデーションを指定して、よりリアルに見せることができます。例については、Surface Graph Galleryを参照してください。
3Dシーンのカスタマイズ
3D シーンは、Q3DScene クラスまたはScene3D QML タイプを使用して実装します。シーンには、Q3DCamera クラスまたはCamera3D タイプを使用して実装されたアクティブなカメラと、Q3DLight クラスまたはLight3D タイプを使用して実装されたアクティブな光源が 1 つ含まれます。光源は常にカメラに対して配置されます。デフォルトでは、光の位置は自動的にカメラに追従します。
カメラのプリセット位置、回転、ズームレベルを指定してカスタマイズできます。例については、単純散布図を参照してください。
項目のカスタマイズ
Qt Data Visualizationには、バー、アイテム、サーフェスのメッシュタイプがあらかじめ定義されています。メッシュタイプによって、棒、アイテム、サーフェスがグラフ上でどのように見えるかが決まります。ユーザ定義メッシュは、Wavefront OBJ ジオメトリ定義ファイルとして指定できます。メッシュの回転にはクォータニオンを設定することができます。
個々のアイテムのカスタマイズに加え、QCustom3DItem クラスまたはCustom3DItem QML タイプを使用して、カスタムアイテムをグラフに追加できます。アイテムはカスタムメッシュ、位置、拡大縮小、回転、そしてオプションのテクスチャーを持ちます。
QCustom3DVolume クラスとCustom3DVolume QML タイプを使用して、グラフに追加するボリューム レンダリング オブジェクトを作成できます。ボリュームレンダリングオブジェクトは、3Dテクスチャを持つボックスです。ボリュームには3つのスライス面があり、ボリュームの各主軸に沿って1つずつ配置されます。
QCustom3DLabel クラスとCustom3DLabel QML タイプは、テキスト、フォント、位置、拡大縮小、回転を指定したカスタムラベルを実装します。ラベルの色、ボーダー、背景は、アクティブなテーマによって決定されます。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。