を試みることができます。シーンとそのオブジェクトのサイズに応じて、時間がかかることがあります。私の場合、オブジェクトのかなり小さなバージョンを返すが、400x400px pngで応答するのに約400msかかる。これが誰かを助けることを願っています!
Server.js
var THREE = require("three.js");
// Create a DOM
var MockBrowser = require('mock-browser').mocks.MockBrowser;
var mock = new MockBrowser();
var document = MockBrowser.createDocument();
var window = MockBrowser.createWindow();
//REST API
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var gl = require('gl')(1,1); //headless-gl
var pngStream = require('three-png-stream');
var port = process.env.PORT || 8080;
router.get('/render', function(req, res){
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, this.width/this.height, 0.1, 1000);
var renderer = new THREE.WebGLRenderer({context:gl});
scene.add(camera);
renderer.setSize(this.width, this.height);
renderer.setClearColor(0xFFFFFF, 1);
/*...
Add your objects & light to the scene
...*/
var target = new THREE.WebGLRenderTarget(this.width, this.height);
renderer.render(scene, camera, target);
res.setHeader('Content-Type', 'image/png');
pngStream(renderer, target).pipe(res);
});
app.use('/api', router);
app.listen(port);
console.log('Server active on port: ' + port);
何がレンダリング結果をどうする予定ですか?ユーザーのブラウザにストリームを戻すか、ファイルに保存するか... ...? – Matey
@Mateyそれをユーザーにストリームしてpngとして返します。 – JakobMillah
一連のPNGをストリームしますか?または、1つのPNGファイルを送信しますか? – Matey