我正在处理相对较新的文档 - WebGL中的用户交互(2017年3月8日) https://cran.r-project.org/web/packages/rgl/vignettes/WebGL.html
大约2/3的页面是下面的代码示例,它执行"复杂"剧情的旋转动画:
M <- r3dDefaults$userMatrix
fn <- par3dinterp(time = (0:2)*0.75, userMatrix = list(M,
rotate3d(M, pi/2, 1, 0, 0),
rotate3d(M, pi/2, 0, 1, 0)) )
rglwidget() %>%
playwidget(par3dinterpControl(fn, 0, 3, steps=15),
step = 0.01, loop = TRUE, rate = 0.5)
我想做一些更简单的事情 - 以恒定速率围绕z轴旋转绘图但我的noggin似乎缺少关于时间规范的基本内容和值函数的评估....我可以得到它旋转部分路径360度然后向后摆动,但不要继续往返......请帮助。
提前致谢 亚历
[我正在尝试对以下内容进行排列....
M <- r3dDefaults$userMatrix
fn <- par3dinterp(time = 0:3, userMatrix = list(M,
rotate3d(M, pi/2, 0, 0, 1),
rotate3d(M, pi, 0, 0, 1), M) )
rglwidget() %>%
playwidget(par3dinterpControl(fn, 0, 2, steps=15),
step = 0.01, loop = TRUE)
]
答案 0 :(得分:1)
对于简单旋转,请使用spin3d()
而不是par3dinterp()
。 (你应该可以使用后者,但正如你所见,很难做到正确;事实上,我认为它插入的方式有一个错误。)
例如,要以5 rpm(spin3d()
默认值)旋转,完整旋转需要12秒。你想要这样的东西:
fn <- spin3d()
rglwidget() %>%
playwidget(par3dinterpControl(fn, 0, 12, steps = 40),
step = 0.01)
40个步骤的选择有点随意,但你不希望这个数字太小,因为当它在这些步骤之间进行插值时,你会得到场景的扭曲。另一方面,它放在网页中的数据量与该值成正比,因此您不希望它不必要地大。