您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

open3d

51自学网 2023-07-14 22:03:37
  网站维护

当使用远程服务器时,我们希望能像在本地一样写完代码后能立刻出现一些gui窗口。但是目前网络上的资料都不能很好的解决这个问题。本文尝试尽可能简短地解决这个问题。

步骤

1、在服务器上安装open3d

已经非常简化了,可以使用一行代码完成

pip3 install open3d

2、下载x系列服务器

我们这里要使用VcXsrv。安装过程一路next就行。但是注意不要安装到c盘,可能会出现权限问题。注意:本人测试过常用的x系列软件xming和xmanager均无法完成open3d的远程可视化

3、配置

打开VcXsrv安装目录下的X0.hosts 文件并输入你的服务器ip

在这里插入图片描述

在这里插入图片描述

打开同目录下的Xlauch

直到这里,非常重要,勾选如下。

在这里插入图片描述

成功设置后将看到右下角,这里注意0即为你的端口号。

在这里插入图片描述

vscode

在**本机(并非是服务器)**vscode的扩展商店中安装Remote-SSH和Remote X11(SSH)

并在SSH设置中输入以下三行

在这里插入图片描述

远程服务器

可以在vim ~/.bashrc中 最后加入

 export DISPLAY="本机ip:端口号" 

并source ~/.bashrc

注意检查:

echo $LIBGL_ALWAYS_INDIRECT

若非空或者是1,则将其置为0以上操作完成后,在终端输入xclock应该能显示一个小时钟。

运行测试程序

import numpy as npimport open3d as o3dpoints = np.random.rand(10000, 3)point_cloud = o3d.geometry.PointCloud()point_cloud.points = o3d.utility.Vector3dVector(points)o3d.visualization.draw_geometries([point_cloud])

成功应该是如下图所示,并且可以拖动窗口和改变视角

在这里插入图片描述

可能的原因

在远程交互过程中,open3d需要显示器创建上下文。但是远程服务器是没有图形化界面的,因此需要通过x服务器来转发到本地。通过之前的步骤,远程服务器就可以直接操纵本地的gpu环境,从而进行可视化。

参考资料

https://github.com/isl-org/Open3D/issues/897

可能的其他解决方案

1、web可视化

web可视化

import open3d as o3dfrom open3d.web_visualizer import drawcube_red = o3d.geometry.TriangleMesh.create_box(1, 2, 4)cube_red.compute_vertex_normals()cube_red.paint_uniform_color((1.0, 0.0, 0.0))draw(cube_red)

即可完成在jupyter中的可视化。但是vscode插件好像暂时不支持。可以将服务器映射到本地端口进行显示,有待进一步完善步骤。

2、headless渲染

这个可以将渲染的图片全都保存下来。


下载地址:
Docker部署Nginx设置环境变量的实现步骤
Docker部署Mysql数据库步骤详解
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1