拍摄 'snapshot' of babylonjs 场景有时有效,有时无效

taking a 'snapshot' of babylonjs scene sometimes works, sometimes doesn't

我正在尝试拍摄 babylon3d 场景的 'snapshot' ...换句话说:我正在尝试在用户按下按钮时克隆 babylon3d canvas,然后附加新 <canvas><body> .. 有时有效,但有时无效。

但是,如果我使用简单的 canvas(即通过使用 fillRect),cloning/appending 总是按预期工作。

我已经在 plunker 上设置了一个测试来证明我的问题:plunker:一遍又一遍地按下按钮,看看它在巴比伦场景中的表现如何。 AND 注意:您可以在 _jquery(document).ready(...) 处理程序中在简单 canvas 和巴比伦 canvas 之间切换。

thanks, Shannon

这是因为来自 version 2.3.0 of Babylonjs :

Engine now initialize WebGL with preserveDrawingBuffer = false by default.

您需要通过传递 {preserveDrawingBuffer: true} 对象作为第三个参数来初始化引擎。

Forked plnkr

但不幸的是,这会毁掉你的 canvas 表演。

See more about it here.

我不是 Babylonjs 的真正专家,我没有找到从 scene.render 方法进行调用的方法,我们可以使用由提出的标志方法 @CapsE。但是有一个 BABYLON.Tools.CreateScreenshot(engine, camera, size) 方法,它会从你的场景中制作一个可下载的 png ;也许这可以帮到你。