首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rgl随深度、深度而褪色

rgl随深度、深度而褪色
EN

Stack Overflow用户
提问于 2020-01-10 09:02:52
回答 2查看 171关注 0票数 0

如何在rgl中以淡出效果显示更远的对象?

目前,给出一个三维散点图,R的rgl包以更小的尺寸显示更远的对象。然而,我仍然觉得很难感知物体的深度,特别是在绘制了许多点的时候。在下面的例子中,如果不旋转,就很难看出哪一点在另一点后面。

代码语言:javascript
复制
x <- 1:101
y <- rnorm(101, sd=15)
z <- x + rnorm(101, sd=15)
library(rgl)
plot3d(x,y,z, type='s')

但是在下面的图片中,很容易看到图片左边的点离得更远。如何在rgl中实现类似的效果?有一个alpha参数,但这不取决于每个点的深度。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-14 02:36:29

OpenGL支持"fog",rgl为您提供了一些控制权,尽管如何获得它还不太明显。但是,如果在大多数函数之前运行它,则这是可行的:

代码语言:javascript
复制
r3dDefaults$material$fog <- TRUE
r3dDefaults$bg$fogtype <- "linear"

如果您希望显示器的某些部分褪色,而另一些则不想淡出,请使用fog = FALSE设置非雾气部件的材质。这通常是默认的。

fog类型的选择是c("none", "linear", "exp", "exp2")。对于线性雾,您的示例如下所示:

如果你想让雾只影响点,你可以这样做:

代码语言:javascript
复制
r3dDefaults$material$fog <- FALSE
r3dDefaults$bg$fogtype <- "linear"
plot3d(x, y, z, type = "s", fog = TRUE)

这是因为材料特性只应用于数据,而不是轴。我认为这个版本看起来更好,但是你的品味可能会有所不同:

一个限制: fog目前不受rglwidget()生成的rglwidget()代码的支持。

编辑:在评论中指出,调用bgplot3d可以消除迷雾。在rgl版本中,这是一个高达0.100.33的错误,已经修正为0.100.34。有关从哪里得到它,请参见How do I install the latest version of rgl?

编辑2: -- rgl的开发版本(目前为0.102.4) --现在在WebGL和R中都支持fog;对于fogtype = "exp"fogtype = "exp2",显示方式有点不同;我认为它实际上看起来更好。

票数 2
EN

Stack Overflow用户

发布于 2020-01-10 09:38:44

如何为alpha生成一个新变量:

代码语言:javascript
复制
x <- 1:101
y <- rnorm(101, sd=5)
z <- x + rnorm(101, sd=15)
a <-11/(order(z) +10)
library(rgl)
plot3d(x, y, z, type = 's', 
       alpha = a)

您可能希望在a <- 11/(order(z) + 10中调整这些值,以获得您喜欢的外观。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59678417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档