Open3D v0.19 is out with new features and more GPU support!

Happy new year to all! The Open3D team and many amazing community members bring to you the latest and best Open3D with many new features and bug fixes. Here are the highlights of this release:

  • Support for Python 3.12 and Numpy 2.
  • Experimental cross-platform GPU support through sycl. Use your integrated GPU to accelerate Open3D! Try out the preview Python 3.10 sycl wheel on Ubuntu 22.04+. For more details, see the documentation.
  • The preview wheel also features GPU accelerated raycasting with Embree (Intel GPUs) for fast geometry computation. docs. Contributed by @lumurillo
  • 3D geometry metrics: Chamfer distance, Hausdorff distance and F-score. TriangleMesh docs and PointCloud docs.
    image
  • New FlyingEdges algorithm for extracting an isosurface (triangle mesh) from a dense 3D volume. Contributed by @intelshashi in #6648. docs.
  • Add albedo texture to a mesh from calibrated images. docs and example.

Screenshot 2024-12-31 at 10 33 12 PM

  • macOS ARM64+x86_64 universal Python wheel and C++ binary. Contributed by @sitic in #6695 .
  • Sampling from mesh now includes color. Contributed by @nikste in #6842.
  • CUDA 12 support, and support for building with CUDA dynamic libraries. Contributed by @davconde in #6815 .
  • Support for PyTorch 2.2 and TensorFlow 2.16

