我正在尝试运行 rgl闪亮应用程序,它在我的计算机上运行良好,但在www.shinyapps.io上崩溃。
我怀疑 1GB 内存不够,正如shinyapps.io日志告诉我的那样
Container event from container-8564782: oom (out of memory)
。
在一个rglwidget()中是6个triangle3d()相对复杂的对象。按钮创建这 6 个对象的新翻译并将其绘制在新的 rgl 对象中。我尝试将
lit=FALSE
放入对象中以节省内存,但它仍然崩溃(但并不总是如此)。
我还怀疑创建新对象时 rgl 对象不会从内存中删除。所以我尝试了 rglwidget 选项(reuse=NA, webGLoptions = list(preserveDrawingBuffer = FALSE)
),但是部署测试效率不是很高...
欢迎任何指点!
https://colomb.shinyapps.io/RANDOMstage/ 代码核心:
observe({
input$randomise
#### Create a random position of each objects using translate3d, plot them using triangle3d.
amessage = random_obj( objects= objects, position_tot =position_tot, messagesday=messagesday, colorpalette=palette("Okabe-Ito"))
output$rglPlot <- renderRglwidget({
createboden()
view3d (theta = 0, phi = -88, zoom = 0.8, fov = 60)
outputwidget = rglwidget(reuse=NA, webGLoptions = list(preserveDrawingBuffer = FALSE))
outputwidget
})
一个主要问题是物体的大小。由于对象是通过
readSTL()
读取的 STL 对象,因此我首先使用第三方软件最小化了对象的复杂性。 (https://3dless.com,对象从 6MB 增加到 100 kB)。
现在它使用更少的内存并在服务器上运行。