我正在尝试按照帮助和Internet示例在R中创建一个非常简单的3d线动画。这只是一个测试,我的最终目标是使用此功能直观地验证3d上某些几何变换的结果 - 我正在分析的运动数据。所以基本上我只需要一个“3D播放器”界面,它允许通常的交互(旋转,缩放,播放,停止,滑动)。
我发现rgl包完成了这项工作,我可以将它用于球/点动画。但现在我需要在线上使用它,我得到非常奇怪的结果。在下面的示例中,有4个点和两条线(青色和红色)连接相同的点,但红线由于某种原因在“错误”的位置。动画也没有意义。现在,我在想可能是不可能做>>使用多个属性为多个顶点设置动画效果?但我没有在文档中看到这一点,显然它是可能的,因为线是动画的!我花了很长时间试图弄清楚发生了什么,并会感谢任何帮助/建议/指示。非常感谢
Ps:下面的代码是markdown文件中的一个块,我正在使用Rstudio。
require(rgl)
require(rglwidget)
p11=c(0,0,0)
p21=c(50,50,0)
p12=c(50,0,0)
p22=c(10,50,50)
saveopts <- options(rgl.useNULL = TRUE)
did=list()
did[[1]]=plot3d(rbind(p11,p21,p12,p22), type="s", alpha = 1, lwd = 5, col = c('brown','darkgreen','orange','green'))
did[[2]]=spheres3d(c(100,100,100), alpha = 1, lwd = 5, col = "blue",radius=2)
did[[3]]=lines3d(rbind(p11,p21),lwd=8, col='cyan',alpha=.9)
did[[4]]=planes3d(0, 0, 1, 0, alpha=.4, col='green')
did[[5]]=lines3d(rbind(p11,p21),lwd=2, col='red')
aspect3d(1, 1, 1)
did[[6]]=grid3d(c("x-", "z-"),at = NULL,col = "gray",lwd = .5,lty = 1,n = 5)
sceneT = rglwidget(elementId = "plot3dT",width=500, height=300) #%>%
rgl.ids()
rgl.attrib(id=did[[3]],attrib = c(1:length(did[[3]])))
playwidget(sceneT,list(
vertexControl(values = rbind(c(0,0,0,0,0,0),c(50,50,50,50,50,50)),
vertices = 1:6, attributes = "z", objid = did[[4]], param = 1:2,interp =T),
vertexControl(values = r1,
vertices = 1:2, attributes = c('x',"y","z",'x',"y","z"), objid = did[[5]], param = 1:2,interp =T)),
start = 1, stop = 2, step = .1, precision = 3)
options(saveopts)