At Instructables.com (one of Autodesk's properties), we encountered the same issue with the Derivatives API; we also needed thumbnails larger than the 400x400 images provided by the Forge API.
If you're using Nodejs, you can use our open-sourced thumbnailer that generates STL thumbnails on the server side very quickly:
https://www.npmjs.com/package/node-stl-thumbnailer
The approach here creates a threejs scene on the server side, then renders it using the CanvasRenderer and node-canvas. As such, it has no dependencies on a web browser, GPU, or other front-end technologies. Because it's not a raytracer, it does not come with the computation overhead that a full rendering service would, but it also comes with limitations. There is no support for shadows, lighting, or materials, among other issues.
The demo project shows a quick expressjs app that will accept the URL for an STL, and return a thumbnail of the requested size synchronously.
The code looks like this:
// index.js
var StlThumbnailer = require('node-stl-thumbnailer');
var app = require("express")();
app.get('/thumbnailer', function(req, res, next) {
var thumbnailer = new StlThumbnailer({
url: req.query.url,
requestThumbnails: [
{
width: 500,
height: 500,
}
]
})
.then(function(thumbnails){
// thumbnails is an array (in matching order to your requests) of Canvas objects
// you can write them to disk, return them to web users, etc
thumbnails[0].toBuffer(function(err, buf){
res.contentType('image/png');
res.send(buf)
})
})
.catch(function(err){
res.status(500);
res.send("Error thumbnailing: "+err);
});
});
app.listen(3000, function () {
console.log('Listening on port 3000\n')
});
And here's a sample "rendering":
Sample Thumbnailer Output