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 と Qt Quick 3D は完全に統合されました。例えば、どのグラフィックス API でレンダリングするかなど、RHI に関連する設定はすべて両方に適用されます。
詳しくはQt Quick 3D Graphics Requirementsを参照してください。
その他の API の変更
QML インポートバージョン
Qt 6.0 から、QML インポート文のバージョン番号は Qt のバージョン番号と同じになりました。バージョンを指定せずにモジュールをインポートすることも可能になりました。
照明
Light brightness がデフォルトで 1.0 のエネルギー乗数を表すようになりました。実際には、 の値はすべて 100 で割る必要があります。brightness
SceneEnvironment.probeBrightness
は に名前が変更され、デフォルト値1.0の乗数に再定義されました。つまり、 の値はすべて、 に名前を変更し、100で割る必要があります。probeExposure probeBrightness
probeExposure
AreaLight
はパフォーマンス上の理由から削除されました。多くの場合、Qt Quick 3D 5.15 で追加された で置き換えることができます。SpotLight
カスタムマテリアル
カスタムマテリアル API は 6.0 で完全に作り直されました。つまり、既存のカスタムマテリアルは大幅に書き直す必要があります。新しい API の詳細については、CustomMaterial のドキュメントを参照してください。
ポスト処理エフェクト
Effect が強化され、 がサポートするものに非常に近いシェーダコードを使用できるようになりました。構造と組み込みキーワードに関しては、同じパターンに従います。つまり、カスタムシェーダーコードを含む既存のエフェクトは、Qt 6.0 で機能する前に移行する必要があります。詳細は のドキュメントを参照してください。CustomMaterial Effect
プリンシプルマテリアル
Qt Quick 6.0 では、PrincipledMaterial QML タイプが大幅に改善され、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 。
3DNodeの子としての Qt QuickItems
構文的には同じですが、2D の子アイテムの扱い方は内部的にかなり異なります。Qt 6.0では、テクスチャへの暗黙のレンダリングステップはありません。むしろ、2D Qt Quick コンテンツは、同じレンダーパスで、適切な透視投影で、一直線にレンダリングされます。これにより、パフォーマンスが向上し、リソースの使用量が減り、場合によっては、視覚的な忠実度が向上する可能性があります(Text など)。概要については、Qt Quick 3D Scenes with 2D Contentを参照してください。
テクスチャを通過することが何らかの理由で重要な場合(クリッピング、不透明度)、layer.enabled: true
を設定することで、2DItem サブツリーを明示的にレイヤーにします。こうすることで、Qt 5.15が提供する動作に近くなります。
2Dコンテンツは、親ノードの原点でセンタリングされなくなりました。そうではなく、トップレベルの 2D アイテムの左上隅が 3D ノードの原点に配置されます。そのため、Qt 5.15と一致する結果を得るために、トップレベルの2Dアイテムは、anchors.centerIn: parent
のようなアンカーを指定することがよくあります。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 Qt Quick 3D - XR Simple Example Reference - Helpers QML Types © 2024 Qt Company Ltd. 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。