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您是否尝试了一个简单的示例?