Hallo, ich habe den folgenden Code für die Echtzeitvisualisierung der Punktwolke geschrieben. Es scheint jedoch, dass ich die Ansicht im Visualizer nicht mit der Maus drehen kann, nachdem das Fenster angezeigt wurde. Es kann mit dem folgenden Code reproduziert werden. Ich benutze open3d 0.4. Kann jemand helfen? Vielen Dank.
import open3d
import numpy as np
import time
vis = open3d.Visualizer()
vis.create_window("3D Map")
pcd = open3d.PointCloud()
pts = np.mgrid[1: 6: complex(100),
2: 9: complex(100),
3: 6: complex(100)].reshape(3, -1).T
a = 1
start = time.time()
coord = open3d.create_mesh_coordinate_frame(1, [0, 0, 0])
coord_x = 0
vis.add_geometry(pcd)
while True:
start_time = time.time()
pcd.clear()
coord.clear()
pts[:, 0] = pts[:, 0] + 0.1
pcd.points = open3d.Vector3dVector(pts)
coord_x += 0.2
coord = open3d.create_mesh_coordinate_frame(1, [coord_x, 0, 0])
vis.add_geometry(coord)
vis.update_geometry()
vis.poll_events()
vis.update_renderer()
if time.time() - start > 30:
break
end_time = time.time()
process_time = end_time - start_time
print("Updating FPS = {0}".format(1.0 / process_time))
print('Processing time:', process_time)
vis.destroy_window()
Hallo @taochenshh. Das Problem wurde von vis.add_geometry(coord)
in der while-Schleife verursacht. Sobald eine neue Geometrie hinzugefügt wurde, setzt Visualizer den Ansichtspunkt automatisch zurück. Infolgedessen haben Sie das Gefühl, dass die Maussteuerung nicht funktioniert.
Die Schlüsselidee, um dieses Problem zu beheben, besteht darin, vis.add_geometry(coord)
nur einmal zu verwenden. Beispielsweise,
#########################################
# original code written by taochenshh
#########################################
while True:
:
coord = open3d.create_mesh_coordinate_frame(1, [coord_x, 0, 0])
vis.add_geometry(coord)
:
Versuchen Sie es so
###############################
# suggested code
###############################
vis.add_geometry(coord)
while True:
:
temp = open3d.create_mesh_coordinate_frame(1, [coord_x, 0, 0])
coord.vertices = temp.vertices
coord.triangles = temp.triangles
:
Mit dieser Änderung konnte ich den Standpunkt ändern.
Vielen Dank.
@syncle Wie kann ich den Ansichtspunkt in der Mitte des Fensters festlegen, ohne ihn kontinuierlich zurückzusetzen?
Ich habe es mit Punktwolken des Lidars des Autos zu tun, und wenn ich außerhalb des Fensters fahre, verschwinden Punktwolken und gehen aus dem Fensterrahmen.
Hilfreichster Kommentar
Hallo @taochenshh. Das Problem wurde von
vis.add_geometry(coord)
in der while-Schleife verursacht. Sobald eine neue Geometrie hinzugefügt wurde, setzt Visualizer den Ansichtspunkt automatisch zurück. Infolgedessen haben Sie das Gefühl, dass die Maussteuerung nicht funktioniert.Die Schlüsselidee, um dieses Problem zu beheben, besteht darin,
vis.add_geometry(coord)
nur einmal zu verwenden. Beispielsweise,Versuchen Sie es so
Mit dieser Änderung konnte ich den Standpunkt ändern.