Od toDataURL to metoda elementu canvas html, który będzie działał na 3D kontekście zbyt. Ale musisz zająć się kilkoma rzeczami.
Upewnij się, gdy kontekst 3D jest inicjowany ustawić preserveDrawingBuffer
flagę prawda, tak jak poniżej:
var context = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});
Następnie użytkownik canvas.toDataURL()
aby uzyskać obraz
W threejs ty będzie musiał wykonać następujące czynności, gdy renderer jest tworzony:
new THREE.WebGLRenderer({
preserveDrawingBuffer: true
});
Należy również pamiętać, że może to mieć wpływ na wydajność. (Czytaj: https://github.com/mrdoob/three.js/pull/421#issuecomment-1792008)
To tylko dla WebGL renderujący, w przypadku threejs canvasRenderer choć można po prostu zrobić renderer.domElement.toDataURL();
bezpośrednio, bez parametru inicjalizacji potrzebne.
Mój internetowy eksperyment: http://jsfiddle.net/TxcTr/3/ naciśnij "p", aby zrzutu ekranu.
Rekwizyty do gaitat, Właśnie podążałem za linkiem w jego komentarzu, aby dostać się do tej odpowiedzi.
Nie jestem pewien, można. Płótno 2D obsługuje to, ale uważam, że płótno WebGL tego nie robi. –
Zobacz https://github.com/jeromeetienne/threejsboilerplate/blob/master/vendor/threex/THREEx.screenshot.js – gaitat