このページでは

XrView QML Type

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

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

Node

Status: Technology preview

この型はテクノロジープレビュー段階にあり、変更される可能性があります。

プロパティ

信号

方法

  • pickResult closestPointPick(vector3d origin, float radius, Model model) (since 6.11)
  • vector3d processTouch(vector3d position, int pointId)
  • pickResult rayPick(vector3d origin, vector3d direction)
  • pickResult rayPick(vector3d origin, vector3d direction, Model model) (since 6.11)
  • List<pickResult> rayPickAll(vector3d origin, vector3d direction)
  • void 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
//! [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
    }

プラットフォームに関する注意事項

Meta Quest デバイス

enable passthrough を行うには、アプリのAndroidManifest.xml ファイルに以下の権限を追加する必要があります:

<uses-feature android:name="com.oculus.feature.PASSTHROUGH" android:required="false"/>

プロパティのドキュメント

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 の固定フォービエートレンダリングのレベルを制御します。

フォービエートレンダリングは、目にはほとんど違いが認識されない領域の画質(解像度)を下げることで、GPUの負荷を軽減します。固定フォービエートレンダリングでは、視覚的な忠実度が低下する領域が固定されており、変化しません。一部のプラットフォームでは、固定フォービエートレンダリングの概念自体が存在しないか、またはその制御機能がありません。 たとえば、VisionOSベースのデバイスは、アイトラッキングによる動的なフォーベーションを実行するため、実際にはこのプロパティの値は無視されます。一方、Meta Quest 3などの他のデバイスは固定フォーベーションのみをサポートしているため、このプロパティが重要になります。

値は以下のいずれかになります:

Constant説明
XrView.NoFoveation0:フォーベーションなし。
XrView.LowFoveation1:低フォーベーション。
XrView.MediumFoveation2、中程度の中心視。
XrView.HighFoveation3、高い中心視。

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

isQuitOnSessionEndEnabled : bool

XRセッションが終了した際に、アプリケーションを終了させるかどうかを指定します。

multiViewRenderingEnabled : bool [default: true]

これは、XRビューでマルチビューレンダリングが有効になっているかどうかを示す読み取り専用プロパティです。

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

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

注: アプリケーションによって提供されるシェーダーコードを伴う特定の Qt Quick およびQuick 3D機能については、マルチビューに対応させるためにこのコードの修正が必要になる場合があります。その例としては、カスタム2Dおよび3Dマテリアルやポストプロセッシングエフェクトなどが挙げられます。マルチビューレンダリングのドキュメントには、この点に関する詳細情報や、マルチビューレンダリングを無効にする方法について記載されています。

「 multiViewRenderingSupported 」 および「マルチビュー・レンダリング」も参照してください 。

multiViewRenderingSupported : bool

この読み取り専用プロパティは、マルチビューレンダリングの利用可否を報告します。

「multiViewRenderingEnabled」も参照してください 。

passthroughEnabled : bool

保持

XRビューでパススルーが有効になっているかどうかを示します。

passthroughSupported : bool

示す

XRビューでパススルーがサポートされているかどうかを示します。

referenceSpace : enumeration [default: XrView.ReferenceSpaceLocal]

XRビューの参照空間を取得または設定します。

以下のいずれかです:

定数説明
XrView.ReferenceSpaceUnknown 
XrView.ReferenceSpaceLocal原点はデフォルトのビュー位置にあります(通常は「ビューのリセット」操作によって定義されます)。
XrView.ReferenceSpaceStage原点は、ユーザーが定義した領域の中心にある床の高さに位置します。
XrView.ReferenceSpaceLocalFloor原点は、デフォルトのビュー位置より下の床の高さにあります。

ReferenceSpaceLocal これは主に、コンテンツが床を基準に配置されていない座った状態でのアプリケーション(例:フローティングメニュー)で役立ちます。ユーザーがビューをリセットすると、コンテンツは移動します。

ReferenceSpaceStage は、ユーザーがプレイエリア内で自由に移動するルームスケール型アプリケーションで主に役立ちます。ユーザーがビューをリセットしても、コンテンツは移動しません。

ReferenceSpaceLocalFloor は、コンテンツが床を基準に配置される、静止した状態(座っている、または立っている)でのアプリケーションで主に役立ちます。ユーザーがビューをリセットすると、コンテンツが移動します。

