WebGL削减部分3D图像(在RGL查看器中正常工作)

时间:2017-03-29 12:01:28

标签: r webgl rgl

我正在尝试从plot3D()函数导出3D绘图,如下所示:

library(maptools)
library(raster)
srtm <- getData("SRTM", lon=-15.59972, lat=27.965)

library(rgdal)
library(rasterVis)
library(rgl)
library(htmlwidgets)

open3d() # Open a new RGL device
plot3D(srtm)

当我在R中运行代码时,一切正常。该图在RGL设备窗口中正确呈现。

然而,当我想要导出到html或将其嵌入RMarkdown时,3D绘图的一部分会被切断。

通过以下链接,您可以看到

中的html
writeWebGL(dir = "webGL", filename = file.path(getwd(), "index.html"), width = 1000, height = 1000)

browseURL(paste("file://", writeWebGL(dir=file.path(getwd(), "webGL"), width=1000), sep=""))

html from writeWebGL

我还尝试了以下方法将情节嵌入到RMarkdown中:

library(knitr)
knit_hooks$set(webgl = hook_webgl)
options(rgl.printRglwidget = TRUE)

open3d()
plot3D(srtm)
rglscene <- scene3d()
# render the saved rgl scene as widget in the markdown page
rglwidget(rglscene,webGLoptions = list(preserveDrawingBuffer = FALSE))

Here is the RMarkdown that got produced

有人知道为什么情节会在html中被删除吗?如果我描绘其他国家,我也会看到同样的情况,顺便说一下。谢谢!

1 个答案:

答案 0 :(得分:1)

正如文档在?writeWebGL中所说,在许多浏览器中,WebGL中的对象中有65536个顶点的限制。你的表面物体是316乘316,它给它大约100000个顶点。您需要将其分解为两个或更多个部分,或以较低的分辨率绘制它。