Qt Quick 3D の変更点
Qt 6 は、フレームワークをより効率的で使いやすくするための意識的な努力の結果です。
私たちは各リリースにおいて、すべてのパブリックAPIのバイナリとソースの互換性を維持しようと努めています。しかし、Qt をより良いフレームワークにするために避けられない変更もあります。Qt Quick 3D API の一部は大幅に変更されました。
このトピックでは、Qt Quick 3Dにおけるそれらの変更点を要約し、それらを扱うためのガイダンスを提供します。
RHI
Qt 6.0 以降では、Qt Quick のデフォルトの適応は、QtGui モジュールによって提供されるグラフィックスの抽象化レイヤ、Qt Rendering Hardware Interface (RHI) を介して常にレンダリングされます。つまり、Qt 5とは異なり、シーングラフが直接OpenGLを呼び出すことはありません。むしろ、RHI APIを使用してリソースと描画コマンドを記録し、コマンドストリームをOpenGL、Vulkan、Metal、またはDirect 3Dの呼び出しに変換します。シェーダー処理も、シェーダーコードを一度書いてからSPIR-Vにコンパイルし、さまざまなグラフィックスAPIに適した言語に変換することで統一されている。
Qt Quick 3D にとって Qt 6.0 の最大の変更点は、共通のレンダリングハードウェアインタフェースへの移行で、これによりQt Quick 3D は OpenGL と OpenGL ES に加えて Direct3D、Metal、Vulkan 上でも動作するようになりました。
Qt Quick と 3Dはこの点で完全に統一されました。例えば、どのグラフィックスAPIでレンダリングするかを選択するなど、RHIに関連する設定はすべて両方に適用されます。Qt Quick
詳しくはQt Quick 3D グラフィックス要件を参照してください。
その他のAPI変更
QML インポートバージョン
Qt 6.0 から、QML インポート文のバージョン番号は Qt のバージョン番号と同じになりました。バージョンを指定せずにモジュールをインポートすることも可能になりました。
照明
Light brightness がデフォルトで 1.0 のエネルギー乗数を表すようになりました。実際には、 の値はすべて 100 で割る必要があります。brightness
SceneEnvironment.probeBrightness
は に名前が変更され、デフォルト値1.0の乗数として再定義されました。つまり、 の値はすべて、 に名前を変更し、100で割る必要があります。probeExposure probeBrightness
probeExposure
AreaLight
はパフォーマンス上の理由から削除されました。多くの場合、 3D 5.15で追加された と置き換えることができます。Qt Quick SpotLight
カスタムマテリアル
カスタムマテリアルAPIは6.0で完全に作り直されました。これは、既存のカスタムマテリアルを大幅に書き直す必要があることを意味します。新しい API の詳細については、CustomMaterial のドキュメントを参照してください。
ポスト処理エフェクト
Effect が強化され、 がサポートするものに非常に近いシェーダコードを使用できるようになりました。構造と組み込みキーワードに関しては、同じパターンに従います。つまり、カスタムシェーダーコードを含む既存のエフェクトは、Qt 6.0 で機能する前に移行する必要があります。詳細は のドキュメントを参照してください。CustomMaterial Effect
プリンシプルマテリアル
PrincipledMaterial QML タイプは、Qt Quick 6.0 で大幅に改善され、Physically Based Rendering の原則により近くなりました。インポートされたモデルは、マテリアルのプロパティを変更しなくても正しくレンダリングされるようになりました。既存のマテリアルは、以前の不正確さを補正するために変更する必要があります。
PrincipledMaterial Qt 5 で | PrincipledMaterial Qt 6 では |
---|---|
いくつかのプロパティのデフォルトが変更されました:
- metalness デフォルトは 1 ではなく 0 になります。
- specularAmount デフォルトが 0 から 0.5 に変更されます。
デフォルトの材質
いくつかのプロパティのデフォルトが変更されました:
- specularRoughness デフォルトは50ではなく0になります。
定義済みマテリアル
QtQuick3D 6.0には定義済みのマテリアルは含まれていません。今後のリリースで追加されるマテリアルは、おそらく古いマテリアルと互換性がありません。マテリアルのインポートは存在しません。(CustomMaterial 、ベースとなるQtQuick3D インポートに移動しました)。
これらは Qt 6.0 で削除されたマテリアルの QML タイプです:
- AluminumAnodizedEmissiveMaterial (アルミニウム陽極酸化エミッシブマテリアル)
- アルミニウム陽極酸化マテリアル
- アルミニウムブラッシュドマテリアル
- アルミニウムエミッシブマテリアル
- アルミニウムマテリアル
- 銅素材
- 曇りガラスの材料
- フロストガラスシングルパス素材
- ガラス材料
- ガラス屈折材料
- 紙芸術材料
- オフィス用紙
- 赤色プラスチック構造材料
- プラスチック構造赤色材料
- スチールミルドコンセントリックマテリアル
テッセレーションとディスプレイスメントマップ
組み込みハードウェアのサポートに重点を置くようになったため、モデルのテッセレーションモードはなくなりました。また、その結果、変位マップのサポートがマテリアルから削除されました。同様の効果は、custom material.
Qt Quick Items を 3D s の子として使用できます。Node
構文的には同じですが、2D の子アイテムの扱い方は内部的にかなり異なります。Qt 6.0では、テクスチャへの暗黙のレンダリングステップはありません。むしろ、2DQt Quick のコンテンツは、同じレンダリングパスで、適切な透視投影で、一直線にレンダリングされます。これにより、パフォーマンスが向上し、リソースの使用量が減り、場合によっては、視覚的な忠実度が向上する可能性があります(たとえば、Text )。概要についてはQt Quick 3D Scenes with 2D Contentを参照してください。
テクスチャを通過することが何らかの理由で重要な場合(クリッピング、不透明度)、layer.enabled: true
を設定して、2DItem サブツリーを明示的にレイヤーにします。こうすることで、Qt 5.15が提供する動作に近くなります。
2Dコンテンツは、もはや親ノードの原点でセンタリングされません。そうではなく、トップレベルの2Dアイテムの左上隅が3Dノードの原点に配置されます。そのため、トップレベルの 2D アイテムは、Qt 5.15 と一致する結果を得るために、anchors.centerIn: parent
のようなアンカーを指定することがよくあります。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.