XrView QML Type
Richtet die Ansicht für eine Xr-Anwendung ein. Mehr...
Import Statement: | import QtQuick3D.Xr |
Since: | Qt 6.8 |
Inherits: | |
Status: | Technical Preview |
Eigenschaften
- depthSubmissionEnabled : bool
- environment : SceneEnvironment
- fixedFoveation : enumeration
- isQuitOnSessionEndEnabled : bool
- multiViewRenderingEnabled : bool
- multiViewRenderingSupported : bool
- passthroughEnabled : bool
- passthroughSupported : bool
- referenceSpace : enumeration
- renderStats : RenderStats
- runtimeInfo : QQuick3DXrRuntimeInfo
- xrOrigin : XrOrigin
Signale
- initializeFailed(const QString &errorString)
- sessionEnded()
Methoden
- 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)
Detaillierte Beschreibung
Eine XrView richtet die Ansicht für eine XR-Anwendung ein. Das folgende Snippet stammt aus dem Qt Quick 3D Xr Simple Example und zeigt, wie der Typ verwendet wird.
// 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 }
Eigenschaft Dokumentation
depthSubmissionEnabled : bool |
Steuert, ob die Übermittlung des Tiefenpuffers an den XR-Compositor aktiviert ist.
Standardmäßig wird der Tiefenpuffer, der von der 3D-Szene in XrView verwendet wird, nicht an den XR-Compositor übermittelt. Auf einigen Plattformen ist die Übermittlung der Tiefe jedoch implizit und kann nicht deaktiviert oder von der Anwendung gesteuert werden. Ein Beispiel hierfür ist VisionOS. Das Ändern dieser Eigenschaft hat auf diesen Plattformen keine Auswirkungen. Anderswo, insbesondere bei OpenXR, hängt die Unterstützung von der zur Laufzeit verwendeten OpenXR-Implementierung ab.
Es ist immer sicher, depthSubmissionEnabled auf true
zu setzen. Es hat nur dann keinen Effekt, wenn es vom zugrunde liegenden Stack nicht unterstützt wird. Um sicher zu gehen, können Sie die Debug-Ausgabe untersuchen, um zu sehen, ob depth submission verwendet wird. Die Übermittlung des Tiefenpuffers kann Reprojektionen verbessern, die der XR-Compositor möglicherweise durchführt. Reprojektionen können beispielsweise auftreten, wenn das System die angestrebte Bildrate nicht einhalten kann und daher auf die Vorhersage von Bildinhalten zurückgreifen muss, um die Wahrnehmung der Szene durch den Benutzer zu verbessern und zu stabilisieren und mögliche Bewegungskrankheit zu verringern. Die Anwendung und Qt haben jedoch keine Kontrolle über die Datennutzung. Es könnte auch passieren, dass die Übermittlung von Tiefendaten keine praktischen Auswirkungen hat und von der zugrunde liegenden XR-Laufzeit und dem Compositor ignoriert wird.
In der Praxis bedeutet die Übermittlung des Tiefenpuffers das Rendern in eine von der XR-Laufzeit bereitgestellte Tiefentextur anstelle des von Qt erstellten und verwalteten Textur-/Render-Zwischenpuffers. Das Rendern in eine Tiefentextur hat bestimmte Konsequenzen auf unterer Ebene, die sich auf die Leistung auswirken können:
Bei Verwendung von multisample antialiasing (MSAA) bedeutet die Aktivierung der Tiefenübermittlung das Rendern in eine Multisample-Tiefenstruktur und die Auflösung der Samples in die von der XR-Laufzeit bereitgestellte Nicht-Multisample-Tiefenstruktur. Ohne Tiefenübermittlung wäre der Auflösungsschritt nicht notwendig. Darüber hinaus unterstützen einige 3D-APIs nicht die Auflösung von Multisample-Tiefenschablonendaten (siehe QRhi::ResolveDepthStencil für Details). Ohne diese Unterstützung werden Versuche, die Tiefenübermittlung in Kombination mit MSAA zu aktivieren, gnadenlos ignoriert.
Selbst wenn MSAA nicht verwendet wird, löst die Aktivierung der Tiefenübermittlung das Schreiben von Tiefendaten mit 3D-APIs aus, die die Kontrolle darüber haben. Die Speicheroperation für Tiefen-/Schablonendaten wird normalerweise von Qt als unnötig angezeigt, was sich auf gekachelten GPU-Architekturen positiv auf die Leistung auswirken kann. Bei der Übermittlung von Tiefendaten wird dies nicht gemacht, da Tiefendaten aus der Perspektive von Qt immer ausgeschrieben werden müssen.
Hinweis: Wir empfehlen Entwicklern, ihre Anwendungen mit aktivierter Tiefenübermittlung zu testen, die Vor- und Nachteile zu bewerten und auf der Grundlage ihrer Tests eine bewusste Entscheidung zu treffen, ob sie diese Funktion aktivieren möchten oder nicht.
environment : SceneEnvironment |
Hält
Hält die SceneEnvironment für die XR-Ansicht.
fixedFoveation : enumeration |
Steuert den Grad des festen foveated Rendering für die XrView.
Foveated Rendering reduziert die GPU-Belastung, indem die Bildqualität (Auflösung) in Bereichen reduziert wird, in denen der Unterschied für das Auge weniger wahrnehmbar ist. Bei festem foveated Rendering sind die Bereiche mit reduzierter visueller Wiedergabetreue fixiert und ändern sich nicht. Auf einigen Plattformen gibt es kein Konzept für Fixed Foveated Rendering und keine Kontrolle darüber. Beispielsweise führen VisionOS-basierte Geräte eine dynamische, augengesteuerte Foveation durch; daher wird der Wert dieser Eigenschaft in der Praxis ignoriert. Andere Geräte, wie z. B. das Meta Quest 3, unterstützen nur eine feste Foveation, so dass diese Eigenschaft relevant ist.
Der Wert kann einer der folgenden sein:
Konstant | Beschreibung |
---|---|
XrView.NoFoveation | 0, keine Foveation. |
XrView.LowFoveation | 1, geringe Foveation. |
XrView.MediumFoveation | 2, mittlere Foveation. |
XrView.HighFoveation | 3, hohe Foveation. |
Wo unterstützt, ist der Standardwert HighFoveation
. Daher sollte eine Änderung dieses Wertes in Anwendungen in der Praxis nur selten erforderlich sein.
isQuitOnSessionEndEnabled : bool |
Gibt an, ob die Anwendung beendet werden soll, wenn die XR-Sitzung endet.
multiViewRenderingEnabled : bool |
Dies ist eine schreibgeschützte Eigenschaft, die angibt, ob Multiview-Rendering für die XR-Ansicht aktiviert ist.
Diese Eigenschaft gibt an, ob das Multiview-Rendering zur Laufzeit tatsächlich verwendet wird. Wenn es nicht unterstützt wird, wechselt der Wert zurück zu false
.
Es wird empfohlen, das Multiview-Rendering zu aktivieren. Es kann die Leistung verbessern und den CPU- und GPU-Stromverbrauch reduzieren. Die Standardeinstellung ist deaktiviert, um maximale Kompatibilität zu gewährleisten. Entwickler sollten überprüfen, ob ihre Anwendung wie erwartet gerendert wird, wenn multiViewRenderingEnabled auf true
gesetzt ist, und die Einstellung danach beibehalten.
Hinweis: Bestimmte Qt Quick und Quick 3D-Funktionen, die Shader-Code enthalten, der von der Anwendung bereitgestellt wird, müssen möglicherweise geändert werden, um Multiview-kompatibel zu sein. Beispiele hierfür sind benutzerdefinierte 2D- und 3D-Materialien und Nachbearbeitungseffekte. In der Dokumentation Multiview Rendering finden Sie weitere Informationen dazu und wie Sie das Multiview-Rendering deaktivieren können.
Siehe auch multiViewRenderingSupported und Multiview-Rendering.
multiViewRenderingSupported : bool |
Diese schreibgeschützte Eigenschaft meldet die Verfügbarkeit von Multiview Rendering.
Siehe auch multiViewRenderingEnabled.
passthroughEnabled : bool |
Hält
Gibt an, ob Passthrough für die XR-Ansicht aktiviert ist.
passthroughSupported : bool |
Zeigt an.
Zeigt an, ob Passthrough für die XR-Ansicht unterstützt wird.
referenceSpace : enumeration |
Ruft den Referenzbereich für die XR-Ansicht ab oder legt ihn fest.
Er kann einer der folgenden sein:
Konstante | Wert |
---|---|
XrView.ReferenceSpaceUnknown | |
XrView.ReferenceSpaceLocal | |
XrView.ReferenceSpaceStage | |
XrView.ReferenceSpaceLocalFloor |
renderStats : RenderStats |
Enthält
Enthält Rendering-Statistiken für die XR-Ansicht.
runtimeInfo : QQuick3DXrRuntimeInfo |
Liefert
Liefert Informationen über die XR-Laufzeit für die XR-Ansicht.
xrOrigin : XrOrigin |
Enthält den aktiven XR-Ursprung.
Der XR-Ursprung ist der Punkt in der Szene, der als Ursprung des XR-Koordinatensystems betrachtet wird. Der XR-Ursprung wird für die Positionierung von verfolgten Objekten wie der Kamera und Controllern in der Szene verwendet. Eine Anwendung kann mehrere XrOrigins haben, aber nur einer kann gleichzeitig aktiv sein.
Hinweis: Diese Eigenschaft muss gesetzt werden, damit die Szene in XR gerendert werden kann.
Siehe auch XrOrigin.
Signal Dokumentation
initializeFailed(const QString &errorString) |
Wird ausgegeben, wenn die Initialisierung fehlschlägt und es eine neue errorString gibt, die den Fehler beschreibt.
Hinweis: Der entsprechende Handler ist onInitializeFailed
.
sessionEnded() |
Wird ausgesendet, wenn die Sitzung endet.
Hinweis: Der entsprechende Handler ist onSessionEnded
.
Dokumentation der Methode
Diese Methode sucht nach einem XrItem in der Nähe von position und sendet ein virtuelles Berührungsereignis mit der Berührungspunkt-ID pointId, wenn position einem Punkt auf der Oberfläche zugeordnet ist.
Der Rückgabewert ist der Offset zwischen position und dem berührten Punkt auf der Oberfläche. Dies kann verwendet werden, um zu verhindern, dass ein Handmodell durch einen XrItem fährt.
Siehe auch XrHandModel.
pickResult rayPick(vector3d origin, vector3d direction) |
Diese Methode schießt einen Strahl in die Szene, beginnend bei origin und in direction und gibt Informationen über den nächstgelegenen Schnittpunkt mit einem Objekt in der Szene zurück.
Übergeben Sie zum Beispiel die Position und den Vorwärtsvektor eines beliebigen Objekts in der Szene, um zu sehen, welches Objekt sich vor einem Objekt befindet. Damit ist es möglich, von jedem beliebigen Punkt in der Szene aus zu picken.
List<pickResult> rayPickAll(vector3d origin, vector3d direction) |
Diese Methode schießt einen Strahl in die Szene, beginnend bei origin und direction, und gibt eine Liste mit Informationen über die nächstgelegenen Schnittpunkte mit Objekten in der Szene zurück. Die Liste ist nach der Entfernung vom Ursprung entlang des Richtungsvektors vorsortiert, wobei die nächstgelegenen Schnittpunkte zuerst und die am weitesten entfernten zuletzt angezeigt werden.
Dies kann zum Beispiel mit der Position und dem Vorwärtsvektor eines beliebigen Objekts in einer Szene aufgerufen werden, um zu sehen, welche Objekte sich vor einem Objekt befinden. Damit ist es möglich, von jedem beliebigen Punkt in der Szene aus zu picken.
Sendet ein synthetisches Berührungsereignis an target und verschiebt den Berührungspunkt mit der ID pointId nach position, wobei pressed bestimmt, ob der Punkt gedrückt wird. Sendet auch das entsprechende Berührungsfreigabe-Ereignis, wenn pointId zuvor auf einem anderen Element aktiv war.
object touchpointState(int pointId) |
Diese Methode gibt den Zustand des Berührungspunkts mit der ID pointId zurück. Der Zustand wird durch eine Zuordnung von Eigenschaftsnamen zu Werten dargestellt:
Schlüssel | Typ | Beschreibung |
---|---|---|
grabbed | bool | Wurde der Punkt von einem Objekt gegriffen? Wenn false , sind alle anderen Werte undefined . |
target | XrItem | Das Objekt, das den Berührungspunkt ergreift. |
pressed | bool | Wurde der Berührungspunkt gedrückt? |
cursorPos | point | Die 2D-Position des Berührungspunkts innerhalb von target |
touchDistance | real | Der Abstand zwischen der Ebene und dem Berührungspunkt. Sie ist 0 , wenn pressed true ist. |
© 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.