2017-03-29 1 views
0

ich versuche, wie so ein 3D-Plot aus der plot3D() Funktion zu exportieren:WebGL schneidet Teil des 3D-Bildes (funktioniert in RGL Betrachter fein)

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) 

Wenn ich den Code in R laufen, funktioniert alles einwandfrei . Das Diagramm wird im RGL-Gerätefenster korrekt gerendert.

Wenn ich jedoch entweder zu HTML exportieren oder es in einem RMarkdown einbetten möchte, wird ein Teil des 3D-Plots geschnitten.

über den Link unten, können Sie die HTML-sehen von

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

oder

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

html from writeWebGL

Ich versuchte auch, die im Anschluss an die Handlung in einem RMarkdown einzubetten:

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

Weiß jemand, warum die Handlung im HTML geschnitten wird? Ich sehe das gleiche, wenn ich andere Länder plotte, BTW. Vielen Dank!

+1

Ich denke, Sie werden ein reproduzierbares Beispiel schreiben müssen. Wir können nicht sehen, was Sie in R sehen, und wir können nicht nur auf der WebGL-Ausgabe debuggen. – user2554330

+0

7,59 MB html ... –

Antwort

1

Da die docs sagen in ?writeWebGL, gibt es eine Grenze von 65.536 Knoten in Objekten in WebGL in vielen Browsern. Ihr Oberflächenobjekt ist 316 mal 316, was ungefähr 100000 Vertices ergibt. Sie müssen es in zwei oder mehr Teile aufteilen oder es mit niedrigerer Auflösung plotten.

+0

Vielen Dank! Ich habe Maxpixel in plot3D() gesenkt, das hat den Trick gemacht. –

Verwandte Themen