2016-03-06 1 views
2

Я пытался визуализировать изображения, используя официальный пакет three.js, three на npm с помощью пакета canvas на npm. Пока что не много удачи.Рендеринг на стороне сервера с помощью node-canvas.

Я считаю, что это должно быть возможным, поскольку холст узла (https://github.com/Automattic/node-canvas) является рендерером полного холста стека, я просто не знаю, как исправить мост между этой библиотекой и three.js, чтобы они работали вместе для серверных рендеринга

Вот мой подход не удалось:

следуя старой GitHub пост я сумел изменить начало файла three.js следующим образом:

var Canvas = require('canvas'); 

var self = self || {}; // File:src/Three.js 

var canvasWidth = 1024; 
var canvasHeight = 1024; 

var window = { 
    innerWidth: canvasWidth, 
    innerHeight: canvasHeight 
}; 

var document = { 
    createElement: function(name) { 
     if (name == "canvas") { 
      return new Canvas(canvasWidth, canvasHeight); 
     } 
    } 
}; 

теперь, когда я использую средство рендеринга для рендеринга, я не получаю ошибок.

renderer = new THREE.CanvasRenderer(); 

Не знаю, как я могу управлять этой штукой, чтобы вывести файл или вообще что-либо сделать.

Любая помощь понесена.

+0

вы пробовали это? http://stackoverflow.com/a/15563621/1689894 'toDataURL()' должен выводить данные png – vincent

+0

Нет, это не так, поскольку у них нет документа или окна, serveride. – Mia

+0

@vincent^забыл упомянуть вас – Mia

ответ

0

Библиотека использовать seems to provide toDataURL()

Таким образом, вы должны быть в состоянии сделать что-то вроде этого

renderer.render(); 
 

 
fs.writeFile('image.png', canvas.toDataURL(), function(){ 
 
    // done 
 
})

+0

нет, ну, библиотека не работает на стороне сервера. Это проблема, которую я испытываю, а не часть .toDataUrl(). – Mia

+0

Извините, со своего поста я понял, что вы хотите отображать на стороне сервера. На клиенте вы хотите сохранить изображение локально или отправить его на свой сервер? – vincent

+0

Я ничего не собираюсь отправлять. Я хочу использовать все на стороне сервера. Используйте библиотеки для рисования и рендеринга. Три использует canvas (с рендерером canvas), и уже есть библиотека canvas, поэтому я пытаюсь сделать three.js использовать эту холст-библиотеку, поскольку серверный код не запускается в браузере (нет документа или окна, которое может быть достигнуто через код)) – Mia