diff options
author | Mike Krus <mike.krus@kdab.com> | 2016-08-12 15:14:12 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-08-13 15:38:13 +0000 |
commit | c5cf2134956eeb1c7466b502e408192b095fe914 (patch) | |
tree | 044c41f2985e45836bcf0f72c35acdda6af122eb /src/render/frontend/qpickingsettings.cpp | |
parent | 1dc8378aeddc337bfc770f9644b6e2f6343ce7fa (diff) |
Enable picking of back facing triangles
Added faceOrientationPickingMode to picking settings, and propagate to
ray picking code. Enum can be set to front (default), back or both.
Removed use of TriangleBoundingVolume and copied intersection
code to avoid changing too much of a call chain that should
IMHO be refactored out.
Change-Id: I2834f3b1a4147f23e0f52453c8d50c146bc29e10
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qpickingsettings.cpp')
-rw-r--r-- | src/render/frontend/qpickingsettings.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/render/frontend/qpickingsettings.cpp b/src/render/frontend/qpickingsettings.cpp index 0e152f5f1..2805ec5a8 100644 --- a/src/render/frontend/qpickingsettings.cpp +++ b/src/render/frontend/qpickingsettings.cpp @@ -57,6 +57,7 @@ QPickingSettingsPrivate::QPickingSettingsPrivate() : Qt3DCore::QNodePrivate() , m_pickMethod(QPickingSettings::BoundingVolumePicking) , m_pickResultMode(QPickingSettings::NearestPick) + , m_faceOrientationPickingMode(QPickingSettings::FrontFace) { } @@ -100,6 +101,15 @@ QPickingSettings::PickResultMode QPickingSettings::pickResultMode() const } /*! + * \return the back facing picking flag + */ +QPickingSettings::FaceOrientationPickingMode QPickingSettings::faceOrientationPickingMode() const +{ + Q_D(const QPickingSettings); + return d->m_faceOrientationPickingMode; +} + +/*! * \enum Qt3DRender::QPickingSettings::PickMethod * * Specifies which parameters of Qt3DRender::QPickingSettings are used. @@ -145,6 +155,20 @@ void QPickingSettings::setPickResultMode(QPickingSettings::PickResultMode pickRe emit pickResultModeChanged(pickResultMode); } +/*! + * Sets whether back facing faces are picked or not + * \param faceOrientationPickingMode + */ +void QPickingSettings::setFaceOrientationPickingMode(QPickingSettings::FaceOrientationPickingMode faceOrientationPickingMode) +{ + Q_D(QPickingSettings); + if (d->m_faceOrientationPickingMode == faceOrientationPickingMode) + return; + + d->m_faceOrientationPickingMode = faceOrientationPickingMode; + emit faceOrientationPickingModeChanged(faceOrientationPickingMode); +} + } // namespace Qt3Drender QT_END_NAMESPACE |