-1
任何人都知道如何將webgl動畫嵌入到powerpoint中。任何可以在服務器端用來捕獲動畫gif的工具?在PowerPoint中嵌入webgl或從webgl呈現動畫gif
我沒有讓它直接嵌入到webgl html中。
任何人都知道如何將webgl動畫嵌入到powerpoint中。任何可以在服務器端用來捕獲動畫gif的工具?在PowerPoint中嵌入webgl或從webgl呈現動畫gif
我沒有讓它直接嵌入到webgl html中。
你可以通過調用toDataURL()在
var canvas = document.createElement("canvas");
var gl = canvas.getContext("experimental-webgl");
function render() {
gl.clearColor(Math.random(), Math.random(), Math.random(), 1);
gl.clear(gl.COLOR_BUFFER_BIT);
// takes a 'screenshot' of the canvas.
var image = canvas.toDataURL();
requestAnimationFrame(render);
}
render();
爲讓那些截圖,你可以發送到服務器
...
var image = canvas.toDataURL();
var req = new XMLHTTPRequest();
req.open("POST", "http://localhost:8080", true);
var data = {
cmd: 'screenshot',
dataURL: image,
};
req.setRequestHeader("Content-type", "application/json");
req.send(JSON.stringify(data));
這裏動畫製作的WebGL的圖像是一個的node.js將屏幕截圖保存爲.png文件的服務器。然後你可以將它們加載到某個程序中,將它們變成gif。
var port = 8080
var screenshotCount = 0;
var http = require('http'),
url = require('url'),
fs = require('fs'),
util = require('util'),
path = require('path'),
querystring = require('querystring');
function postHandler(request, callback) {
var query_ = { };
var content_ = '';
request.addListener('data', function(chunk) {
content_ += chunk;
});
request.addListener('end', function() {
query_ = JSON.parse(content_);
callback(query_);
});
}
function sendJSONResponse(res, object) {
res.writeHead(200, {'Content-Type': 'application/json'});
res.write(JSON.stringify(object), 'utf8');
res.end();
}
function startsWith(str, start) {
return (str.length >= start.length &&
str.substr(0, start.length) == start);
}
function saveScreenshotFromDataURL(dataURL) {
var EXPECTED_HEADER = "data:image/png;base64,";
if (startsWith(dataURL, EXPECTED_HEADER)) {
var filename = "screenshot-" + (screenshotCount++) + ".png";
fs.writeFile(
filename,
dataURL.substr(
EXPECTED_HEADER.length,
dataURL.length - EXPECTED_HEADER.length),
'base64');
util.print("Saved Screenshot: " + filename + "\n");
}
}
server = http.createServer(function(req, res) {
// your normal server code
if (req.method == "POST") {
postHandler(req, function(query) {
switch (query.cmd) {
case 'screenshot':
saveScreenshotFromDataURL(query.dataURL);
sendJSONResponse(res, { ok: true });
break;
default:
util.print("err: unknown post: " + query + "\n");
break;
}
});
}
}),
server.listen(port);
請注意,服務器只保存屏幕截圖,它不提供文件(爲簡潔起見)。因此,您需要添加該功能或從其他服務器提供文件。
非常感謝,會嘗試 – user1786641 2013-04-08 09:42:03
我想你可以抓住你的屏幕顯示並製作一個視頻(例如Fraps或任何其他類似的軟件),然後編輯它只保留你的webgl窗口,然後將這個視頻插入你的powerpoint。 – Popov 2013-04-05 13:31:09
這篇文章http://stackoverflow.com/questions/15558418/how-do-you-save-an-image-from-a-three-js-canvas詳細如何從three.js得到截圖 – gaitat 2013-04-06 10:54:54