isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
11.49k stars 2.31k forks source link

How to visualize multiple viewports in same window using visualizations.draw_plotly? #6242

Open jevonmao opened 1 year ago

jevonmao commented 1 year ago

Checklist

My Question

I am using VSCode to ssh into a remote server, so I can only get visualizations to work with the draw_plotly method. However it seems very poorly documented. I want to visualize multiple o3d.geometry.PointCloud()s on the same window, lying side by side. If I pass in multiple point clouds directly into draw_plotly it will overlay them, which is not the desired behavior. Does Open3D currently support this feature?

PurplePegasuss commented 1 year ago

Good afternoon!

I'm investigated behaviour behind this issue.

I've made some code to reproduce the problem:

import open3d as o3d

pcl = o3d.geometry.PointCloud()
points = []

pcl2 = o3d.geometry.PointCloud()
points2 = []

for x in range(0, 100):
    for y in range(0, 100):
        points.append([x, y, 0])
        points2.append([x+50, y+50, 0])

pcl.points = o3d.utility.Vector3dVector(points)
pcl2.points = o3d.utility.Vector3dVector(points2)

o3d.visualization.draw_plotly([pcl,pcl2])

Here you may see that only trace 1 point is visible here: image

Here you can also see how draw_plotly function is written: https://github.com/isl-org/Open3D/blob/master/python/open3d/visualization/draw_plotly.py#L175

A common workaround for this kind of overplotting situation is to give the markers an opacity < 1 so that overlapping points look different. Opacity is controlled by the scatter.marker.opacity property.

Unfortunatelly, now the setting of the marker propperties is hidden in the get_point_object.

image

Thus, in current version of the open3d the solution is not availible, however, I'm now working on a newer version to add this feature.

Hope it helped 🦾

jevonmao commented 1 year ago

@PurplePegasuss Thank you for the detailed explanation. The ability to adjust opacity to allow visualizing overlaid point clouds would be nice as well. Previously I saw #1086 which also said transparency channel is being worked on.

In my original question I was actually referring to drawing multiple viewports, each with its own 3D coordinate plane. Basically having two or more points clouds side by side, laid out on the same tab. Is this possible with open3D?