使用衍生 API 我发现生成的缩略图非常暗,这是查看器的屏幕截图:
这是自动生成的缩略图的截图:
上传的文件是一个 STL 文件。
如何生成看起来像预览的缩略图?
谢谢!
不幸的是,目前无法控制使用 Derivatives API 生成缩略图。
我们有一个 Render-as-a-service API,它将在某个时候发布,但它还没有可用。
目前唯一的解决方法是在查看器中加载模型并对其进行截图。有一个用于生成屏幕截图的 API,请参阅我的博客文章,因此该过程可以自动化,但模型必须在浏览器中呈现。
希望有帮助
在 Instructables.com(Autodesk 的资产之一),我们遇到了与衍生 API 相同的问题;我们还需要比 Forge API 提供的 400x400 图像更大的缩略图。
如果您使用的是 Nodejs,您可以使用我们的开源缩略图器,它可以非常快速地在服务器端生成 STL 缩略图:
https://www.npmjs.com/package/node-stl-thumbnailer
这里的方法是在服务端创建一个threejs场景,然后使用CanvasRenderer和node-canvas进行渲染。因此,它不依赖于 Web 浏览器、GPU 或其他前端技术。因为它不是光线追踪器,所以它没有完整渲染服务的计算开销,但它也有限制。除其他问题外,不支持阴影、照明或材质。
演示项目展示了一个快速的 expressjs 应用程序,它将接受 STL 的 URL,并同步返回请求大小的缩略图。
代码如下所示:
// 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')
});
这是一个示例“渲染”: