XrView QML Type
Xrアプリケーションのビューを設定します。詳細...
Import Statement: | import QtQuick3D.Xr |
Since: | Qt 6.8 |
Inherits: | |
Status: | Technical Preview |
プロパティ
- depthSubmissionEnabled : bool
- environment : SceneEnvironment
- fixedFoveation : enumeration
- isQuitOnSessionEndEnabled : bool
- multiViewRenderingEnabled : bool
- multiViewRenderingSupported : bool
- passthroughEnabled : bool
- passthroughSupported : bool
- referenceSpace : enumeration
- renderStats : RenderStats
- runtimeInfo : QQuick3DXrRuntimeInfo
- xrOrigin : XrOrigin
信号
- initializeFailed(const QString &errorString)
- sessionEnded()
方法
- vector3d processTouch(vector3d position, int pointId)
- pickResult rayPick(vector3d origin, vector3d direction)
- List<pickResult> rayPickAll(vector3d origin, vector3d direction)
- setTouchpoint(Item target, point position, int pointId, bool pressed)
- object touchpointState(int pointId)
詳細説明
XrViewは、XRアプリケーションのビューを設定します。次のスニペットは、Qt Quick 3D Xr Simple Exampleにあるもので、この型の使い方を示しています。
// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause import QtQuick import QtQuick.Layouts import QtQuick3D.Helpers //! [XrView] import QtQuick3D import QtQuick3D.Xr XrView { id: xrView XrErrorDialog { id: err } onInitializeFailed: (errorString) => err.run("XRView", errorString) referenceSpace: XrView.ReferenceSpaceLocalFloor //! [XrView] environment: SceneEnvironment { clearColor: "black" backgroundMode: SceneEnvironment.Color }
プロパティ ドキュメント
depthSubmissionEnabled : bool |
XRコンポジターに深度バッファを送信することを有効にするかどうかを制御します。
デフォルトでは、XrView の 3D シーンによって使用される深度バッファは、XR コンポジターに公開されません。しかし、いくつかのプラットフォームでは、深度サブミッションは暗黙的であり、アプリケーションによって無効にしたり制御したりすることはできません。この例はVisionOSです。このプロパティを変更しても、これらのプラットフォームには影響しません。その他の場所、特にOpenXRでは、サポートは実行時に使用されるOpenXR実装に依存します。
depthSubmissionEnabledをtrue
に設定することは常に安全です。ただ、基礎となるスタックでサポートされていない場合は、何の効果もありません。念のため、デバッグ出力を調べて、深度サブミッションが使用されているかどうかを確認できます。深度バッファをサブミットすると、XR コンポジターが実行する再投影が改善される可能性があります。再投影は、例えば、システムがターゲットフレームレートを維持できず、シーンのユーザの知覚を改善し、安定させ、起こりうる乗り物酔いを軽減するために、フレームコンテンツの予測に頼らざるを得ない場合に起こりえます。しかし、アプリケーションとQtはデータ使用量を制御できません。また、深度データを送信しても実用的な効果はなく、基礎となるXRランタイムとコンポジターによって無視されることもあります。
実際には、深度バッファをサブミットすることは、Qtによって作成され管理される中間テクスチャ/レンダーバッファではなく、XRランタイムによって提供される深度テクスチャにレンダリングすることを意味します。深度テクスチャへのレンダリングは、パフォーマンスに影響を与える可能性のある特定の低レベルの結果があります:
multisample antialiasing (MSAA)を使用する場合、深度サブミッションを有効にすると、マルチサンプルデプステクスチャにレンダリングし、XRランタイムによって提供される非マルチサンプルデプステクスチャにサンプルを解決することを意味します。深度サブミッションがなければ、リゾルブステップは必要ありません。さらに、一部の 3D API は、マルチサンプル デプス テクスチャデータの解決をサポートしていません(詳細はQRhi::ResolveDepthStencil フラグを参照してください)。このサポートがない場合、MSAA と組み合わせてデプスサブミッションを有効にしようとしても、潔く無視されます。
MSAA が使用されていない場合でも、深度サブミッションを有効にすると、これを制御する 3D API で深度データが書き出されます。奥行き/ステンシルデータのストア操作は、通常、Qt によって不要であることが示され、これはタイル型 GPU アーキテクチャでパフォーマンスに良い影響を与える可能性があります。Qt の観点からは、深度データは常に書き出されなければならないので、これは深度サブミッションでは行われません。
注意: 開発者は、深度サブミッションを有効にしたアプリケーションをテストし、利点と欠点を評価し、有効にするかどうかをテストに基づいて意識的に選択することをお勧めします。
environment : SceneEnvironment |
ホールド
XRビューのSceneEnvironment 。
fixedFoveation : enumeration |
XrView の固定フォーベーテッドレンダリングのレベルを制御します。
Foveatedレンダリングは、目で見て違いが感じにくい部分の画質(解像度)を下げることでGPUの負荷を軽減します。固定 Foveated レンダリングでは、視覚的な忠実度が低下する領域は固定され、変化しません。プラットフォームによっては、Fixed Foveatedレンダリングという概念がなく、それを制御することもできません。たとえば、VisionOSベースのデバイスは、動的な視線追跡型フォーベーションを実行するため、このプロパティの値は実際には無視されます。したがって、このプロパティの値は実際には無視されます。Meta Quest 3のような他のデバイスは、固定フォベーションのみをサポートしているため、このプロパティが重要になります。
値は以下のいずれかです:
定数 | 説明 |
---|---|
XrView.NoFoveation | 0, ノーフォベージョン。 |
XrView.LowFoveation | 1, 低ファブネーション。 |
XrView.MediumFoveation | 2, 中程度の小斑点。 |
XrView.HighFoveation | 3, 高い foveation。 |
サポートされている場合、デフォルトはHighFoveation
。したがって、アプリケーションでこの値を変更する必要は、実際にはほとんどないはずです。
isQuitOnSessionEndEnabled : bool |
XRセッション終了時にアプリケーションを終了させるかどうかを保持します。
multiViewRenderingEnabled : bool |
これは読み取り専用のプロパティで、XR ビューでマルチビュー・レンダリングが有効になっているかどうかを報告します。
このプロパティは、実行時にマルチビューレンダリングが実際に使用されているかどうかを示します。サポートされていない場合、値はfalse
に反転します。
マルチビューレンダリングを有効にすることを推奨します。パフォーマンスを向上させ、CPU と GPU の消費電力を削減できます。最大限の互換性を確保するため、デフォルトでは無効になっています。開発者は、multiViewRenderingEnabled をtrue
に設定してアプリケーションが期待通りにレンダリングされることを確認し、その後は設定のままにすることをお勧めします。
注意: アプリケーションが提供するシェーダーコードを含む特定のQt Quick および Quick 3D 機能では、マルチビューに対応するためにこのコードを変更する必要がある場合があります。例えば、カスタム2Dおよび3Dマテリアルやポストプロセッシングエフェクトなどです。マルチビュー・レンダリングのドキュメントに、マルチビュー・レンダリングの詳細と、マルチビュー・レンダリングを無効にする方法が記載されています。
multiViewRenderingSupported とマルチビューレンダリングも参照してください 。
multiViewRenderingSupported : bool |
この読み取り専用プロパティは、マルチビューレンダリングの可用性を報告します。
multiViewRenderingEnabledも参照して ください。
passthroughEnabled : bool |
保持
XR ビューでパススルーが有効かどうかを保持します。
passthroughSupported : bool |
表示
XR ビューでパススルーがサポートされているかどうかを示します。
referenceSpace : enumeration |
XR ビューの参照空間を取得または設定します。
以下のいずれかを指定します:
定数 | 値 |
---|---|
XrView.ReferenceSpaceUnknown | |
XrView.ReferenceSpaceLocal | |
XrView.ReferenceSpaceStage | |
XrView.ReferenceSpaceLocalFloor |
renderStats : RenderStats |
保持
XRビューのレンダリング統計情報を保持します。
runtimeInfo : QQuick3DXrRuntimeInfo |
提供
XR ビューの XR ランタイムに関する情報を提供します。
xrOrigin : XrOrigin |
アクティブな XR 原点を保持します。
XR 原点は、XR 座標系の原点とみなされるシーン内の点です。XR原点は、カメラやコントローラなどのトラッキングされたオブジェクトをシーン内に配置するために使用されます。アプリケーションは複数のXrOriginを持つことができますが、一度にアクティブにできるのは1つだけです。
注意: XRでシーンをレンダリングするには、このプロパティを設定する必要があります。
XrOriginも参照して ください。
シグナル・ドキュメント
initializeFailed(const QString &errorString) |
初期化に失敗し、失敗を説明する新しいerrorString 。
注: 対応するハンドラはonInitializeFailed
です。
sessionEnded() |
セッション終了時に発行される。
注 : 対応するハンドラはonSessionEnded
です。
メソッドのドキュメント
このメソッドは、position の近くにあるXrItem を検索し、position がサーフェス上のポイントにマッピングされている場合、タッチ ポイント IDpointId で仮想タッチ イベントを送信します。
戻り値はposition とサーフェス上のタッチされたポイント間のオフセットです。これは、ハンド モデルがXrItem を通過しないようにするために使用できます。
XrHandModelも参照してください 。
pickResult rayPick(vector3d origin, vector3d direction) |
このメソッドは、origin を始点とし、direction でシーン内にレイを射出し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。
例えば、シーン内の任意のオブジェクトの位置と前方ベクトルを渡すと、アイテムの前にあるオブジェクトを見ることができます。これにより、シーン内のどのポイントからでもピッキングが可能になります。
List<pickResult> rayPickAll(vector3d origin, vector3d direction) |
このメソッドは、origin 、direction を始点としてシーン内にレイを射出し、シーン内のオブジェクトとの最も近い交差点に関する情報のリストを返します。リストは、方向ベクトルに沿って原点からの距離でソートされ、最も近い交差点が最初に、最も遠い交差点が最後に表示されます。
これは、例えば、シーン内の任意のオブジェクトの位置と前方ベクトルで呼び出すことができ、アイテムの前にあるオブジェクトを確認することができます。これにより、シーン内のどのポイントからでもピッキングが可能になります。
合成タッチイベントをtarget に送信し、IDpointId のタッチポイントをposition に移動させます。pressed は、ポイントが押されたかどうかを判断します。また、pointId が以前に別のアイテムでアクティブになっていた場合は、適切なタッチ リリース イベントを送信します。
object touchpointState(int pointId) |
このメソッドは、IDpointId 。状態は、プロパティ名から値へのマップによって表される:
キー | タイプ | 説明 |
---|---|---|
grabbed | bool | そのポイントはアイテムにつかまれているか?false の場合、その他の値はすべてundefined となる。 |
target | XrItem | タッチポイントをつかんでいるアイテム。 |
pressed | bool | タッチ点は押されていますか? |
cursorPos | point | 内のタッチ点の2D位置。target |
touchDistance | real | 平面からタッチ点までの距離。pressed がtrue の場合は0 となる。 |
© 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.