【问题标题】:Can't convert gltf with forge-convert-utils无法使用 forge-convert-utils 转换 gltf
【发布时间】:2020-02-07 19:42:27
【问题描述】:

我使用命令库中的示例代码创建了文件“convert.js” 运行('模型的瓮','路径/到/输出/文件夹');在 gltf 中获取模型。当我在控制台中运行“node convert.js”时,出现错误。

我的步骤:1.created 项目 2.npm install forge-convert-utils 3.npm install dotenv。 4.npm install forge-server-utils 5.创建文件 convert.js、文件夹“文件夹”和配置文件 .env 6。 节点转换.js

convert.js

const { ModelDerivativeClient, ManifestHelper } = require('forge-server-utils');
const { SvfReader, GltfWriter } = require('forge-convert-utils');
require('dotenv/config');
const { FORGE_CLIENT_ID, FORGE_CLIENT_SECRET } = process.env;

async function run (urn, outputDir) {
    const auth = { client_id: FORGE_CLIENT_ID, client_secret: FORGE_CLIENT_SECRET };
    try{
        const modelDerivativeClient = new ModelDerivativeClient(auth);
        // crashed
        const helper = new ManifestHelper(await modelDerivativeClient.getManifest(urn));
        const derivatives = helper.search({ type: 'resource', role: 'graphics' });
        const writer = new GltfWriter(outputDir);
        for (const derivative of derivatives.filter(d => d.mime === 'application/autodesk-svf')) {
            const reader = await SvfReader.FromDerivativeService(urn, derivative.guid, auth);
            const svf = await reader.read();
            writer.write(svf);
        }
        writer.close();
    }
    catch (e) {
        console.log(e);
    }
}


run('dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6b3QwanRnamF3aGFoaWV0bDljYjkyZmNtZWZlcGkyZ2YtY3VzdG9tZXItZGVtb3MvQVMlMjBNQURFJTIwTUFJTSUyMFNIQUJBWkktMTkwMjE5LmR3Zw==', 'folder');

C:\Users\Bioro\WebstormProjects\svf-to-gltf\forge-convert-custom>node convert.js (node:12108) UnhandledPromiseRejectionWarning: E​​rror: Request failed with status code 404

at createError (C:\Users\Bioro\WebstormProjects\svf-to-gltf\forge-convert-custom\node_modules\axios\lib\core\createError.js:16:15)
at settle (C:\Users\Bioro\WebstormProjects\svf-to-gltf\forge-convert-custom\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (C:\Users\Bioro\WebstormProjects\svf-to-gltf\forge-convert-custom\node_modules\axios\lib\adapters\http.js:237:11)
at IncomingMessage.emit (events.js:194:15)
at endReadableNT (_stream_readable.js:1125:12)
at process._tickCallback (internal/process/next_tick.js:63:19)

(node:12108) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝不是 h 的承诺 与 .catch() 一起使用。 (拒绝编号:2)

(node:12108) [DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    堆栈跟踪没有说太多,只是 Forge 中缺少一些东西。尝试将 run 函数的内部包装在 try-catch 块中,以从抛出的异常中获取更多信息。

    请注意,forge-convert-utils 库假定 URN 已经使​​用模型衍生服务(使用 POST job)进行了翻译。

    【讨论】:

    • 瓮正在工作,在邮递员中我可以获得清单响应 - 与响应照片 drive.google.com/file/d/1JJ819YKYY1Yq87P6X8kkkJgXKO7Qf1vl/… 的链接。文本文件中的所有错误(404 错误) - drive.google.com/file/d/1fOXGrU4qGt5ZZtXw2Uz356anlKTXkJfS/… 但我无法使用令牌在邮递员中获取清单,这会创建 forge-convert-utils。
    • 谢谢,所以对 await modelDerivativeClient.getManifest(urn) 的调用应该可以正常工作,并且 404 可能来自其他地方。同样,请尝试单步执行代码或将其包装在 try-catch 块中,以查看具体失败的请求。
    • 程序在代码行后崩溃const modelDerivativeClient = new ModelDerivativeClient(auth); 这个错误link 它发生在获取清单请求期间。
    • 这真的很奇怪...您在运行转换器时使用与在 Postman 中相同的 Forge 凭据吗?转换器在请求清单时使用范围“data:read”,这应该(根据forge.autodesk.com/en/docs/model-derivative/v2/reference/http/…)很好。如果您仍然收到 404,您介意通过 forge (dot) help (at) autodesk (dot) com 与我们分享您的 Forge 凭证吗?然后我可以调查一下,看看那里发生了什么。
    猜你喜欢
    • 2021-08-27
    • 2018-12-07
    • 2021-01-05
    • 1970-01-01
    • 2015-07-03
    • 2018-02-12
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多