XrView QML Type

Xrアプリケーションのビューを設定します。詳細...

Import Statement: import QtQuick3D.Xr
Since: Qt 6.8
Inherits:

Node

Status: Technical Preview

プロパティ

シグナル

メソッド

詳細説明

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 [default: false]

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 [default: XrView.HighFoveation]

XrView の固定フォーベーテッドレンダリングのレベルを制御します。

Foveatedレンダリングは、目で見て違いが感じにくい部分の画質(解像度)を下げることでGPUの負荷を軽減します。固定 Foveated レンダリングでは、視覚的な忠実度が低下する領域は固定され、変化しません。プラットフォームによっては、Fixed Foveatedレンダリングという概念がなく、それを制御することもできません。たとえば、VisionOSベースのデバイスは、動的な視線追跡型フォーベーションを実行するため、このプロパティの値は実際には無視されます。したがって、このプロパティの値は実際には無視されます。Meta Quest 3のような他のデバイスは、固定フォベーションのみをサポートしているため、このプロパティが重要になります。

値は以下のいずれかです:

定数説明
XrView.NoFoveation0, ノーフォベージョン。
XrView.LowFoveation1, 低ファブネーション。
XrView.MediumFoveation2, 中程度の小斑点。
XrView.HighFoveation3, 高い foveation。

サポートされている場合、デフォルトはHighFoveation 。したがって、アプリケーションでこの値を変更する必要は、実際にはほとんどないはずです。


isQuitOnSessionEndEnabled : bool

XRセッション終了時にアプリケーションを終了させるかどうかを保持します。


multiViewRenderingEnabled : bool [default: false]

XR ビューでマルチビュー・レンダリングを有効にするかどうかを取得または設定します。

値をtrue に変更すると、multiViewRenderingSupportedtrue の場合にのみ効果があります。

このプロパティは、実行時にマルチビューレンダリングが実際に使用されているかどうかを示します。サポートされていない場合、値はfalse に反転します。

マルチビュー・レンダリングを有効にすることを推奨します。パフォーマンスを向上させ、CPU と GPU の消費電力を削減できます。最大限の互換性を確保するため、デフォルトでは無効になっています。開発者は、multiViewRenderingEnabled をtrue に設定した状態でアプリケーションが期待通りにレンダリングされることを確認し、その後は設定したままにすることをお勧めします。

アプリケーションから提供されるシェーダーコードを含むQt QuickおよびQuick 3Dの一部の機能では、マルチビューに対応するためにこのコードを変更する必要があるかもしれません。例えば、2Dや3Dのカスタムマテリアルやポストプロセッシングエフェクトなどです。

注: シーンが既に稼働している間に動的に値を変更することは可能ですが、マルチビューモードの有効化または無効化には、特定のグラフィックスおよびXRリソースの解放と再作成が伴うため、推奨されません。プラットフォームやヘッドセットによっては、望ましくない視覚効果を引き起こす可能性があります。例えば、シーンが消えたり現れたりします。

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 です。


メソッドのドキュメント

vector3d processTouch(vector3d position, int pointId)

このメソッドは、position の近くにあるXrItem を検索し、position がサーフェス上のポイントにマップされている場合、タッチ ポイント IDpointId で仮想タッチ イベントを送信します。

戻り値はposition とサーフェス上のタッチされたポイント間のオフセットです。これは、ハンド モデルがXrItem を通過しないようにするために使用できます。

XrHandModelも参照してください


pickResult rayPick(vector3d origin, vector3d direction)

このメソッドは、origin を始点とし、direction でシーン内にレイを射出し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。

例えば、シーン内の任意のオブジェクトの位置と前方ベクトルを渡すと、アイテムの前にあるオブジェクトを見ることができます。これにより、シーン内のどのポイントからでもピッキングが可能になります。


List<pickResult> rayPickAll(vector3d origin, vector3d direction)

このメソッドは、origindirection を始点としてシーンにレイを照射し、シーン内のオブジェクトとの最も近い交差点に関する情報のリストを返します。リストは、方向ベクトルに沿った原点からの距離でソートされ、最も近い交差点が最初に、最も遠い交差点が最後に表示されます。

これは、例えば、シーン内の任意のオブジェクトの位置と前方ベクトルで呼び出すことができ、アイテムの前にあるオブジェクトを確認することができます。これにより、シーン内のどのポイントからでもピッキングが可能になります。


setTouchpoint(Item target, point position, int pointId, bool pressed)

合成タッチイベントをtarget に送信し、IDpointId のタッチポイントをposition に移動させます。pressed は、ポイントが押されたかどうかを判断します。また、pointId が以前に別のアイテムでアクティブになっていた場合は、適切なタッチ リリース イベントも送信します。


object touchpointState(int pointId)

このメソッドは、IDpointId 。状態は、プロパティ名から値へのマップによって表される:

キータイプ説明
grabbedboolそのポイントはアイテムにつかまれているか?false の場合、その他の値はすべてundefined となる。
targetXrItemタッチポイントをつかんでいるアイテム。
pressedboolタッチポイントは押されていますか?
cursorPospoint内のタッチ点の2D位置。target
touchDistancereal平面からタッチ点までの距離。pressedtrue の場合は0 となります。

本書に含まれる文書の著作権は、各所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。