github isl-org/Open3D v0.19.0
v0.19 release

one day ago

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.

L7PsZ0r5Xotk2nt6.mp4

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.

What's Changed

  • Fix .desktop entry when installing in a UNIX system by @EwingKang in #6599
  • Fix printing tensor bug - regression introduced in #6444 by @saurabheights in #6595
  • Bump jinja2 from 3.1.2 to 3.1.3 in /docs by @dependabot in #6597
  • Make plane segmentation from point cloud deterministic by @jkuck in #6580
  • Add Python pathlib support for file IO by @sitic in #6619
  • make sure assimp is built with exporter by @benjaminum in #6650
  • Fix TriangleMesh::SamplePointsUniformly not sampling triangles unifor… in #6653
  • Update CHANGELOG.md in #6655
  • fixed typo by @mone27 in #6630
  • Update behavior of FromLegacy to make more flexible with materials by @errissa in #6672
  • Fix log error message for "probability" argument validation in PointCloud::SegmentPlane by @true-real-michael in #6622
  • Reduce Google cloud CI costs, update Open3D project email by @ssheorey in #6684
  • Upgrade embree to 4.3.1 by @lumurillo in #6665
  • improved t.io.read_triangle_mesh documentation by @ADAWG208 in #6675
  • Bug fix in RGBD based reconstruction system example by @bell-one in #6660
  • Implement t::geometry::TriangleMesh::RemoveUnreferencedVertices by @nsaiapova in #6640
  • [Fix] threthold tolerance error (#6550) by @chunibyo-wly in #6608
  • Misc. CI updates and fixes by @ssheorey in #6716
  • Fix typos in NearestNeighborSearch.h by @mone27 in #6705
  • Switched QHull ImGUI and GoogleTest to use FetchContent by @dbs4261 in #6645
  • Update ispc binary path on Windows, update civetweb to v1.16 by @AhmedZero in #6577
  • Add macOS arm64 CI runner, fix macOS arm64 builds by @sitic in #6695
  • Fix check in ConvertFromPinholeCameraParameters function from ViewControl by @lumurillo in #6711
  • Fixes and improvements for point selection in O3DVisualizer (fixes #6725) by @danrauch in #6733
  • Simplify data_ and data_interface_ in KDTreeFlann. by @PieroV in #6734
  • Convert triangle mesh model to tmesh map by @ssheorey in #6758
  • Switch hosting of devel packages from Google cloud to Github releases by @ssheorey in #6784
  • Robust image I/O by @ssheorey in #6765
  • Add Mouse Callback to VisualizerWithKeyCallback by @organic-nailer in #6760
  • Fix segfault (infinite recursion) of PointCloud::DetectPlanarPatches … by @nicolaloi in #6794
  • Add SYCL copy support to tensor by @lumurillo in #6764
  • Fix ransac update of the iteration number by @nicolaloi in #6789
  • Camera coordinate frame visualization with LineSet by @ssheorey in #6796
  • Add security policy, GITHUB_TOKEN access restrictions. by @ssheorey in #6814
  • add support to fmt-v10 by @daizhirui in #6783
  • Fix segfault (lambda reference capture) of VisualizerWithCustomAnimation::Play by @nicolaloi in #6804
  • Implement ComputeTriangleAreas, GetNonManifoldEdges and RemoveNonManifoldEdges in t::geometry::TriangleMesh by @nsaiapova in #6657
  • cmake: add llvm version deps for c++ by @rurban in #6832
  • Job level token permissions for github actions by @ssheorey in #6830
  • add cstdint header to fix missing uint8_t type on ubuntu 24.04 by @benjaminum in #6847
  • Update Assimp to fix compilation with gcc 13 by @benjaminum in #6846
  • Fix triangle area and non-manifold edge tests for CUDA by @ssheorey in #6859
  • Bump certifi from 2023.7.22 to 2024.7.4 in /python in the pip group across 1 directory by @dependabot in #6857
  • VTK based implementation of extract trianglemesh by @intelshashi in #6648
  • add missing initialization for compute_vertex_normals() by @benjaminum in #6873
  • Support numpy v2. by @ssheorey in #6874
  • add numpy version warning to documentation by @rxba in #6879
  • Fix links to release links of main-devel tag by @benjaminum in #6883
  • fix pip install statement for latest dev whl on getting started page by @benjaminum in #6890
  • Copy examples for building user projects with Open3D to Open3D repo by @ssheorey in #6884
  • Add O3DVisualizer API to enable collapse control of verts in the side panel by @EwingKang in #6865
  • Adapted find_dependencies.cmake to build with CUDA >= 12.0 with dynamic libraries as well by @davconde in #6815
  • Fix color update in gpu by @cdh981009 in #6886
  • Fix minimal oriented bounding box of MeshBase derived classes and add new unit tests by @nicolaloi in #6898
  • Update min OS to Ubuntu 20.04 by @ssheorey in #6902
  • upgrade embree to v4.3.3 and fix fmt formatter for RTCError by @daizhirui in #6901
  • Split pybind declarations and definitions by @timohl in #6869
  • fix projection of point cloud with no positions attribute to image by @rxba in #6880
  • bug fix at AddPerpPlaneQuadric by @liuchunlin in #6911
  • Update Intel libraries (MKL, TBB, IPP). Remove parallelSTL / oneDPL. by @ssheorey in #6809
  • Add color for sampling from mesh by @nikste in #6842
  • [Mesh] TriangleMesh's "+=" operator appends UVs regardless of the presence of existing features by @cdbharath in #6728
  • Support lowercase types (i, u, f) when reading PCD files by @nicolaloi in #6930
  • Updated delocate-fuse to delocate-merge. by @timohl in #6940
  • Expose minimal oriented bounding box to python api by @sharon-br in #6946
  • Update summary.py by @owenonline in #6960
  • Always pre-transform vertices while reading with Assimp. by @ssheorey in #6959
  • fix build with fmt-v11 by @daizhirui in #6969
  • Missing build byproducts by @dbs4261 in #6971
  • fix visualization/draw ICP example and add warnings by @rxba in #6933
  • Add remote visualizer example. Allow changing rpc address in draw. by @ssheorey in #6973
  • Replace conda with pyenv to fix incorrect libstdc++ use in jammy CI. by @ssheorey in #6966
  • jinja2 CVE fix by @ssheorey in #6992
  • Faster CPU (Arg-)Reductions by @manuelvogel12 in #6989
  • Support python 312 by @swheaton in #6717
  • Add Tensor-based implementation of FarthestPointDownSample by @manuelvogel12 in #6948
  • Missing build byproducts for VTK when downloaded by @dbs4261 in #7007
  • fix alpha shape reconstruction if alpha too small for point scale by @rxba in #6998
  • fix render to depth image on Apple Retina displays by @rxba in #7001
  • Fix tensor EstimatePointWiseNormalsWithFastEigen3x3 by @nicolaloi in #6980
  • CI fixes post Python 3.12 support by @ssheorey in #7020
  • [CodeStyle] Update license header by @BeingGod in #7011
  • Unified cloud initializer pipeline for ICP (fixes segfault colored ICP) by @nicolaloi in #6942
  • fix infinite loop in segment_plane if num_points < ransac_n by @rxba in #7032
  • SamplePointsUniformly, Chamfer Distance, Hausdorff Distance and F-Score by @ssheorey in #7056
  • Enable Embree build with SYCL support and OneAPI 2024.1.0 by @lumurillo in #6808
  • fix bug when compile with native cuda arch by @USTCKAY in #7059
  • Bump lxml-html-clean from 0.2.2 to 0.4.0 in /docs in the pip group by @dependabot in #7064
  • add another example for create_isosurfaces() by @benjaminum in #7068
  • Add select_by_index method to Feature class by @nicolaloi in #7039
  • Upgrade stdgpu to latest version by @stotko in #7083
  • FarthestPointDownSample: arg to specify start index to start downsampling from by @abhishek47kashyap in #7076
  • Docstring updates for NearestNeighborSearch and compute_metrics by @benjaminum in #7081
  • Fixes for pybind11-stubgen errors by @timohl in #6896
  • Fix CI tests - macOS, Ubuntu, SYCL by @ssheorey in #7087
  • Changed o3c.Tensor.arange signature to be like np.arange. by @timohl in #7095
  • Changed draw_geometries to use default args instead of overload by @timohl in #7097
  • Copy SampleCount when making a copy of FilamentView by @patrikhuber in #7072
  • [Typo] Fix torch furthest_point_sampling argument typo by @BeingGod in #7025
  • Changed lambda to lambda_penalty in orient_normals_consistent_tangent_plane by @timohl in #7096
  • Add feature to choose voxel color mode when creating VoxelGrid from PointCloud by @rxba in #6937
  • Nix build by @netogallo in #6854
  • Changed namespace fix to use Sphinx autodoc-process-* events by @timohl in #7103
  • increase voxel size to improve ICP test reliability by @benjaminum in #7107
  • Fix Documentation CI + General CI Cleanup by @timohl in #7105
  • Bump jinja2 from 3.1.4 to 3.1.5 in /docs in the pip group by @dependabot in #7112
  • Pin maturin to 1.7.8 to fix Windows CI for Python 3.8, 3.12 by @ssheorey in #7120
  • Create albedo texture for a model from calibrated images by @ssheorey in #6806
  • Fix python package-DLLs not being found by @fegorsch in #7108
  • [Preview] Integrated GPU / Intel GPU support through SYCL. by @ssheorey in #7114
  • Update to latest GLFW by @errissa in #6587
  • Version bump to v0.19 by @ssheorey in #7121
  • Build fixes for v0.19 by @ssheorey in #7128

Open3D-ML updates:

New Contributors

Full Changelog: v0.18.0...v0.19.0

Don't miss a new Open3D release

NewReleases is sending notifications on new releases.