Open3D 0.10.0 is out!

Open3D 0.10.0 Release Notes

We are proud to present the 0.10.0 release of Open3D!

For this release, the Open3D team set its focus on the theme of Visualization and Rendering. For starters, we upgraded Open3D rendering capabilities, adding a new real-time renderer based on Filament. This renderer brings support for spatially-varying BRDFs, the Cook-Torrance model, Image-Based Lighting, and Physically-based rendering, among many other improvements. Overall, this translates into a much better rendering quality, endowing 3D models of a higher realism and beauty.

[Warning] As a consequence, we are deprecating the traditional rendering system in favor of the new one. But do not panic, the new rendering system and the traditional system will live together until the 0.12.0 release of Open3D when it will be officially removed from the project.

In order to improve the process of 3D visualization, Open3D has incorporated a new GUI module. It was decided to base the new GUI module on the successful Dear ImGui project due to its compact size and the possibilities of its immediate mode. This new GUI module will help 3D developers to build tailored nice-looking graphical applications with minimum effort.

As an example of what can be done with the GUI module, the Open3D team has developed a new standalone application for 3D visualization, in combination with the new rendering engine. The Open3D 3D visualizer is the quickest and easiest way of making your models look outstanding! Try it yourself by downloading it here (MacOSX).

It is believed that one of the most critical aspects of an open-source project is the quality of its documentation. For this reason, in every release, the team makes a big effort to bring you documentation of the highest quality possible. On this occasion, we decided to upgrade our tutorials to make them interactive. This allows users to directly play and experiment with the concepts presented in each tutorial. The new tutorials, in Jupyter notebook format, can be found here.

Finally, the GPU support that many of you have been requesting has started to make its way into master. In this first step, Open3D brings experimental support for a new Tensor library, that can be transparently used in CPUs and GPUs. We will keep migrating the entire library step-by-step, so please be patient. Feel free to test it out and provide us with feedback.

We hope you find Open3D 0.10.0 useful. Happy coding!

Remember that you can reach out with questions, requests, or feedback through the following channels:

The Open3D team

Legend:

  • [Added]: Used to indicate the addition of new features
  • [Changed]: Updates of existing functionalities
  • [Deprecated]: Functionalities / features removed in future releases
  • [Removed]: Functionalities/features removed in this release
  • [Fixed]: For any bug fixes
  • [Breaking] This functionality breaks the previous API and you need to check your code

