如何在 rgl 中画满 window?

How to draw to the full window in rgl?

我在 rgl 中绘制 4 个子图到 window,我希望它们填充可用的 space:

library(rgl);
rgl::open3d(windowRect = c(0,50, 1200, 1200));
rgl::mfrow3d(2, 2);


rgl::next3d(reuse=FALSE);
rgl::bg3d("yellow");

rgl::next3d(reuse=FALSE);
rgl::bg3d("blue");

rgl::next3d(reuse=FALSE);
rgl::bg3d("red");

rgl::next3d(reuse=FALSE);
rgl::bg3d("green");

然而,结果只使用了 window 的一小部分,看起来像这样:

如何让 4 个彩色区域覆盖整个 window,而不是只使用左下角的小部分?

我不确定这是否是您正在寻找的确切解决方案,但是运行您的代码作为函数对我有用。

make_box <- function(){library(rgl)
 rgl::open3d(windowRect = c(0,50, 1200, 1200))
 rgl::mfrow3d(2, 2)


 rgl::next3d(reuse=FALSE)
 rgl::bg3d("yellow")

 rgl::next3d(reuse=FALSE)
 rgl::bg3d("blue")

 rgl::next3d(reuse=FALSE)
 rgl::bg3d("red")

 rgl::next3d(reuse=FALSE)
 rgl::bg3d("green")}
 make_box()

它帮助了我好几个小时,但我终于设法靠自己让它可靠地工作。看来你必须在 open3d() 之后调用 par3d()。

另请注意对 Sys.sleep 的调用,正如 user20650 在上述评论中所建议的那样。没有它,window 只有在点击它(在我的机器上?)后才会以全尺寸绘制。

完整的工作代码:

rgloptions = list("windowRect"=c(50,50,1000,1000));

rgl::open3d();
do.call(rgl::par3d, rgloptions);
Sys.sleep(1);
rgl::mfrow3d(2, 2);

rgl::next3d(reuse=FALSE);
rgl::bg3d("yellow");

rgl::next3d(reuse=FALSE);
rgl::bg3d("blue");

rgl::next3d(reuse=FALSE);
rgl::bg3d("red");

rgl::next3d(reuse=FALSE);
rgl::bg3d("green");

这可靠地给出了以下输出: