Windows11 64位下R rgl lidR渲染缓慢及树顶显示异常求助
lidR中locate_trees函数rgl渲染问题的解决方案
一、rgl显卡使用逻辑
rgl默认优先调用GPU渲染,但如果系统图形设置未指定R使用独立显卡,可能会 fallback 到集成显卡。你可以通过以下命令确认当前rgl使用的设备:
rgl::rgl.info()
如果输出显示使用集成显卡,需在系统图形设置中(比如Windows「图形设置」)将R.exe设置为「高性能Nvidia处理器」,强制R调用独立显卡。
二、渲染加速方法
- 抽稀LiDAR点云:1.7GB的点云数据量过大,手动修正前先抽稀点云保留核心信息,大幅降低渲染负载:
# 按比例抽稀,保留60万点(可根据需求调整数量) LiDAR_sampled = filter_poi(LiDAR_File, sample(1:npoints(LiDAR_File), 600000)) - 调整rgl渲染参数:减少点大小、关闭不必要的渲染效果:
rgl::par3d(pointsize = 1) # 缩小点尺寸 rgl::rgl.light(enabled = FALSE) # 关闭光照加速渲染 - 限制渲染区域:如果只需要修正特定区域的树顶,先裁剪点云到目标区域:
# 裁剪到指定范围(替换为你的目标区域坐标) LiDAR_clipped = clip_rectangle(LiDAR_File, xleft=1000, ybottom=2000, xright=1500, ytop=2500)
三、窗口异常问题解决
- 更新rgl版本:R 4.2.1搭配的旧版rgl可能存在兼容性bug,安装适配的二进制版本:
install.packages("rgl", type = "binary") - 强制清理rgl窗口:遇到持续弹出空白窗口时,执行以下命令关闭所有rgl会话:
之后重启R会话再重新运行代码。rgl::closeall() - 手动初始化rgl窗口:在调用
locate_trees前手动打开rgl窗口,避免自动窗口管理的异常:rgl::rgl.open() TTops_Manual = locate_trees(LiDAR_sampled, manual(TTops))
优化后的完整代码示例
library(lidR) # 检查rgl设备信息 rgl::rgl.info() # 导入并抽稀LiDAR数据 LiDAR_File = readLAS("path/file_name.las") LiDAR_sampled = filter_poi(LiDAR_File, sample(1:npoints(LiDAR_File), 600000)) # 调整rgl渲染参数 rgl::par3d(pointsize = 1) rgl::rgl.light(enabled = FALSE) # 查找树顶并手动修正 TTops = find_trees(LiDAR_sampled, lmf(ws = 15, hmin = 5)) TTops_Manual = locate_trees(LiDAR_sampled, manual(TTops)) # 异常时关闭所有rgl窗口 # rgl::closeall()
内容的提问来源于stack exchange,提问作者Ed_Gravy
相关产品推荐
相关产品推荐

