- Add shared-device Vulkan Gaussian-splat rendering and update Filament integration for offscreen and interactive rendering.
- Reduce the installed size of the Open3D wheel: Open3D-ML Python dependencies are now an optional extra (
pip install open3d[ml], ~335 MB smaller for core-only installs) andopen3d.mlsubmodules are imported lazily.BUNDLE_OPEN3D_MLnow defaults to ON when ML ops are built andOPEN3D_ML_ROOTis set, and Windows wheels bundle Open3D-ML too (PR #7540). - Add symmetric ICP registration to the legacy and Tensor pipelines (PR #7276).
- Replace OpenMP with oneAPI TBB for all CPU parallelism; Open3D no longer depends on OpenMP. This removes the
libomp/libgompruntime dependency and the thread oversubscription and crashes caused by loading multiple OpenMP runtimes in one process (e.g. alongside PyTorch in Python). TheWITH_OPENMPCMake option is removed, oneTBB >= 2021.4.0 is required, andOMP_NUM_THREADSis replaced byopen3d.utility.set_max_threads()(C++:utility::SetMaxThreads()or atbb::task_arena).utility::OMPProgressBaris removed in favor of the thread-safeutility::ProgressBar;utility::GetThreadNum()andutility::InParallel()are removed (PR #6626) (issues #6196, #6544, #6750) - Add point cloud smoothing algorithms: Moving Least Squares (MLS), Laplacian, Taubin, and bilateral smoothing. These methods provide flexible noise reduction for point clouds with different preservation characteristics (PR #7419).
- Add vcpkg support for easier dependency management (PR #7386)
- Exposed advanced parameters (
full_depth,samples_per_node,point_weight) for Poisson surface reconstruction inTriangleMesh.create_from_point_cloud_poisson(PR #7430) (issue #7248) - Add SYCL tensor backends for HashMap, nearest-neighbor search (KNN, fixed-radius, hybrid), geometry transforms, and registration / odometry / feature pipelines (parity with CUDA paths where applicable).
- Fix Gaussian Splat rendering on Vulkan by disabling view MSAA before binding a render target with sampleable depth (issue #7495).
- Add SYCL ML ops: continuous convolution and sparse convolution (forward/transpose/backprop-filter, sycl-tla GEMM-accelerated), voxelize, voxel pooling, invert neighbors list, reduce-subarrays-sum, and ragged-to-dense, plus contrib NMS, RoI pool, ball query, IoU (BEV + 3D), trilinear devoxelize, and three-interpolate, all exposed via the PyTorch XPU op library.
- Hybrid nearest-neighbor search on SYCL now supports the L1 and Linf metrics (previously L2-only), matching fixed-radius search and CUDA.
- Convolution ops'
allow_tf32acceleration on SYCL requires channel counts and leading dimensions to be divisible by 4; falls back to IEEE float32 with a one-time warning otherwise. Seedocs/sycl.rst. - Document a RoI-pool point-selection divergence between the SYCL and CPU/CUDA backends when more than
sampled_pts_numpoints fall inside a box (both are valid samples; downstream counts andpooled_empty_flagremain identical). Seedocs/sycl.rst. - Add compressed SPZ file I/O for tensor-based Gaussian splats, with zstd dependency integration, round-trip tests, and notebook samples.
- Fix system zstd propagation to the nested SPZ build so its headers and library are installed correctly.
- Add Windows shared-library CUDA and SYCL Python wheels (
open3d-cuda,open3d-xpu) built against the installed devel package; ship NVIDIA CUDA 12.6 runtime pip dependencies (python/requirements_win_cuda.txt) since CUDA is linked dynamically on Windows - Fix WebRTC prebuilt packaging and CI workflow across Linux, macOS arm64, and Windows runtime variants (PR #7515)
- Add
CorrespondenceCheckerBasedOnSourceRotationto constrain global orientation priors in RANSAC registration (PR #7461) - Use glfwGetMonitorWorkarea for accurate screen size in GetScreenSize, remove unusable_height estimation hack, and subtract window-decoration extents before clamping auto-sized windows (PR #7469)
- Upgrade stdgpu third-party library to commit d7c07d0.
- Fix performance for non-contiguous NumPy array conversion in pybind vector converters. This change removes restrictive
py::array::c_styleflags and adds a runtime contiguity check, improving Pandas-to-Open3D conversion speed by up to ~50×. (issue #5250)(PR #7343). - Corrected documentation for Link Open3D in C++ projects (broken links).
- Fix DLLs not being found in Python-package. Also prevent PATH from being searched for DLLs, except CUDA (PR #7108)
- Fix MSAA sample count not being copied when FilamentView is copied
- Fix TriangleMesh::SamplePointsUniformly and TriangleMesh::SamplePointsPoissonDisk now sampling colors from mesh if available (PR #6842)
- Fix TriangleMesh::SamplePointsUniformly not sampling triangle meshes uniformly (PR #6653)
- Fix tensor based TSDF integration example.
- Use GLIBCXX_USE_CXX11_ABI=ON by default
- Python 3.9 support. Tensorflow bump 2.4.1 -> 2.5.0. PyTorch bump 1.7.1 -> 1.8.1 (LTS)
- Fix undefined names: docstr and VisibleDeprecationWarning (PR #3844)
- Corrected documentation for Tensor based PointClound, LineSet, TriangleMesh (PR #4685)
- Corrected documentation for KDTree (typo in Notebook) (PR #4744)
- Corrected documentation for visualisation tutorial
- Remove
setuptoolsandwheelfrom requirements for end users (PR #5020) - Fix various typos (PR #5070)
- Exposed more functionality in SLAM and odometry pipelines
- Fix for depth estimation for VoxelBlockGrid
- Reserve fragment buffer for VoxelBlockGrid operations
- Fix raycasting scene: Allow setting of number of threads that are used for building a raycasting scene
- Fix Python bindings for CUDA device synchronization, voxel grid saving (PR #5425)
- Support msgpack versions without cmake
- Changed TriangleMesh to store materials in a list so they can be accessed by the material index (PR #5938)
- Support multi-threading in the RayCastingScene function to commit scene (PR #6051).
- Fix some bad triangle generation in TriangleMesh::SimplifyQuadricDecimation
- Fix printing of tensor in gpu and add validation check for bounds of axis-aligned bounding box (PR #6444)
- Python 3.11 support. bump pybind11 v2.6.2 -> v2.11.1
- Check for support of CUDA Memory Pools at runtime (#4679)
- Fix
toString,CreateFromPointsmethods and improve docs inAxisAlignedBoundingBox. 🐛📝 - Migrate Open3d documentation to furo theme ✨ (#6470)
- Expose Near Clip + Far Clip parameters to setup_camera in OffscreenRenderer (#6520)
- Add Doppler ICP in tensor registration pipeline (PR #5237)
- Rename master branch to main.
- Support in memory loading of XYZ files
- Fix geometry picker Error when LineSet objects are presented (PR #6499)
- Fix mis-configured application .desktop link for the Open3D viewer when installing to a custom path (PR #6599)
- Fix regression in printing cuda tensor from PR #6444 🐛
- Add Python pathlib support for file IO (PR #6619)
- Fix log error message for
probabilityargument validation inPointCloud::SegmentPlane(PR #6622) - Fix macOS arm64 builds, add CI runner for macOS arm64 (PR #6695)
- Fix KDTreeFlann possibly using a dangling pointer instead of internal storage and simplified its members (PR #6734)
- Fix RANSAC early stop if no inliers in a specific iteration (PR #6789)
- Add 3D Normal Distributions Transform registration with C++ and Python APIs (PR #7517).
- Fix segmentation fault (infinite recursion) of DetectPlanarPatches if multiple points have same coordinates (PR #6794)
TriangleMesh's+=operator appends UVs regardless of the presence of existing features (PR #6728)- Fix build with fmt v10.2.0 (#6783)
- Fix segmentation fault (lambda reference capture) of VisualizerWithCustomAnimation::Play (PR #6804)
- Python 3.12 support
- Add O3DVisualizer API to enable collapse control of verts in the side panel (PR #6865)
- Split pybind declarations/definitions to avoid C++ types in Python docs (PR #6869)
- Fix minimal oriented bounding box of MeshBase derived classes and add new unit tests (PR #6898)
- Fix projection of point cloud to Depth/RGBD image if no position attribute is provided (PR #6880)
- Add choice of voxel pooling mode when creating VoxelGrid from PointCloud (PR #6937)
- Support lowercase types when reading PCD files (PR #6930)
- Fix visualization/draw ICP example and add warnings (PR #6933)
- Unified cloud initializer pipeline for ICP (fixes segfault colored ICP) (PR #6942)
- Fix tensor EstimatePointWiseNormalsWithFastEigen3x3 (PR #6980)
- Fix alpha shape reconstruction if alpha too small for point scale (PR #6998)
- Fix render to depth image on Apple Retina displays (PR #7001)
- Fix infinite loop in segment_plane if num_points < ransac_n (PR #7032)
- Add select_by_index method to Feature class (PR #7039)
- Add optional indices arg for fast computation of a small subset of FPFH features (PR #7118).
- Fix CMake configuration summary incorrectly reporting
nofor system BLAS. (PR #7230) - Add error handling for insufficient correspondences in AdvancedMatching (PR #7234)
- Exposed
get_plotly_figand modifieddraw_plotlyto return theFigureit creates. (PR #7258) - Fix build with librealsense v2.44.0 and upcoming VS 2022 17.13 (PR #7074)
- Fix
deprecated-declarationswarnings when compiling code with C++20 standard (PR #7303) - Fix thread safety of UniformTSDFVolume::ExtractVoxelGrid (PR #7315)
- Fix advanced indexing bug with sliced boolean masks on CUDA devices (PR #7340)
- Fix logic for adding -allow-unsupported-compiler to nvcc (PR #7337)
- Fix linker error "library limit of 65535 objects exceeded" with Ninja generator on MSVC (PR #7335)
- Add assertion guard for invalid indexing operations (PR #7360)
- Implement CUDA multipass for KNN >
GPU_MAX_SELECTION_K(PR #7381) - Download tarballs instead of Git repos for "3rdparty/uvatlas" (PR #7371)
- macOS x86_64 not longer supported, only macOS arm64 is supported.
- Python 3.13+3.14 support
- Fix color artifacts in PointCloud projection due to CUDA race condition (PR #7424)
- Sync the bundled CUTLASS license with v4.2.1 (PR #7542).
- Fix Windows build failure for PyTorch ops due to PyTorch's bundled fmt (v11+) requiring
/utf-8with MSVC (PR #7447) - Fix
TriangleMesh::SamplePointsPoissonDiskperformance by incrementally updating neighbor weights instead of recomputing them with additional KD-tree queries (issue #7449) - Add
GetMenufor MenuBase for easy menu item/submenu control. (PR #7295)
- CUDA support 10.1 -> 11.0. Tensorflow 2.3.1 -> 2.4.1. PyTorch 1.6.0 -> 1.7.1 (PR #3049). This requires a custom PyTorch wheel from https://github.com/isl-org/open3d_downloads/releases/tag/torch1.7.1 due to PyTorch issue #52663
- RealSense SDK v2 integrated for reading RS bag files (PR #2646)
- Tensor based RGBDImage class, Python bindings for Image and RGBDImage
- RealSense sensor configuration, live capture and recording (with example and tutorial) (PR #2748)
- Add mouselook for the legacy visualizer (PR #2551)
- Add function to randomly downsample pointcloud (PR #3050)
- Allow TriangleMesh with textures to be added (PR #3170)
- Python property of open3d.visualization.rendering.Open3DScene
get_viewhas been renamed toview. - Added LineSet::CreateCameraVisualization() for creating a simple camera visualization from intrinsic and extrinsic matrices (PR #3255)
- Fixes bug for preloading libc++ and libc++abi in Python
- Added GUI widgets and model-viewing app
- Fixes travis for race-condition on macOS
- Fixes appveyor configuration and to build all branches
- Updated travis.yml to support Ubuntu 18.04, gcc-7, and clang-7.0
- Contributors guidelines updated
- Avoid cstdlib random generators in ransac registration, use C++11 random instead.
- Fixed a bug in open3d::geometry::TriangleMesh::ClusterConnectedTriangles.
- Added option BUILD_BENCHMARKS for building microbenchmarks
- Extend Python API of UniformTSDFVolume to allow setting the origin
- Corrected documentation of PointCloud.h
- Added ISS Keypoint Detector
- Added an RPC interface for external visualizers running in a separate process
- Added
maximum_errorandboundary_weightparameter tosimplify_quadric_decimation - Remove support for Python 3.5
- Development wheels are available for user testing. See Getting Started page for installation.
- PointCloud File IO support for new tensor data types.
- New PointCloud format support: XYZI (ASCII).
- Fast compression mode for PNG writing. (Issue #846)
- Ubuntu 20.04 (Focal) support.
- Added Line3D/Ray3D/Segment3D classes with plane, point, closest-distance, and AABB tests
- Updated Open3D.h.in to add certain missing header files
- Add Open3D-ML to Open3D wheel
- Fix a bug in PointCloud file format, use
floatinstead offloat_t - Add per-point covariance member for geometry::PointCloud class.
- Add Generalized ICP implementation.
- Version bump to 0.9.0