26 : m_openXRRuntimeInfo(&m_openXRManager)
33 m_inDestructor =
true;
43 return m_openXRManager.m_xrOrigin;
53 return m_openXRManager.m_vrViewport ? m_openXRManager.m_vrViewport->
environment() :
nullptr;
58 return m_openXRManager.m_vrViewport;
77 return &m_openXRRuntimeInfo;
85 if (!m_openXRManager.m_vrViewport)
88 auto oldEnvironment = m_openXRManager.m_vrViewport->
environment();
100 handleClearColorChanged();
120 if (!m_openXRManager.
isValid())
123 return m_openXRManager.supportsPassthrough();
128 if (!m_openXRManager.
isValid()) {
129 qWarning(
"Attempted to set passthrough mode without a valid XR manager");
134 if (
enable && !m_openXRManager.supportsPassthrough()) {
135 qWarning(
"Enabling Passthrough is not supported.");
190 return m_quitOnSessionEnd;
195 if (m_quitOnSessionEnd ==
enable)
198 m_quitOnSessionEnd =
enable;
208 return m_openXRManager.m_vrViewport ? m_openXRManager.m_vrViewport->
renderStats() :
nullptr;
211void QQuick3DXrView::updateViewportGeometry()
213 auto contentItem = m_openXRManager.m_quickWindow->
contentItem();
214 auto viewport = m_openXRManager.m_vrViewport;
215 if (
viewport->height() != contentItem->height())
217 if (
viewport->width() != contentItem->width())
218 viewport->setWidth(contentItem->width());
219 if (
viewport->x() != contentItem->x())
221 if (
viewport->y() != contentItem->y())
225void QQuick3DXrView::handleSessionEnded()
228 if (m_quitOnSessionEnd)
232void QQuick3DXrView::handleClearColorChanged()
238 m_openXRManager.m_quickWindow->setColor(env->clearColor());
244void QQuick3DXrView::handleAAChanged()
249 switch (env->antialiasingQuality()) {
264bool QQuick3DXrView::init()
266 if (m_isInitialized) {
272 qDebug() <<
"Waiting for XR platform to be initialized...";
287 QSSG_CHECK_X(m_openXRManager.m_vrViewport ==
nullptr,
"View3D already created!");
290 auto contentItem = m_openXRManager.m_quickWindow->
contentItem();
292 m_openXRManager.m_vrViewport =
viewport;
317 m_openXRManager.update();
319 m_isInitialized =
true;
321 return m_isInitialized;
337 return m_openXRManager.m_vrViewport->rayPick(origin,
direction);
356 return m_openXRManager.m_vrViewport->rayPickAll(origin,
direction);
376 QHash<int, QQuick3DXrItem::TouchState>
points;
403 state.pointId = pointId;
405 auto *prevTarget =
state.target;
406 bool grabbed =
false;
408 grabbed = prevTarget->handleVirtualTouch(
this,
pos, &
state, &
offset);
410 for (
auto *
item : std::as_const(m_xrItems)) {
413 if (
item != prevTarget)
455#define Q_TOUCHPOINT_STATE(prop) { QStringLiteral(#prop), QVariant::fromValue(it->prop) }
470#undef Q_TOUCHPOINT_STATE
495 if (!m_openXRManager.
isValid()) {
496 qWarning(
"Attempted to check depth submission mode without a valid XR manager");
512 if (!m_openXRManager.
isValid())
555 if (!m_openXRManager.
isValid())
563 m_xrItems.
append(newXrItem);
626 if (!m_openXRManager.
isValid()) {
627 qWarning(
"Attempted to set depth submission mode without a valid XR manager");
641 if (!m_openXRManager.
isValid()) {
642 qWarning(
"Attempted to set multiview rendering mode without having m_openXRManager initialized");
static void quit()
\threadsafe
const_iterator constFind(const Key &key) const noexcept
friend class const_iterator
bool isEmpty() const noexcept
qsizetype removeAll(const AT &t)
void append(parameter_type t)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
\inmodule QtCore\reentrant
void antialiasingModeChanged()
void antialiasingQualityChanged()
void backgroundModeChanged()
void setImportScene(QQuick3DNode *inScene)
void setEnvironment(QQuick3DSceneEnvironment *environment)
QQuick3DRenderStats * renderStats
QQuick3DSceneEnvironment * environment
void setDepthSubmissionEnabled(bool enable)
bool isPassthroughEnabled() const
void setFixedFoveationLevel(QtQuick3DXr::FoveationLevel level)
bool isMultiViewRenderingSupported() const
QString errorString() const
QtQuick3DXr::FoveationLevel getFixedFoveationLevel() const
bool isDepthSubmissionEnabled() const
void setMultiviewRenderingEnabled(bool enable)
void referenceSpaceChanged()
void setSamples(int samples)
void setPassthroughEnabled(bool enabled)
bool isMultiViewRenderingEnabled() const
void setReferenceSpace(QtQuick3DXr::ReferenceSpace newReferenceSpace)
QtQuick3DXr::ReferenceSpace getReferenceSpace() const
void setFixedFoveation(FoveationLevel level)
void registerXrItem(QQuick3DXrItem *newXrItem)
void setQuitOnSessionEnd(bool enable)
bool multiviewRenderingEnabled
FoveationLevel fixedFoveation
Q_INVOKABLE void setTouchpoint(QQuickItem *target, const QPointF &position, int pointId, bool active)
\qmlmethod XrView::setTouchpoint(Item target, point position, int pointId, bool pressed)
void setEnvironment(QQuick3DSceneEnvironment *environment)
QQuick3DRenderStats * renderStats
void setDepthSubmissionEnabled(bool enable)
\qmlproperty bool QtQuick3D.Xr::XrView::depthSubmissionEnabled
Q_INVOKABLE QVariantMap touchpointState(int pointId) const
bool depthSubmissionEnabled
void setPassthroughEnabled(bool enable)
Q_INVOKABLE QVector3D processTouch(const QVector3D &pos, int pointId)
\qmlmethod vector3d XrView::processTouch(vector3d position, int pointId)
void setReferenceSpace(ReferenceSpace newReferenceSpace)
bool isQuitOnSessionEndEnabled() const
\qmlproperty bool QtQuick3D.Xr::XrView::isQuitOnSessionEndEnabled
bool passthroughSupported
void setMultiviewRenderingEnabled(bool enable)
QQuick3DSceneEnvironment * environment
void passthroughEnabledChanged()
ReferenceSpace referenceSpace
Q_INVOKABLE QQuick3DPickResult rayPick(const QVector3D &origin, const QVector3D &direction) const
\qmlmethod pickResult XrView::rayPick(vector3d origin, vector3d direction)
void environmentChanged(QQuick3DSceneEnvironment *environment)
void quitOnSessionEndChanged()
void unregisterXrItem(QQuick3DXrItem *xrItem)
void referenceSpaceChanged()
QQuick3DXrView()
\qmltype XrView \inherits Node \inqmlmodule QtQuick3D.Xr
void multiviewRenderingEnabledChanged()
bool isMultiViewRenderingSupported() const
\qmlproperty bool QtQuick3D.Xr::XrView::multiViewRenderingSupported
QQuick3DXrOrigin * xrOrigin
void depthSubmissionEnabledChanged()
Q_INVOKABLE QList< QQuick3DPickResult > rayPickAll(const QVector3D &origin, const QVector3D &direction) const
\qmlmethod List<pickResult> XrView::rayPickAll(vector3d origin, vector3d direction)
void fixedFoveationChanged()
QOpenXRRuntimeInfo * runtimeInfo
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
void setParentItem(QQuickItem *parent)
QQuickItem * contentItem
\qmlattachedproperty Item Window::contentItem
\macro QT_RESTRICTED_CAST_FROM_ASCII
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
The QVector3D class represents a vector or vertex in 3D space.
QSet< QString >::iterator it
Combined button and popup list for selecting options.
GLenum GLuint GLint level
GLenum GLuint GLintptr offset
#define Q_TOUCHPOINT_STATE(prop)
\qmlmethod object XrView::touchpointState(int pointId)
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define QSSG_CHECK_X(cond, msg)
#define qPrintable(string)
#define QStringLiteral(str)
myObject disconnect()
[26]
view viewport() -> scroll(dx, dy, deviceRect)
QHash< int, QQuick3DXrItem::TouchState > points