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 を使用してリソースおよび描画コマンドを記録し、RHI がそのコマンドストリームを OpenGL、Vulkan、Metal、または Direct 3D の呼び出しに変換します。シェーダーの処理も統一されており、シェーダーコードを一度記述してSPIR-V にコンパイルし、その後、各種グラフィックス API に適した言語に変換されます。
Qt Quick 3D において、Qt 6.0 の最大の変更点は、共通のレンダリング・ハードウェア・インターフェース(RHI)への移行です。これにより、Qt Quick 3D は、OpenGL や OpenGL ES に加え、Direct3D、Metal、Vulkan でも実行可能になりました。
Qt Quick これにより、Qt Quick と 3Dはこの点において完全に統合されました。たとえば、RHIに関連する設定(レンダリングに使用するグラフィックスAPIの選択など)は、両方に適用されます。
詳細については、「Qt Quick 3D グラフィックス要件」を参照してください。
その他の API の変更点
QML のインポートバージョン
Qt 6.0 以降、Qml の import 文のバージョン番号は Qt のバージョン番号と同じになりました。また、バージョンを指定せずにモジュールをインポートすることも可能になりました。これにより、そのモジュールの最新バージョンがインポートされます。
照明
Light brightness は、デフォルト値が 1.0 のエネルギー乗数として扱われるようになりました。これに対し、Qt 5 ではデフォルト値が 100 のパーセンテージ値が使用されていました。実際には、すべての `brightness ` 値を 100 で割る必要があります。
SceneEnvironment.probeBrightness は「probeExposure 」に名称が変更され、デフォルト値が 1.0 の乗数として再定義されました。つまり、すべての「probeBrightness 」値は「probeExposure 」に名称を変更し、100 で割る必要があります。
AreaLight パフォーマンス上の理由から削除されました。多くの場合、Qt Quick 3D 5.15 で追加された `SpotLight` に置き換えることができます。
カスタムマテリアル
6.0 では、カスタムマテリアル API が完全に刷新されました。これにより、既存のカスタムマテリアルは大幅な書き直しが必要となります。新しい API の詳細については、CustomMaterial のドキュメントを参照してください。
ポストプロセッシングエフェクト
Effect が強化され、構造や組み込みキーワードにおいてCustomMaterial と同様のパターンに従い、 がサポートするものに近いシェーダーコードを使用できるようになりました。これにより、カスタムシェーダーコードを含む既存のエフェクトは、Qt 6.0で動作させる前に移行する必要があります。詳細については、Effect のドキュメントを参照してください。
Principled Material
PrincipledMaterial のQMLタイプは、Qt Quick 6.0で大幅に改善され、物理ベースレンダリング(PBR)の原則により忠実に準拠するようになりました。インポートされたモデルは、マテリアルのプロパティを変更することなく、正しくレンダリングされるはずです。既存のマテリアルについては、以前の不正確さに対する補正を解除するために変更を行う必要があります。
| PrincipledMaterial Qt 5 では | PrincipledMaterial Qt 6 では |
|---|---|
|
|
一部のプロパティのデフォルト値が変更されました:
- metalness デフォルト値が 1 から 0 に変更されました。
- specularAmount デフォルト値が 0 から 0.5 に変更されました。
デフォルトのマテリアル
一部のプロパティのデフォルト値が変更されました:
- specularRoughness デフォルト値が 50 から 0 に変更されます。
定義済みマテリアル
QtQuick3D 6.0 には、事前定義されたマテリアルは含まれていません。将来のリリースで追加されるマテリアルは、おそらく以前のバージョンとは互換性がなくなるでしょう。「Materials」インポートは存在しません。(「CustomMaterial 」型は、ベースとなる「QtQuick3D 」インポートに移動されました。)
Qt 6.0で削除されたマテリアルQmlタイプは以下の通りです:
- AluminumAnodizedEmissiveMaterial
- AluminumAnodizedMaterial
- AluminumBrushedMaterial
- AluminumEmissiveMaterial
- AluminumMaterial
- 銅素材
- つや消しガラス素材
- つや消しガラス・シングルパス素材
- ガラス材料
- ガラス屈折素材
- 紙(芸術的)素材
- 紙(オフィス用)素材
- プラスチック・テクスチャ付き・赤色・発光素材
- プラスチック(構造化・赤色)素材
- 鋼(切削加工済み同心円状)
テッセレーションおよびディスプレースメントマップ
組み込みハードウェアのサポートに重点を置くようになったため、モデルのテッセレーションモードは廃止されました。また、その結果として、マテリアルからのディスプレースメントマップのサポートも削除されました。同様の効果は、custom material を使用することで実現できます。
Qt Quick Item3Dの の子要素としてNode
構文上は同一ですが、2Dの子アイテムの処理方法は内部的に大きく異なります。Qt 6.0では、暗黙的な「テクスチャへのレンダリング」ステップは存在しません。 その代わりに、2DのQt Quick コンテンツは、適切な透視投影を用いて、同じレンダリングパス内でインラインでレンダリングされます。これにより、パフォーマンスの向上、リソース使用量の削減、そして場合によっては(例えばText を使用する場合など)視覚的な忠実度の向上が期待できます。概要については、Qt Quick 3D Scenes with 2D Content を参照してください。
何らかの理由(クリッピング、不透明度など)でテクスチャを通すことが重要な場合は、layer.enabled: true を設定して、2DのItem サブツリーを明示的にレイヤーとして指定してください。これにより、Qt 5.15で提供されていた動作に近くなります。
2Dコンテンツは、親ノードの原点に中央揃えされなくなりました。代わりに、最上位の2Dアイテムの左上隅が3Dノードの原点に配置されるようになりました。 そのため、Qt 5.15 と同じ結果を得るには、トップレベルの 2D Item でanchors.centerIn: parent のようなアンカーを指定することが多くなるでしょう。
© 2026 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.

