OpenGL поддерживает «туман», а rgl
дает вам некоторый контроль над ним, хотя не совсем понятно, как его получить. Тем не менее, это работает, если вы запускаете его перед большинством функций:
r3dDefaults$material$fog <- TRUE
r3dDefaults$bg$fogtype <- "linear"
Если вы хотите, чтобы некоторые части вашего дисплея исчезали, а другие нет, установите материал для частей без запотевания с помощью fog = FALSE
. Обычно это значение по умолчанию.
Варианты типа тумана: c("none", "linear", "exp", "exp2")
. С линейным туманом ваш пример выглядит следующим образом:
![screenshot](https://i.stack.imgur.com/6hNb9.png)
Если вы хотите, чтобы туман воздействовал только на точки, вы можете сделать это следующим образом:
r3dDefaults$material$fog <- FALSE
r3dDefaults$bg$fogtype <- "linear"
plot3d(x, y, z, type = "s", fog = TRUE)
Это работает, потому что свойства материала применяются только к данным, а не к осям. Я думаю, что эта версия выглядит лучше, но ваш вкус может отличаться:
![enter image description here](https://i.stack.imgur.com/Nt80O.png)
Одно ограничение: туман в настоящее время не поддерживается кодом WebGL, созданным rglwidget()
.
Редактировать: В комментариях было отмечено, что вызов bgplot3d
очищает туман. Это была ошибка в rgl
версиях до 0.100.33, которая была исправлена на 0.100.34. См. Как мне установить последнюю версию rgl? , где ее взять.