Open3D 0.15 Release Notes
We are excited to bring you the best Open3D yet - version 0.15. Watch the release video here.
Starting from this release, we adopt a "tick-tock" model for balancing resolving issues vs. adding new features. In a nutshell, the "tick" releases are focused on resolving existing issues and eliminating bugs, while the "tock" releases mainly focus on developing new features. Open3D 0.15 is a "tick" release. We resolved over 500 issues for Open3D and Open3D-ML, as the infographic below illustrates.
Google Summer of Code 2022
Open3D has applied for the Google Summer of Code 2022 to increase community participation. Check out details and our project ideas here. Please help in making Open3D better for all.
Build System
- [New] We now provide Open3D binary packages for C++ users. No need to “Build from Source” - just download a binary package for your Operating System and use it “out of the box”. See GitHub releases for v0.15 and getting started guides for the latest development package.
- [New] Docker build tools to build ARM64 Linux wheels and multiple Python versions. See ARM64 build guide for more details.
- [New] Pre-compiled Open3D wheel for ARM64 Linux and macOS. Improved Apple Silicon support. Install Open3D on ARM64 Linux and macOS with
pip install open3d
. - [Update] Open3D now builds with the new CXX11 ABI by default on Linux. Set
-DGLIBCXX_USE_CXX11_ABI=OFF
incmake
if you need the old ABI, e.g. to work with PyTorch / TensorFlow libraries. - [Update] Starting with version 0.15, Open3D Conda packages are no longer supported. Install Open3D with
pip install open3d
inside a Conda virtual environment.
Core
Datasets
- [New] Dataset module for automatically downloading and managing example data. The following example demonstrates how to create a
Dataset
object, extract its path, and display it in the Open3D Visualizer:
import open3d as o3d if __name__ == "__main__": dataset = o3d.data.EaglePointCloud() pcd = o3d.io.read_point_cloud(dataset.path) o3d.visualization.draw(pcd)
#include <string> #include <memory> #include "open3d/Open3D.h" int main() { using namespace open3d; data::EaglePointCloud dataset; auto pcd = io::CreatePointCloudFromFile(dataset.GetPath()); visualization::Draw({pcd}); return 0; }
Command Line Interface (CLI)
-
[New] Open3D-dedicated Command Line Interface (CLI) for visualization and running Python examples. Below is a code snippet to get started with Open3D and its examples.
# Install Open3D pip package pip install open3d # Print help open3d --help # List all runnable examples open3d example --list # Print source code of an example open3d example --show [category]/[example_name] # Run an example open3d example [category]/[example_name] # Run Open3D Viewer open3d draw # Open a mesh or point cloud file in Open3D Viewer open3d draw [filename]
-
[Update] Python examples directory has been refactored for better namespace consistency and new examples have been added.
Neighbor search
- [Update] Updated neighbor search module. The neighbor search module is now equipped with highly optimized built-in implementations of all search methods (Knn, Radius, and Hybrid) supporting both CPU and GPU. Faiss build dependency is removed.
Visualization and GUI
- [New] Introducing raw mode visualization. The raw mode automatically simplifies the lighting environment and object materials to make it easier to inspect the underlying geometry of point clouds and triangle meshes.
- [New] Open3D new visualizer now features CPU Rendering based on Mesa’s LLVMpipe software OpenGL implementation. Interactive applications, demos, and Python scripts are all supported as well as off-screen rendering. This feature can also be used within Docker.
- Method 1:
LD_PRELOAD
from the command lineLD_PRELOAD=/home/open3d/development/mesa-21.3.4/libGL.so python examples/python/visualization/draw.py
- Method 2: Preload library in Python
import ctypes ctypes.cdll.LoadLibrary('/home/open3d/development/mesa-21.3.4/libGL.so') import open3d as o3d mesh = o3d.io.read_triangle_model('/home/open3d/development/FlightHelmet/FlightHelmet.gltf') o3d.visualization.draw(mesh)
- Method 1:
- [New] WidgetProxy and WidgetStack widgets allow the creation of user interfaces on the fly (contributed by @forrestjgq).
- [New] Background color option for button widgets (contributed by @forrestjgq).
- [New] Set maximum visible items in a list widget to prevent lists from growing too large (contributed by @forrestjgq).
- [New] Function keys are now bindable (contributed by @forrestjgq).
- [New] Support for specifying intrinsic projection matrix in the new visualizer.
- [New] Add support for scaling 3D labels.
- [Fix] Open3D for TensorBoard plugin does not need Open3D-ML now.
- [Fix] Point picking, text input, and UI layout (contributed by @forrestjgq).
Geometry
- [Fix] Oriented Bounding Box
- Fixed an issue where the orientation of the
OrientedBoundingBox
was mirrored. - [New] added a new parameter for robust oriented bounding box computation for degenerated point clouds.
- Fixed an issue where the orientation of the
- [Fix] Convex hull meshes created from point clouds now have outward-pointing triangles.
- [Update] Added a new parameter for robust convex hull computation.
- [Update] TriangleMesh
GetSelfIntersectingTriangles()
and related functions likeIsWatertight()
,GetVolume()
, etc. are now more than 4 times faster. - [Fix] Corrected an issue with
io::AddTrianglesByEarClipping()
where the algorithm could fail for concave polygons. - [New] New Python examples for reconstruction and voxelization.
- [Fix] Improved logger performance.
Open3D-ML
- [New] MIT-licensed implementation of RandLANet.
- [New] Intel OpenVINO inference backend (contributed by @dkurt).
- [Fix] Fixed an issue with S3DIS where the loss gets NaN after a few epochs.
- [Fix] Fixed an issue with IoU calculation which fails for large point clouds while running inference in patches.
- [Fix] Fixed an issue where the labels are not correctly ordered in the visualizer.
- [New] Support for Images in Dataset Visualizer (contributed by @ajinkyakhoche).
Acknowledgment
We would like to thank all of our community contributors for their true labor of love for this release!
@ajinkyakhoche @ceroytres @chunibyo-wly @dkurt @forrestjgq @Fuhrmann-sep @jeertmans @junha-l @mag-sruehl @maxim0815 @Nicholas-Mitchell @nigels-com @NobuoTsukamoto @ntw-au @roehling @theNded
Also thanks to the many others who helped the Open3D community by reporting as well as resolving issues.