⚠ Warning: ⚠ Due to incompatibilities in the cxx11_abi on Linux between PyTorch and TensorFlow, official Python wheels on Linux only support PyTorch, not TensorFlow. [See https://github.com//pull/6288] for details. If you'd like to use Open3D with TensorFlow on Linux, you can build Open3D wheel from source in docker with support for Tensorflow (but not PyTorch) as:

cd docker
# Build open3d and open3d-cpu wheels for Python 3.10 with Tensorflow support
export BUILD_PYTORCH_OPS=OFF BUILD_TENSORFLOW_OPS=ON
./docker_build.sh cuda_wheel_py310
  • Different color pooling modes for creating VoxelGrid from PointCloud. Contributed by @rxba in #6937
    image
  • File IO now works with Python pathlib.Path. Contributed by @sitic in #6619
  • Improved Python documentation, type checking and auto-complete support with mypy and VS Code. Many PRs (#6869, #6896, #6940, #7095, #7096, #7097, #7103, #7105) contributed by tireless @timohl !
  • Improved camera visualization
    image
  • Add mouse callback to VisualizerWithKeyCallback Contributed by @organic-nailer in @6760.

Known Issues

  • macOS viewer does not work with file associations, does not open a blank window on opening without a file. This is a side effect of the GLFW update (PR #6587) . Please continue using v0.18 macOS viewer.
  • ARM64 Linux builds are not available due to a runtime dynamic linker error: "cannot allocate memory in static TLS block". e.g. see here.
  • [Breaking change] Changed lambda to lambda_penalty in orient_normals_consistent_tangent_plane. (#7096)
  • [Breaking change] Fix torch furthest_point_sampling argument typo (#7025)
  • [Breaking change] If an image read fails, any old image data held in the Image object is cleared to prevent accidental use.
  • BUILD_HEADLESS_RENDERING option (OSMesa) gives a build error in Ubuntu 24.04.

Acknowledgment

We would like to thank all of our community contributors for their true labor of love for this release!
Also thanks to the many others who helped the Open3D community by reporting as well as resolving issues.

Start your new year with Open3D v0.18!

Happy new year to all! The Open3D team and many amazing community members bring to you the latest and best Open3D with many new features and bug fixes. Here are the highlights of this release:

  • Support for Python 3.11. (Python 3.7 is no longer officially supported.)
  • Support for PyTorch 2.0 and TensorFlow 2.14!

⚠️ Warning: ⚠️ Due to incompatibilities in the cxx11_abi on Linux between PyTorch and TensorFlow, official Python wheels on Linux only support PyTorch, not TensorFlow. [See #6288] for details. If you'd like to use Open3D with TensorFlow on Linux, you can build Open3D wheel from source in docker with support for Tensorflow (but not PyTorch) as:

cd docker
# Build open3d and open3d-cpu wheels for Python 3.10 with Tensorflow support
export BUILD_PYTORCH_OPS=OFF BUILD_TENSORFLOW_OPS=ON
./docker_build.sh cuda_wheel_py310
  • New Doppler ICP registration for FMCW Lidars (contributed by @heethesh)

    Comparison of tunnel reconstructions using point-to-plane ICP (left) and Doppler ICP (right) with measurements collected by an FMCW LiDAR (Image from original Doppler-ICP repo)
  • Adding in memory support for xyz files (#5866) (contributed by @samypr100)
  • Modern and more user friendly furo theme for Open3D documentation (contributed by @saurabheights)
  • The master branch is now renamed to main

Here is the full set of updates:

Visualization and GUI

  • [New] Display RGBD frames as a point cloud video (#6342) (contributed by @ssheorey)
  • [New] Allow setting view status from json string (#6241) (contributed by @yxlao)
  • [Update] Add env var to disable automatic WebVisualizer use in Jupyter environment (#6541) (contributed by @gutnar)
  • [Update] Expose Near Clip and Far Clip parameters to the Python Bindings (#6520) (contributed by @zalo)
  • [Update] Update jupyter web_visualizer for ipywidgets 8 (#6239) (contributed by @ssheorey)
  • [Fix] Fix the triggering in PickPointsInteractor when there are linesets present (#6499) (contributed by @EwingKang)
  • [Fix] fixed ProgressBar scrolling behaviour (#6175) (contributed by @cansik)
  • [Fix] removed was-open check for combobox (#6178) (contributed by @cansik)
  • [Fix] Fix the pybind reference bug of get_view_control() (#6116) (contributed by @eamonn-zh)
  • [Fix] Add new Mitsuba Python example + update CPU rendering docs (#5991) (contributed by @errissa)
  • [Fix] Enable picking points from TriangleMeshModels in O3D Visualizer (#5978) (contributed by @errissa)

Geometry

  • [New] Add GetSurfaceArea() for t::TriangleMesh (#6248) (contributed by @shanagr)
  • [New] Implement open3d::t::geometry::TriangleMesh::SelectByIndex (#6415) (contributed by @nsaiapova)
  • [New] add add_voxel and remove_voxel in pybind for VoxelGrid::AddVoxel, VoxelGrid::RemoveVoxel (#6023) (contributed by @ohkwon718)
  • [New] Voxel Downsample for Tensor interface (#6249) (contributed by @theNded)
  • [Update] List intersections (#6442) (contributed by @dmitrishastin)
  • [Update] Added optional invert parameter in Pointcloud cropping (similar to tensor pointcloud) (#6377) (contributed by @wakkoyankee)
  • [Update] ✨ Support multi-threading in the RayCastingScene function to commit scene (#6051) (contributed by @sebastienmascha)
  • [Update] Save triangle material IDs and uvs during TriangleMesh::SelectByIndex. (#6099) (contributed by @hanseuljun
  • [Update] Update nanoflann to version 1.5.0 (#6216) (contributed by @roehling)
  • [Fix] Bugfixes and docs improvement of AABB tensor class (#6486) (contributed by @saurabheights)
  • [Fix] Fix seg fault in t::geometry::TriangleMesh::SelectByIndex for negative index (#6489) (contributed by @nsaiapova)
  • [Fix] Correct bound check for axis aligned bounding box and use same formatting for printing cuda or cpu tensor (#6444) (contributed by @saurabheights)
  • [Fix] Fix for Issue #5924: (#5938) (contributed by @dbs4261)
  • [Fix] Throw error on non-contiguous Python buffer provided to Image ctor. (#6406) (contributed by @ssheorey)
  • [Fix] Normal orientation issues in complex geometries (#6198) (contributed by @eugeniovaretti)
  • [Fix] Fix incomplete VoxelGrid creation from triangles intersecting multiple voxels (#6325) (contributed by @sharon-br)
  • [Fix] SimplifyQuadricDecimation fixes (#6163) (contributed by @bjudeworley)
  • [Fix] fix segment plane non deterministic sampler issue and add unit test (#6308) (contributed by @yuecideng)
  • [Fix] Fix and improve ISS keypoint (#6079) (contributed by @DNKpp)
  • [Fix] Updated typo in pointcloud.cpp for tensor (#6228) (contributed by @bkhanal-11)
  • [Fix] fix oriented boundingbox computation (#6069) (contributed by @ruaqy)

Pipelines

  • [New] Add Doppler ICP in tensor registration pipeline (#5237) (contributed by @heethesh)
  • [New] Feaure matching API (#5964) (contributed by @theNded)
  • [Fix] Fix unused variable error when OpenMP is disabled (#6529) (contributed by @sitic)
  • [Fix] Fix IntegrateRGBD example compilation (#6453) (contributed by @sitic)
  • [Fix] Fixes #6291 and #6236 (#6305) (contributed by @theNded)
  • [Fix] improve 6120 (OpenCV pose estimation bug fix) (#6306) (contributed by @theNded)
  • [Fix] Fix tensor reconstruction example (#6207) (contributed by @saurabheights)
  • [Fix] Fix typo in reconstruction cpp app (#6214) (contributed by @yuecideng)

Open3D-ML

image

image

I/O

  • [New] Adding in memory support for xyz files (#5866) (contributed by @samypr100)
  • [New] Write directly to GLB from TGeometries (#6404) (contributed by @errissa)
  • [Update] Bump certifi lib from 2022.12.7 to 2023.7.22 (#6282) (contributed by dependabot[bot])
  • [Update] support msgpack 6.0 (#6269) (contributed by @cielartisan)
  • [Fix] Add IO for NPZ files for Tensor-based TriangleMeshes (#6019) (contributed by @errissa)

Core

  • [Update] Use standard filesystem instead of experimental for Clang on macOS (#6320) (contributed by @errissa)
  • [Update] Output OSError details to make import error more useful (#5997) (contributed by @errissa)
  • [Fix] Check for support of CUDA Memory Pools at runtime (#4679) (#6440) (contributed by @ao2)
  • [Fix] Fix python UnicodeDecodeError on windows (#6277) (contributed by @MisakaQwQ)
  • [Fix] Fix two crash bugs on Apple Silicon (#6008) (contributed by @errissa)

Build System

  • [Update] master -> main rename for branches (#6530) (contributed by @ssheorey)
  • [Update] Remove extra documentation build for python examples (#6487) (contributed by @saurabheights)
  • [Fix] Google Bucket hold and docs building fix (#6460) (contributed by @ssheorey)
  • [Update] Add unicode to check style (#6443) (contributed by @dmitrishastin)
  • [New] Add support for python3.11 (#6288) (contributed by @OlivierLDff Olivier Le Doeuff and @ssheorey)
  • [New] Debian Open3D package in CI (#6044) (contributed by @ssheorey)
  • [Fix] Fix path to executable in viewer deb (#5996) (contributed by @simonschmeisser)
  • [Fix] Build fixes MSVC and gcc (#6039) (contributed by @ssheorey)
  • [Fix] Windows CI out of disk space workaround (#6281) (contributed by @ssheorey)
  • [Fix] Increase Ubuntu wheel CI build space. (#6255) (contributed by @ssheorey)
  • [Update] relax nbformat (#6135) (contributed by @Borda)
  • [Fix] Fix build with gcc-13 (#6215) (contributed by @roehling)
  • [Update] Build system improvements backported from Debian (#6180) (contributed by @roehling)
  • [Update] Use GLIBCXX_USE_CXX11_ABI by default (#6206) (contributed by @QuentinTorg)
  • [Update] Test Ubuntu wheel on 20.04 (#6205) (contributed by @ssheorey)
  • [Fix] Enable multi-core link time optimization (#6181) (contributed by @roehling)

Documentation

  • [Update] Add missing keyword arg names to visualization bindings (#6407) (contributed by @djkeyes)
  • [Fix] Fix regression - Keep output of cell blocks in jupyter in scrollable area. (#6504) (contributed by @saurabheights)
  • [Update] Upgrade documentation techstack (#6470) (contributed by @saurabheights)
  • [Update] Add Open3D architecture diagram (#6488) (contributed by @ssheorey)
  • [Fix] fixed arguments in example notebooks (#6410) (contributed by @tomole444)
  • [Update] Update visualization.ipynb (#6263) (contributed by @Sendeky)
  • [Fix] Improve Documentation - Fix code links and improve tutorial layout (#6321) (contributed by @saurabheights)
  • [Fix] Fix rendering of Python versions table (#6162) (contributed by @johnthagen)
  • [Fix] Improve documentation (#6307) (contributed by @saurabheights)
  • [Fix] Bring tutorial code snippets in-sync with latest source #6077 (#6128) (contributed by @dancergraham)

Known Issues

  • Build errors in 3rd party libraries with gcc-13 on Ubuntu 23.10 (#6544). Please use prebuilt binaries or gcc-12 for building.

Acknowledgment

We would like to thank all of our community contributors for their true labor of love for this release!
Also thanks to the many others who helped the Open3D community by reporting as well as resolving issues.