qgis / QGIS

QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)
https://qgis.org
GNU General Public License v2.0
10.09k stars 2.93k forks source link

3D view of point-cloud with 500m points causes freeze and crash #46608

Closed lgouzin closed 6 months ago

lgouzin commented 2 years ago

What is the bug or the crash?

Loading a 500m tile point cloud, fairly high-res, the 3D view loads and allow a few spins of the tile in 3D, the view then freeze and QGIS crashes shortly after.

Steps to reproduce the issue

  1. Drag and drop LAZ file to QGIS.
  2. Wait for point-cloud to be loaded/converted to EPT
  3. open new 3D map view
  4. Works find when fairly zoomed in
  5. Zoom out, spins the tile in 3D, with or without shadow/eye dome, 3D map view freezes and crash QGIS

Versions

QGIS version 3.22.2-Białowieża QGIS code revision 1601ec46d0 Qt version 5.15.2 Python version 3.9.5 GDAL/OGR version 3.4.0 PROJ version 8.2.0 EPSG Registry database version v10.038 (2021-10-21) GEOS version 3.10.0-CAPI-1.16.0 SQLite version 3.35.2 PDAL version 2.3.0 PostgreSQL client version 13.0 SpatiaLite version 5.0.1 QWT version 6.1.3 QScintilla2 version 2.11.5 OS version Windows 10 Version 2009

Active Python plugins icsm_ntv2_transformer 1.1.1 landxml2qgis 0.3.2 LAStools 1.4 nominatim 1.4.1 ntv2_transformations 0.20 OSMDownloader 1.0.3 plugin_reloader 0.8.2 QuickOSM 2.0.0 quick_map_services 0.19.26 S3_LAS_Geodownload_dock_version 0.5 db_manager 0.1.20 grassprovider 2.12.99 MetaSearch 0.3.5 processing 2.12.99 sagaprovider 2.12.99

Supported QGIS version

New profile

Additional context

User Feedback

Loading a 500m tile point cloud, fairly high-res, the 3D view loads and allow a few spins of the tile in 3D, the view then freeze and QGIS crashes shortly after.

Report Details

Crash ID: a6bb59f0a60ec0fc9d0f0f67d0e407fa8d02a47b

Stack Trace

Qt3DCore::QNode::setEnabled :
QgsPointCloudLayer3DRenderer::writeXml :
Qgs3DMapScene::updateScene :
Qgs3DMapScene::onCameraChanged :
QObject::qt_static_metacall :
QgsCameraController::updateCameraFromPose :
QgsCameraController::onPositionChangedTerrainNavigation :
QObject::qt_static_metacall :
Qt3DInput::QMouseHandler::positionChanged :
Qt3DInput::Input::BackendNode::syncFromFrontEnd :
Qt3DCore::QBackendNodePrivate::q_func :
Qt3DCore::QAspectManager::processFrame :
Qt3DCore::QAspectManager::exitSimulationLoop :
QObject::qt_static_metacall :
QUnifiedTimer::setSlowdownFactor :
QAbstractAnimation::setCurrentTime :
QUnifiedTimer::updateAnimationTimers :
QUnifiedTimer::updateAnimationTimers :
QAnimationDriver::advance :
QObject::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QEventDispatcherWin32Private::sendTimerEvent :
QEventDispatcherWin32::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QCoreApplicationPrivate::sendPostedEvents :
qt_plugin_query_metadata :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QCoreApplication::exec :
main :
BaseThreadInitThunk :
RtlUserThreadStart :
YLEXDXJMSHB :
YLEXDXJMSHB :

QGIS Info QGIS Version: 3.22.2-Bia?owie?a QGIS code revision: 1601ec46d0 Compiled against Qt: 5.15.2 Running against Qt: 5.15.2 Compiled against GDAL: 3.4.0 Running against GDAL: 3.4.0

System Info CPU Type: x86_64 Kernel Type: winnt Kernel Version: 10.0.19043

lgouzin commented 2 years ago

500m as in a 500meters*500meters tile, not 500 million points. The tile has 12 million points in it.

gioman commented 2 years ago

500m as in a 500meters*500meters til

