diff options
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp')
-rw-r--r-- | share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp index 150b8e9ab1..84e28ac4ec 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp @@ -149,7 +149,8 @@ QVector4D GeneralHelper::focusObjectToCamera(QQuick3DCamera *camera, float defau QVector3D lookAt = targetObject ? targetObject->scenePosition() : QVector3D(); // Get object bounds - qreal maxExtent = 200.; + const qreal defaultExtent = 200.; + qreal maxExtent = defaultExtent; if (auto modelNode = qobject_cast<QQuick3DModel *>(targetObject)) { auto targetPriv = QQuick3DObjectPrivate::get(targetObject); if (auto renderModel = static_cast<QSSGRenderModel *>(targetPriv->spatialNode)) { @@ -173,6 +174,9 @@ QVector4D GeneralHelper::focusObjectToCamera(QQuick3DCamera *camera, float defau maxExtent = qSqrt(qreal(e.x() * e.x() + e.y() * e.y() + e.z() * e.z())); maxExtent *= maxScale; + if (maxExtent < 0.0001) + maxExtent = defaultExtent; + // Adjust lookAt to look directly at the center of the object bounds lookAt = renderModel->globalTransform.map(center); lookAt.setZ(-lookAt.z()); // Render node transforms have inverted z |