Javascript 使用节点画布渲染three.js服务器端?

Javascript 使用节点画布渲染three.js服务器端?,javascript,node.js,canvas,three.js,node-canvas,Javascript,Node.js,Canvas,Three.js,Node Canvas,我一直在尝试使用npm上的canvas包,在npm上使用官方的three.js包three渲染图像。到目前为止,运气不太好 我相信这应该是可能的,因为node canvas()是一个完整的堆栈画布渲染器,我只是不知道如何修复这个库和three.js之间的桥梁,使它们在服务器端渲染中协同工作 以下是我失败的方法: 通过遵循一篇旧的github帖子,我成功地修改了three.js文件的开头,如下所示: var Canvas = require('canvas'); var self = self

我一直在尝试使用
npm
上的
canvas
包,在
npm
上使用官方的three.js包
three
渲染图像。到目前为止,运气不太好

我相信这应该是可能的,因为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();
我不知道如何管理这个东西来输出文件或渲染任何东西

欢迎提供任何帮助。

您使用的库

所以你应该可以这样做

renderer.render();
fs.writeFile('image.png',canvas.toDataURL(),function()){
//完成

})
您试过这个吗
toDataURL()
应该输出png数据不,因为服务器端没有文档或窗口。@vincent^忘了提及您,所以您说
Canvas
元素上的
toDataURL()
不可用?@Insp node webgl在您没有专用硬件的情况下无法工作。它需要另外一堆虚拟化技巧才能正常工作,但不能保证。不,这个库在服务器端无法正常工作。这是我遇到的问题,而不是.toDataUrl()部分。对不起,从您的帖子中我了解到您希望在服务器端渲染。在客户端上,您希望将图像保存在本地,还是将其发送到服务器?我不会在任何地方发送任何内容。我想使用服务器端的所有东西。使用库绘制图像并进行渲染。Three使用canvas(带有canvas渲染器),并且已经有了一个canvas库,所以我尝试让Three.js使用该canvas库,因为服务器端代码不在浏览器上运行(没有可以通过代码访问的文档或窗口))。很快,我的问题是不保存图像。我的问题是“渲染”图像,正如它在第一篇文章中所说的。我不确定我是否得到了它:/n您是否尝试了一个简单的示例?