isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
10.84k stars 2.24k forks source link

Open3D quits abnormally when visualising a number of cubes #6833

Open FishWoWater opened 3 weeks ago

FishWoWater commented 3 weeks ago

Checklist

Describe the issue

The visualiser API works normally for less than 4k objects, but quits without any error log for 5k+ objects

I have searched around but found no information about this image

btw, the latest development wheel seems 404: https://[storage.googleapis.com/open3d-releases/python-wheels/open3d-0.18.0+5c982c7-cp310-cp310-win_amd64.whl](https://storage.googleapis.com/open3d-releases/python-wheels/open3d-0.18.0+5c982c7-cp310-cp310-win_amd64.whl)

Steps to reproduce the bug

import open3d as o3d 

bbox = o3d.geometry.TriangleMesh.create_box()

# works, pop up a visualising window
o3d.visualization.draw([bbox] * 4000)

# quit without any error report 
o3d.visualization.draw([bbox] * 5000)

Error message

No response

Expected behavior

I should be able to visualise that many objects, or at least open3d should log some errors

Open3D, Python and System information

- Operating system:  Windows 11 64-bit
- Python version: Python 3.10 / output from `import sys; print(sys.version)`
- Open3D version: 0.18.0
- System architecture: x86_64
- Is this a remote workstation?: no
- How did you install Open3D?: pip

Additional information

No response

chrhoehl commented 3 weeks ago

Same with Open3d 0.18.0 installed through pip on python (Windows 11, 64bit)

On 3.10.11 I also tried with Open3d 0.17.0 / 0.16.0, which produces the same behavior.

Other operations here fail, too:

Alternative way to reproduce (on draw-operation):

python -c "import open3d as o3d; \
           mesh = o3d.geometry.TriangleMesh.create_sphere(); \
           mesh.compute_vertex_normals(); \
           o3d.visualization.draw(mesh, raw_mode=True)"

Replacing the draw-operation witho3d.visualization.draw_geometries([mesh], window_name='Mesh Visualization', width=800, height=600) produces a window that visualizes the mesh without memory corruption