2016-11-16 54 views
2

我有一个数据帧随着时间的推移,tx,一个人走的x:0-520y:0-300已知地图上的坐标y创建动画与PNG背景XY图。我想创建一个人在每个t步行的动画与背景的情节是地图。R:使用saveVideo()和rasterImage(太慢)

我尝试使用动画包中的saveVideo(),但没有先显示背景,它运行良好。当我尝试使用rasterImage()添加背景时,在背景中绘制PNG需要太多时间,因为它会在每个循环中从头开始绘制PNG。

有没有一种方法可以通过不让rasterImage()在每个循环上运行来加速此过程?

是否可以删除绘制点并绘制一个新点,以便我不必再次运行rasterImage()

您的帮助将不胜感激!

下面是我的代码: 一个是x数据帧,yt栏目

saveVideo({ 
ani.options(interval = 1/100, nmax = 50) 
xy = a[,1:2] 
t = a$t 
ima <- readPNG("floorplan.png") 
for (i in 600:800) { 
    plot(xy[i,], xlim = c(0,520),ylim = c(0,300)) 

    ####to plot my png as background. works fine if this section is omitted 
    lim <- par() 
    rasterImage(ima, lim\$usr[1], lim\$usr[3], lim\$usr[2], lim\$usr[4]) 
    ##### 


    legend('topright',legend=paste('time =',i), bty='n') 
    ani.pause() 
    } 
},movie.name = "pathBG.mp4") 

回答

0

由于R是主要是统计工具,而不是裸机编程语言,它不具有大量支持高性能图形的开箱即用。

要改善生成动画的性能,最好的方法是使用RGL包。这使您可以使用机器的图形硬件来显示图形。您可以设置一次RGL场景,然后重新使用它来制作动画所需的所有快照,因此不需要很长的加载时间!

下面是要采取的步骤:

  1. 为背景,无论你的PNG安装RGL包
  2. 设置场景,或作为框对象上的材料。定位你的行走者。
  3. 从第3步

拍摄快照的场景并保存PNG

  • 移动你行走的人位置
  • 重复有关代码示例看到从优秀岗位Guillaume Fillion,here