You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下VSCode远程运行R时rgl窗口无法弹出求助

解决方案:远程HPC中VSCode运行R的rgl 3D窗口不显示问题

1. 本地先搭好X服务器环境

  • Windows:安装VcXsrv,启动时勾选「Disable access control」,保持后台运行。
  • macOS:安装XQuartz,启动后在偏好设置的「Security」里勾选「Allow connections from network clients」,重启XQuartz生效。
  • Linux:系统自带X服务器,确保正常运行即可。

2. 开VSCode SSH扩展的X11转发

打开VSCode设置(快捷键Ctrl+,),编辑settings.json添加以下配置:

"remote.SSH.enableX11Forwarding": true,
"remote.SSH.remoteServerListenOnSocket": false

保存后重新连接HPC服务器。

3. 验证X11转发是否生效

在VSCode的远程终端里跑:

echo $DISPLAY

输出如果是localhost:10.0这类格式,说明转发成功;要是为空,就得检查下一步的服务端配置。

4. 检查HPC的SSH服务端X11配置(若前面步骤无效)

登录HPC后查看/etc/ssh/sshd_config,确保以下配置未被注释:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

修改后需要重启SSH服务:

sudo systemctl restart sshd

(普通用户没权限的话,联系HPC管理员操作)

5. 强制rgl用X11后端渲染

在R代码开头加一行强制启用图形设备:

library(rgl)
options(rgl.useNULL = FALSE) # 禁用无图形后端

vertices <- c( 
     -1.0, -1.0, 0,
      1.0, -1.0, 0,
      1.0,  1.0, 0,
     -1.0,  1.0, 0
  )
indices <- c( 1, 2, 3, 4 )
  
open3d()  
wire3d( mesh3d(vertices = vertices, quads = indices) )

6. 替代方案:用WebGL生成可交互HTML

如果X11转发受限于权限或性能,直接生成HTML文件本地打开:

library(rgl)
library(htmlwidgets)

vertices <- c( 
     -1.0, -1.0, 0,
      1.0, -1.0, 0,
      1.0,  1.0, 0,
     -1.0,  1.0, 0
  )
indices <- c( 1, 2, 3, 4 )
  
open3d(useNULL = TRUE)
wire3d( mesh3d(vertices = vertices, quads = indices) )
saveWidget(rglwidget(), "rgl_3d_plot.html")

把生成的rgl_3d_plot.html下载到本地,用浏览器打开就能自由旋转3D对象。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:50:22