Da die toDataURL ist eine Methode der Leinwand html-Element, das auch für 3D-Kontext funktionieren wird. Aber du musst auf ein paar Dinge aufpassen.
Stellen Sie sicher, wenn die 3D-Kontext Sie preserveDrawingBuffer
Flag auf true gesetzt initialisiert wird, etwa so:
var context = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});
Dann Benutzer canvas.toDataURL()
das Bild
In threejs erhalten Sie müsste Folgendes ausführen, wenn der Renderer instanziiert wird:
new THREE.WebGLRenderer({
preserveDrawingBuffer: true
});
Denken Sie auch daran, dass dies Auswirkungen auf die Leistung haben kann. (Lesen Sie: https://github.com/mrdoob/three.js/pull/421#issuecomment-1792008)
Dies ist nur für webgl Renderer, bei threejs canvasRenderer aber Sie einfach renderer.domElement.toDataURL();
tun kann direkt, keine Initialisierung Parameter benötigt.
Mein Webgl-Experiment: http://jsfiddle.net/TxcTr/3/ drücken Sie 'p' zum Screenshot.
Requisiten zu gaitat, ich folgte nur dem Link in seinem Kommentar, um zu dieser Antwort zu gelangen.
Ich bin nicht sicher, Sie können. 2D-Canvas unterstützt dies, aber ich glaube, dass ein WebGL-Canvas dies nicht tut. –
Werfen Sie einen Blick auf https://github.com/jeromeetienne/threejsboilerplate/blob/master/vendor/threex/THREEx.screenshot.js – gaitat