Moo*_*oks 11
我一直在尝试自己解决这个问题,我认为我有保持用户修改的交互式情节的视角的答案.view3d只影响已打开窗口中的透视,关键是在实际生成绘图之前使用open3d设置窗口和透视图.
换句话说,我们实际上并不需要使用phi和theta角度信息(直接).一旦你生成了一个交互式绘图并获得了你喜欢的视角(你可能想要调整窗口大小或者图像抓取太小),类似下面的内容将提取所需的信息:
zoom<-par3d()$zoom
userMatrix<-par3d()$userMatrix
windowRect<-par3d()$windowRect
Run Code Online (Sandbox Code Playgroud)
然后,下面将打开一个所需大小和透视(和缩放)的窗口,生成绘图,然后抓取图像.
open3d(zoom = zoom, userMatrix = userMatrix, windowRect=windowRect)
perps3d(x=x,y=y,z=z) # plus whatever arguments you need, but ignoring all perspective arguments
rgl.snapshot( filename, fmt="png", top=TRUE)
Run Code Online (Sandbox Code Playgroud)
这是基本思想,可用于自动生成相同视角的图形.您也可以根据需要使用par3d中的scale或fov参数,以及提取和使用信息的相同想法.我认为以上是阿里需要的东西.
在自动生成多个绘图时调用persp3d有点不优雅,因为该功能实际上是为交互式绘图而设计的.我怀疑你可以使用par3d的信息userMatrix,zoom,fov,scale等,以及一些数学(比如阿里)来确定phi,theta,r和d,并将它们直接放入persp中 - 而不是每次都处理persp3d情节,但我没有测试过.
无需提取视角。您可以提取 userMatrix
um <- par3d()$userMatrix
Run Code Online (Sandbox Code Playgroud)
然后使用
view3d(userMatrix = um)
Run Code Online (Sandbox Code Playgroud)
视角将恢复。
| 归档时间: |
|
| 查看次数: |
3573 次 |
| 最近记录: |