Open3D v0.18 Release Notes
Release Date: 2024-01-05 // over 2 years 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.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_abion 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:cddocker# Build open3d and open3d-cpu wheels for Python 3.10 with Tensorflow supportexportBUILD_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
furotheme for Open3D documentation (contributed by @saurabheights)The
masterbranch is now renamed tomain
⚡️ 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_voxelandremove_voxelin pybind forVoxelGrid::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
- [New] Add TUM Facade dataset (isl-org/Open3D-ML#613) (contributed by @ThomasFroech)
- [New] Add Pandaset autonomous driving dataset (isl-org/Open3D-ML#611) (contributed by @SulekBartek)
- [New] Support Python 3.11 (isl-org/Open3D-ML#619) ) (contributed by @ssheorey)
- [Fix] Changed usage of TensorFlow Status API (#6091) (contributed by @NobuoTsukamoto)
- [Fix] Update boundingbox.py - switch np.int_ to np.int32 (isl-org/Open3D-ML#624) (contributed by @YishGene)
- [Fix] Replace colon with dash in timestamp variables (isl-org/Open3D-ML#620) (contributed by @Cassius0924)
- [Fix] Corrected pairing in SSD head of pointpillars (isl-org/Open3D-ML#602) (contributed by @zhongyidu)
- [Fix] Avoid renaming unwanted part of the path in dataset loading scripts (isl-org/Open3D-ML#597) (contributed by @mariusud and @ManonCortial)
- [Fix] Fix pytorch 1.13 error due to 2D weights (isl-org/Open3D-ML#601) (contributed by @ssheorey)
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...
Previous changes from v0.17
-
🚀 Open3D 0.17 Release Notes
🚀 We are happy to bring you the best Open3D yet! This is a "tick" release focused on resolving existing issues and eliminating bugs. We resolved over 150 issues for Open3D and Open3D-ML since the last release.
🚀 Here are the main highlights of this release:
- 👍 Open3D now has support for differentiable rendering with Mitsuba.
| raven_demo2.mp4
Here we use Mitsuba to recover the albedo map from an input image for an object in Open3D. Example. - 🆕 New lighter wheel (~105MB) for x86_64 Linux, which is suitable for systems without CUDA. Try it out with:
pip install open3d-cpu. - The Open3D viewer app is now available for Windows. This version is unsigned, so expect Windows warnings.
- 👍 Apple Silicon wheels now come with 3DML support.
- Preview of distributed training with PyTorch for PointPillars on the Waymo dataset.
- PointCloud partitioning with PCA.
Visualization and GUI
[New] Integration with Mitsuba.
Open3D geometries and materials seamlessly convert to Mitsuba's Principled BSDF:
dataset=o3d.data.MonkeyModel()mesh=o3d.t.io.read_triangle_mesh(dataset.path)mesh_center=mesh.get_axis_aligned_bounding_box().get_center()mesh.material.set_default_properties()mesh.material.material_name='defaultLit'mesh.material.scalar_properties['metallic']=1.0mesh.material.texture_maps['albedo']=o3d.t.io.read_image(dataset.path_map['albedo'])mesh.material.texture_maps['roughness']=o3d.t.io.read_image(dataset.path_map['roughness'])mesh.material.texture_maps['metallic']=o3d.t.io.read_image(dataset.path_map['metallic'])mi_mesh=mesh.to_mitsuba('monkey')img=render_mesh(mi_mesh,mesh_center.numpy())mi.Bitmap(img).write('test.exr')
👍 Also supports applying other Mitsuba BSDFs to Open3D geometries:
bsdf_rough_plastic=mi.load_dict({'type':'roughplastic','diffuse_reflectance': {'type':'rgb','value': [0.1,0.1,0.1] },'alpha':0.1,'int_ior':'bk7','ext_ior':'air', })mi_mesh=mesh.to_mitsuba('monkey',bsdf=bsdf_rough_plastic)img=render_mesh(mi_mesh,mesh_center.numpy())mi.Bitmap(img).write('test3.exr')
✅

👀 Seeexamples/python/visualization/to_mitsuba.pyfor more details.⚡️ Visualization and GUI (other updates)
- [New] The Open3D viewer app is now available for Windows. This version is unsigned, so expect Windows warnings.
- [New] Add draw_web CLI for remote visualization. Try it out with
🌐(remotehost) $ open3d draw_web --bind_all /path/to/3D/fileand then open the browser tohttp://remotehost:8888 - [New] Unprojection function in the ViewControl (contributed by @PieroV).
- [New] Added interaction methods for Python ImageWidget (contributed by @MartinEekGerhardsen).
- ⚡️ [Update] Updated customized_visualization tutorial (contributed by @ClarytyLLC).
- ⚡️ [Update] Convert material properties when converting from legacy to tensor TriangleMesh.
- [Fix] O3DVisualizer::RemoveGeometry() function vector subscript out of range (contributed by @UnadXiao).
- [Fix] Fast check for 3D tensorboard data. Open3D does not delay Tensorboard startup for large run folders now.
- [Fix] Fix scrolling direction bug for TextEdit (contributed by @cansik).
- [Fix] VisualizerWithVertexSelection: Call selection_changed callback, when deselecting all points (Ctrl + R) (contributed by @micsc12).
Geometry
- [New] robust plane detection (contributed by @plusk01).


- [New] Minimal bounding box computation for point clouds (contributed by @ligerlac).
- [New] Added RemoveStatisticalOutliers to tensor PointCloud. (contributed by @yuecideng).
- [New] Added ComputeTriangleNormals ComputeVertexNormals NormalizeNormals to tensor Trianglemesh. (contributed by @yuecideng).
- [New] Added normals oriented functions to tensor PointCloud. (contributed by @yuecideng).
- [New] Added tensor based OrientedboundingBox. (contributed by @yuecideng).
- [New] Added tutorial for tensor based PointCloud.
- [New] Enable python copy & deepcopy for tensor geometry. (contributed by @yuecideng).
- [New] Added partitioning of point clouds and triangle meshes using PCA.
pca_partition.mp4
- [New] Added a function to extract faces in a triangle mesh with a binary mask.
- [New] UV MAPS Tutorial (contributed by @samliozge).
- ⚡️ [Update] Added voting and ray jitter to RaycastingScene to improve robustness of signed distance queries.
- ⚡️ [Update] Improved speed of CreateFromTriangleMeshWithinBounds() by > 100x (contributed by @Hodong-Hwang).
- ⚡️ [Update] Added parallelization to UV atlas computation by partitioning the mesh.
- ⚡️ [Update] Function CreateFromVoxelGrid is made static (contributed by @mjaein).
- [Fix] Fixed wrong voxel center calculation in CreateFromTriangleMeshWithinBounds() (contributed by @plusk01).
- [Fix] Replace Vectors from internal embree headers with Eigen.
- [Fix] Use same beta value in SamplePointsPoissonDisk() as in the paper.
- [Fix] Fix Python Image calculations (pybind Image::To argument order).
- [Fix] Consistent face orientation for generated alpha shape.
Pipelines
- [New] Tensor reconstruction system upgrade: make fragments (contributed by @theNded).
- ⚡️ [Update] Added additional python bindings for RGBD odometry functionality (contributed by @jdavidberger).
- ⚡️ [Update] release python GIL for generalized icp (contributed by @yuecideng).
- [Fix] fix call to AdvancedMatching in FGR (contributed by @plusk01).
- [Fix] Update ICP fitness and rmse value at the end of the loop (contributed by @bialasjaroslaw).
I/O
- ⚡️ [Update] Add loading colors and uvs in tgeometry TriangleMesh IO.
Core
[New] Support for arbitrary imports with Open3D submodules in Python. Now you can use any of the following and more:
fromopen3d.t.geometryimportTriangleMeshfromopen3d.ml.torch.opsimportfixed_radius_search# pybind symbolfromopen3d.ml.tf.modelsimportKPFCNN# Python codefromopen3d.visualizationimportgui# pybind symbolfromopen3d.visualizationimportdraw# Python codefromopen3d.visualization.guiimportColorfromopen3d.visualization.renderingimportCamera
No need for awkward shortcuts such as:
importopen3daso3dTensor=o3d.core.TensorImage=o3d.t.geometry.Image- [New] unary minus operator (contributed by @yxlao).
- ⚡️ [Update] Replace license text with SPDX identifier.
- [Fix] Fixed error when use
CUDA_CALLwithout open3d namespace. (contributed by @yuecideng). - [Fix] Fixed multi-device CUDA switching bug. (contributed by @yxlao).
- [Fix] MiniVec's constructor shall not call Device's constructor/destructor (contributed by @yxlao).
- [Fix] Add neighbor search module to the documentation.
👷 Build System
- [New] The Open3D viewer app is now available for Windows.
- [New] New lighter wheel (~100MB) for x86_64 Linux, which is suitable for systems without CUDA. Try it out with:
pip install open3d-cpu. - ⚡️ [Update] Update imgui to latest version (contributed by @roehling).
- ⚡️ [Update] Support CUDA 12.0 build. (contributed by @NobuoTsukamoto).
- ⚡️ [Update] Add options to use system libraries for new dependencies (contributed by @roehling).
- ⚡️ [Update] Hide un-needed DSO symbols in Linux and macOS.
- ⚡️ [Update] Dependency upgrades for security fixes: civetweb, curl, zlib, libjpeg-turbo, wheel, setuptools, werkzeug, nbformat, ipywidgets, oathlib, certifi .
- [Fix] Build with libomp 11.1 and package in macOS wheel for interoperability with PyTorch.
- [Fix] Fix Mac build issue with ASSIMP.
- [Fix] Wstringop-owerflow compilation error for GCC (contributed by @bialasjaroslaw).
- [Fix] Support msgpack versions without cmake (contributed by @cielavenir).
- [Fix] fix Python 3.8 cuda dll loading on Windows (contributed by @yxlao).
- [Fix] More portable ARM system detection.
- [Fix] Fix build compatibility with fmtlib 8 (contributed by @roehling).
Open3D-ML
- [New] PointPillars Waymo distributed training model weights and docs.
- [New] 3DML support with PyTorch and TensorFlow for Apple Silicon.
- ⚡️ [Update] Update PyTorch to v1.13.1.
- ⚡️ [Update] RandLaNet update_probs label smoothing logic (contributed by @mariusud).
- [Fix] Update broken links (contributed by @Birkenpapier and @friendship1).
🚧 Known Issues [WIP]
- 🛠 [FIXED in
v0.17.0-1fix6008] The Python wheel may crash when run on Apple Silicon systems, especially ...