注:visionOSでは 、参照空間は常にReferenceSpaceLocalFloor に設定されており、変更することはできません。つまり、ReferenceSpaceLocal で設計されたアプリケーションは、visionOS上では原点が床面レベルに位置することになり、コンテンツが予期しない位置に表示される可能性があります。この問題に対処するには、アプリケーションが実行時にreferenceSpaceプロパティを確認し、それに応じてコンテンツの垂直位置を調整する必要があります。例:

y: xrView.referenceSpace === XrView.ReferenceSpaceLocalFloor ? 130 : 0

renderStats : RenderStats

保持

XRビューのレンダリング統計情報を保持します。

runtimeInfo : QQuick3DXrRuntimeInfo

提供内容

XRビュー用のXRランタイムに関する情報を提供します。

xrOrigin : XrOrigin

アクティブなXR原点を保持します。

XR原点とは、シーン内のどの点がXR座標系の原点とみなされるかを指定するものです。XR原点は、カメラやコントローラーなどのトラッキング対象オブジェクトをシーン内に配置するために使用されます。1つのアプリケーションに複数のXrOriginsを設定できますが、一度にアクティブにできるのは1つだけです。

注: シーンをXRでレンダリングするには、この プロパティを設定する必要があります。

関連項目: XrOrigin 。

Signal ドキュメント

initializeFailed(const QString &errorString)

初期化に失敗し、その失敗内容を記述した新しいerrorString が存在する場合に発生します。

注: 対応するハンドラは onInitializeFailed です。

sessionEnded()

セッションが終了した際に発行されます。

注: 対応するハンドラは onSessionEnded です。

メソッドのドキュメント

[since 6.11] pickResult closestPointPick(vector3d origin, float radius, Model model)

このメソッドは、model の表面上で、origin に最も近く、かつ距離がradius 以内の点を検索します。model がnull の場合、radius 内の最も近いオブジェクトが検索されます。

そのようなオブジェクトが存在しない場合、null が返されます。

このメソッドは Qt 6.11 で導入されました。

vector3d processTouch(vector3d position, int pointId)

このメソッドは、position の付近にあるXrItem 、またはsourceItem texture を持つModelを検索し、position がサーフェス上の点に対応する場合、タッチポイントIDpointId を持つ仮想タッチイベントを送信します。

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

XrHandModelも参照してください 。

pickResult rayPick(vector3d origin, vector3d direction)

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

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

[since 6.11] pickResult rayPick(vector3d origin, vector3d direction, Model model)

このメソッドは、origin を起点とし、direction の方向にシーン内にレイを「発射」し、そのレイと指定されたmodel との交点に関する情報を返します。

このメソッドは Qt 6.11 で導入されました。

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

このメソッドは、origin を起点とし、direction の方向にシーン内にレイを照射し、シーン内のオブジェクトとの最も近い交点に関する情報のリストを返します。このリストは、方向ベクトルに沿った原点からの距離順にソートされており、最も近い交点が先頭に、最も遠い交点が末尾に表示されます。

例えば、シーン内の任意のオブジェクトの位置と前進ベクトルを引数としてこのメソッドを呼び出すことで、そのオブジェクトの正面にどのようなオブジェクトがあるかを確認できます。これにより、シーン内の任意の点からピッキングを行うことが可能になります。

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

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

object touchpointState(int pointId)

このメソッドは、IDがpointId のタッチポイントの状態を返します。状態は、プロパティ名と値の対応関係を示すマップとして表されます。

キー型説明
grabbedboolそのポイントはアイテムによってグラブされていますか?false の場合、他のすべての値はundefined となります。
targetXrItemタッチポイントを保持しているアイテム。XrItem が存在しない場合はnull となります。
pressedboolタッチポイントは押されているか?
cursorPospointタッチポイントの2D位置(target
touchDistancereal平面からタッチポイントまでの距離。pressed がtrue の場合、0 となります。
surfacePointvector3dシーン空間における接触点の座標。[6.11以降]
normalvector3dシーン空間におけるタッチポイントの法線ベクトル。[6.11以降]
uvPositionvector2dタッチポイントにおけるUV座標。[6.11以降]
modelModelタッチポイントを把持しているモデル。モデルが存在しない場合はnull 。[6.11以降]

© 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.