>
目錄
- 步驟
- 1、在服務器上安裝open3d
- 2、下載x系列服務器
- 3、配置
- vscode
- 遠程服務器
- 運行測試程序
- 可能的原因
- 可能的其他解決方案
當使用遠程服務器時,我們希望能像在本地一樣寫完代碼后能立刻出現一些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 np import open3d as o3d points = 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 o3d from open3d.web_visualizer import draw cube_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渲染
這個可以將渲染的圖片全都保存下來。
>