Installation and project structure

  • [Added] Enable /bigobj flag for Windows debug build (#1660)
  • [Fixed] Fix brew link problem for python/tbb on OSX for CI (#1440)
  • [Fixed] Windows MSVC compilation warnings (#1663)
  • [Fixed] Typo in make docs (#1806)

CORE features and applications

  • [Added] GPU-enabled Tensor and TensorList (#1399)
  • [Added] Python binding for Tensor and Numpy/Pytorch I/O (#1455)
  • [Added] Added cache variables and code for selecting the gpu arch (#1478)
  • [Added] project_valid_depth_only option to [PointCloudFactory/CreatePointCloud] (#1402)
  • [Added] TensorList pybind (#1505, #1557)
    Thanks, iory
  • [Added] [voxel_down_sample_and_trace] Always return point references (#1406). Thanks, iory
  • [Added] Tensor binary element-wise ops (#1460)
  • [Added] Enable building docs for pure python submodules (#1520)
  • [Added] Option for using the triangle normal for sampled points (#1539)
  • [Added] added get_surface_area to pybind module (#1540)
  • [Added] 3rdparty library cutlass (#1551)
  • [Added] Tensor unary ops sqrt, sin, cos, neg, exp ops (#1532)
  • [Added] Tensor::To for type casting (#1533)
  • [Added] Python slice for Tensor class (#1545)
  • [Added] Proper pybind for Vector2dVector (#1623)
  • [Added] Log error in PointCloud::SegmentPlane() if there are less than ransac n points (#1637)
  • [Added] Tensor::Abs and python bindings (#1620)
  • [Added] Seed argument to mesh sampling functions (#1682) (#1683). Thanks, rowoflo
  • [Added] unified regular and advanced indexing for Tensor, and pybind (#1613)
  • [Added] boolean dtype, logical ops, comparision ops (#1652)
  • [Added] microbenchmark framework (#1696)
  • [Added] Speeds up compilation (#1722)
  • [Added] reduction op support for cpu and gpu (#1730)
  • [Added] support for building TensorFlow ops (#1780)
  • [Added] Tensor creation shortcuts and scalar value op (#1779)
  • [Added] Tensor::Fill explicit specialization, reduce number of outputs (#1801)
  • [Added] Tensor::NonZero and boolean mask advanced indexing (#1681)
  • [Changed] Update travis configuration to support clang-7 and gcc 7.4. (#1471)
  • [Changed] Update VoxelGrid::CarveSilhouette and VoxelGrid::CarveDepthMap to support only carving voxels that project to image (#1441) (#1457). Thanks, jkerfs
  • [Changed] Avoid cstdlib random generators in ransac for global registration (#1486). Thanks, sambarluc
  • [Changed] Boolean expression in GlobalOptimization.cpp (#1509). Thanks, scimad
  • [Changed] Give sensible name for python argument in visualizer.cpp (#1518). Thanks,
  • [Changed] Moved 3rdparty packages down a level to not pollute the include space (#1499). Thanks, tykurtz
  • [Changed] Suppress developer warning for OpenGL preferred library with CMAKE_VERSION>= 3.11 (#1628). Thanks, akashsharma02
  • [Changed] Update tinygltf submodule to fix a bug with exported attributes (#1711). Thanks, mosra
  • [Changed] Binary op output must fit in the output tensor (#1777)
  • [Changed] Changed center parameter in Scale and Rotate (#1774)
  • [Changed] use lowest instead of min for smallest value (#1827)
  • [Fixed] Fix number of edge not showing on verbose message (#1498). Thanks, scimad
  • [Fixed] Bug in update_geometry (#1501). Thanks, Forest75
  • [Fixed] PyTorch import segfault, set CXX_ABI (#1262)
  • [Fixed] Function names remove_non_finite_points and select_by_index (#1630)
  • [Fixed] Alpha shape pybind (#1624)
  • [Fixed] Some cameras are flipped (in the z-axis) when the bounding_box center of the scene is not visible (#1447). Thanks, pablospe
  • [Fixed] SyntaxWarning: replace 'is' with '==' for literals. (#1664). Thanks, hzxie
  • [Fixed] Bug in open3d::geometry::TriangleMesh::ClusterConnectedTriangles (#1669). Thanks, Akella17
  • [Fixed] VoxelGrid.voxels bug #1535 (#1688). Thanks, kosuke55
  • [Fixed] Issue #1689 (#1690). Thanks, akashsharma02
  • [Fixed] Windows warnings (as errors) (#1739)
  • [Fixed] Typos in several Geometry classes (#1773). Thanks, roehling
  • [Fixed] Windows Kinect compile issue (#1796)
  • [Fixed] get_xyz_from_pts interpolation (#1799)
  • [Fixed] colormap segfault and refactor (#1813)
  • [Fixed] Oriented bounding box GetPointIndicesWithinBoundingBox (#1798)

Rendering and visualization

  • [Added] Key callback action event to handle PRESS, RELEASE, REPEAT (#1313). Thanks, sammo2828
  • [Added] Filament integration (#1331, #1512, #1514, #1519, )
  • [Added] GUI module (#1451, #1481, #1495, #1430, #1434, #1435, #1565)
  • [Added] Standalone Visualization application (#1470, #1562, #1572, #1573, #1569, #1583, #1584, #1586, #1585, #1587, #1588, #1591, #1590, #1595, #1593, #1596, #1602, #1601, #1604, #1607, #1608, #1609, #1610, #1611, etc.)
  • [Added] Supports multiple textures in .obj file (#1517)
  • [Fixed] Headless Rendering with traditional system (#1695)

Documentation, tutorials, and examples

  • [Added] Jupyter tutorial for point cloud (#1631, #1640)
  • [Added] Make documentation buildable without Git source tree (#1772). Thanks, roehling
  • [Changed] Contributions guidelines (#1465)
  • [Changed] CPP documentation (#1541)
  • [Fixed] Typos fixed in compilation.rst and visualization.rst (#1476, #1477). Thanks, pauljurczak
  • [Fixed] Minor typo in compilation.rst (#1513). Thanks, scimad
  • [Fixed] Consistency in documentation filenames (#1511). Thanks, scimad
  • [Fixed] filename error in capture_your_own_dataset.rst tutorial (#1525). Thanks, scimad
  • [Fixed] Pass correct parameter into function update_geometry()(#1528). Thanks, Forest75
  • [Fixed] Fix bug in non_blocking_visualization.rst example (#1537). Thanks, scimad
  • [Fixed] Incorrect file name in a ReconstructionSystem document (#1699). Thanks, muskie82