2016-02-05 1 views
0

Я пытаюсь взять «снимок» сцены babylon3d ... другими словами: я пытаюсь клонировать полотно babylon3d, когда пользователь нажимает кнопку, а затем добавьте новый <canvas> в <body> .. Иногда он работает, но в других случаях это не так.снятие «моментального снимка» сцены babylonjs иногда работает, иногда нет

Однако, если я использую простой холст (то есть, используя fillRect), клонирование/добавление всегда работает так, как ожидалось.

Я установил тест на плункер, чтобы продемонстрировать свою проблему: plunker: нажмите кнопку снова и снова, чтобы увидеть, как спорадически она ведет себя, когда есть сцена Babylon. И ПРИМЕЧАНИЕ: Вы можете переключаться между простым холстом и холстом babylon из обработчика _jquery (document) .ready (...).

thanks, Shannon 

ответ

0

Это происходит потому, что из version 2.3.0 of Babylonjs:

двигателя в настоящее время инициализации WebGL с preserveDrawingBuffer = FALSE по умолчанию.

Нужно инициализировать двигатель, передав объект {preserveDrawingBuffer: true} в качестве третьего параметра.

Forked plnkr

Но это, к сожалению, убить выступления холст.

See more about it here.

Я на самом деле не специалист Babylonjs, и я не нашел способ сделать вызов из scene.render метода, где мы могли бы использовать метод, предложенный флаг @CapsE. Но есть метод BABYLON.Tools.CreateScreenshot(engine, camera, size), который сделает загружаемый png из вашей сцены; может быть, это может вам помочь.

Смежные вопросы