@TofuSandwich can you attach/link a sample dataset that causes the crash for you?

lgouzin commented 2 years ago

here is a link to the laz file (68mo): https://drive.google.com/file/d/1FeWd6ZpeSreL348mfcQbMJ8jer5x38kV/view?usp=sharing

gioman commented 2 years ago

I was also able to replicate after having enlarged considerably the 3D window. Was ok until I kept it fairly small.

FeU-aKlos commented 2 years ago

It also crashes if you try to make a print layout with a 3D map of the point cloud (small 3D maps work)

FeU-aKlos commented 2 years ago

It also crashes if one zoom to often in and out into a (even fairly small) 3D map view

FeU-aKlos commented 2 years ago

tending the point cloud (shift + left mouse) leads to a frozen 3d map view

roya0045 commented 2 years ago

@gioman worth adding the crash tag, in the hopes it gets prioritized?

Beeeerock commented 2 years ago

Perhaps another example of the problem noted in this thread. Point cloud imported from a .LAS file (not .LAZ). Shows as RGB image as expected after loading. Creating the 3D view seems to be complete, or almost complete, before this crash.

User Feedback

"QGIS unexpectedly ended"

3.4 GB point cloud. Rendering for 3D view.

Report Details

Crash ID: fc9e3bbe2456a2431136a95cc877671793a66a34

Stack Trace

Qt3DCore::QNode::setEnabled :
QgsPointCloudLayer3DRenderer::writeXml :
Qgs3DMapScene::onFrameTriggered :
QObject::qt_static_metacall :
Qt3DLogic::QFrameAction::triggered :
Qt3DLogic::QFrameAction::onTriggered :
Qt3DCore::QBackendNodePrivate::q_func :
Qt3DCore::QAspectManager::processFrame :
Qt3DCore::QAspectManager::exitSimulationLoop :
QObject::qt_static_metacall :
QUnifiedTimer::setSlowdownFactor :
QAbstractAnimation::setCurrentTime :
QUnifiedTimer::updateAnimationTimers :
QUnifiedTimer::updateAnimationTimers :
QAnimationDriver::advance :
QObject::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QEventDispatcherWin32Private::sendTimerEvent :
QEventDispatcherWin32::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QCoreApplicationPrivate::sendPostedEvents :
qt_plugin_query_metadata :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QCoreApplication::exec :
main :
BaseThreadInitThunk :
RtlUserThreadStart :

QGIS Info QGIS Version: 3.22.2-Bia?owie?a QGIS code revision: 1601ec46d0 Compiled against Qt: 5.15.2 Running against Qt: 5.15.2 Compiled against GDAL: 3.4.0 Running against GDAL: 3.4.0

System Info CPU Type: x86_64 Kernel Type: winnt Kernel Version: 10.0.22000

NEDJIMAbelgacem commented 2 years ago

The crash is fixed in https://github.com/qgis/QGIS/pull/47096 , although the unresponsiveness of the 3D view remains because of the big number of nodes in the dataset and that triggers a reloading cycle.

roya0045 commented 2 years ago

The crash is fixed in #47096 , although the unresponsiveness of the 3D view remains because of the big number of nodes in the dataset and that triggers a reloading cycle.

So are you saying that a high number of nodes will cause constant reloading because they can't be kept in memory and need to be refreshed even without any interactions?

alexbruy commented 9 months ago

@lgouzin can you test with the latest master? Is this still an issue?

github-actions[bot] commented 7 months ago

The QGIS project highly values your report and would love to see it addressed. However, this issue has been left in feedback mode for the last 14 days and is being automatically marked as "stale". If you would like to continue with this issue, please provide any missing information or answer any open questions. If you could resolve the issue yourself meanwhile, please leave a note for future readers with the same problem and close the issue. In case you should have any uncertainty, please leave a comment and we will be happy to help you proceed with this issue. If there is no further activity on this issue, it will be closed in a week.

github-actions[bot] commented 6 months ago

While we hate to see this happen, this issue has been automatically closed because it has not had any activity in the last 42 days despite being marked as feedback. If this issue should be reconsidered, please follow the guidelines in the previous comment and reopen this issue. Or, if you have any further questions, there are also further support channels that can help you.