0

使用衍生 API 我发现生成的缩略图非常暗,这是查看器的屏幕截图:

查看者图片

这是自动生成的缩略图的截图:

生成的缩略图

上传的文件是一个 STL 文件。

如何生成看起来像预览的缩略图?

谢谢!

4

2 回答 2

1

不幸的是,目前无法控制使用 Derivatives API 生成缩略图。

我们有一个 Render-as-a-service API,它将在某个时候发布,但它还没有可用。

目前唯一的解决方法是在查看器中加载模型并对其进行截图。有一个用于生成屏幕截图的 API,请参阅我的博客文章,因此该过程可以自动化,但模型必须在浏览器中呈现。

希望有帮助

于 2016-09-02T06:39:05.983 回答
0

在 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')
});

这是一个示例“渲染”:

示例缩略图输出

于 2017-01-23T18:09:21.137 回答