拍摄 '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}
对象作为第三个参数来初始化引擎。
但不幸的是,这会毁掉你的 canvas 表演。
See more about it here.
我不是 Babylonjs 的真正专家,我没有找到从 scene.render
方法进行调用的方法,我们可以使用由提出的标志方法
@CapsE。但是有一个 BABYLON.Tools.CreateScreenshot(engine, camera, size)
方法,它会从你的场景中制作一个可下载的 png ;也许这可以帮到你。
我正在尝试拍摄 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}
对象作为第三个参数来初始化引擎。
但不幸的是,这会毁掉你的 canvas 表演。
See more about it here.
我不是 Babylonjs 的真正专家,我没有找到从 scene.render
方法进行调用的方法,我们可以使用由提出的标志方法
@CapsE。但是有一个 BABYLON.Tools.CreateScreenshot(engine, camera, size)
方法,它会从你的场景中制作一个可下载的 png ;也许这可以帮到你。