OpenGL 支持“雾”,rgl 可以让您对其进行一些控制,尽管如何获得它并不完全清楚。但是,如果您在大多数功能之前运行它,这将有效:
r3dDefaults$material$fog <- TRUE
r3dDefaults$bg$fogtype <- "linear"
如果您希望显示的某些部分淡出而其他部分不淡出,请使用fog = FALSE 设置非雾化部分的材质。这通常是默认设置。
雾类型的选择是c("none", "linear", "exp", "exp2")。使用线性雾,您的示例如下所示:
如果你想让雾只影响点,你可以这样做:
r3dDefaults$material$fog <- FALSE
r3dDefaults$bg$fogtype <- "linear"
plot3d(x, y, z, type = "s", fog = TRUE)
这是可行的,因为材料属性仅适用于数据,而不适用于轴。我觉得这个版本看起来更好,但你的口味可能会有所不同:
一个限制:rglwidget() 生成的 WebGL 代码目前不支持雾。
编辑: 在 cmets 中指出,调用 bgplot3d 可以清除迷雾。这是rgl 最高版本 0.100.33 中的错误,已在 0.100.34 中修复。请参阅 How do I install the latest version of rgl? 了解获取途径。
编辑 2:rgl 的开发版本(当前为 0.102.4)现在支持 WebGL 和 R 中的雾。fogtype = "exp" 和 @987654337 的显示略有不同@;我认为它实际上看起来更好。