无法在 Autodesk Forge Viewer 中加载 SVF2 模型

Posted

技术标签:

【中文标题】无法在 Autodesk Forge Viewer 中加载 SVF2 模型【英文标题】:Cannot load SVF2 model in Autodesk Forge Viewer 【发布时间】:2021-02-10 16:44:27 【问题描述】:

我刚刚试用了 SVF2 公测版,但无法将模型加载到查看器中。我相信模型已成功翻译,因为返回的清单具有:

"name": "XXXX_ARC.nwd",
"progress": "complete",
"outputType": "svf2",
"status": "success"

但是,当我尝试在 Viewer 中加载模型时,它会在这一行失败:

theViewer.loadModel(svfURL, onItemLoadSuccess, onItemLoadFail);

svfURL 是这样的:

https://cdn.derivative.autodesk.com/modeldata/file/urn:adsk.fluent:fs.file:autodesk-360-translation-storage-prod/*MyURN*/output/otg_files/0/output/0/otg_model.json

我从 Chrome 浏览器得到的错误: 403 GET errors。好像我没有访问模型的权限?

我需要做一些额外的设置吗?

其他信息: 我已将 Viewer 环境设置如下:

var options = 
    env: 'MD20ProdUS',
    api: 'D3S',
    getAccessToken: getForgeToken
;

var documentId = 'urn:' + urn;

Autodesk.Viewing.Initializer(options, function onInitialized() 
    var htmlDiv = document.getElementById('forgeViewer');
    var config3d = 
      extensions: ['ToolbarExtension', 'HandleSelectionExtension', .....a few extensions ],
      loaderExtensions:  svf: "Autodesk.MemoryLimited" 
    ;
    
    theViewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv, config3d);
    var startedCode = theViewer.start();
    if (startedCode > 0) 
        console.error('Failed to create a Viewer: WebGL not supported.');
        return;
    
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
);

我也尝试在创建查看器时删除config3d,但它仍然返回相同的消息。代码进入onDocumentLoadSuccess,但在theViewer.loadModel(svfURL, onItemLoadSuccess, onItemLoadFail);失败,跳转到onItemLoadFail

【问题讨论】:

【参考方案1】:

因为你提到的主要是查看器没有加载SVF2,我可以怀疑你可能没有指定正确的查看器环境。

这是一些示例代码,请注意您必须设置 env 和 API 的选项:

var viewer;
var options = 
  // These are the SVF2 viewing settings during public beta
  env: 'MD20ProdUS', // or MD20ProdEU (for EMEA)
  api: 'D3S', 
  getAccessToken: getForgeToken
;
var documentId = 'urn:' + getUrlParameter('urn');

// Run this when the page is loaded
Autodesk.Viewing.Initializer(options, function onInitialized() 
  // Find the element where the 3d viewer will live.    
  var htmlElement = document.getElementById('MyViewerDiv');
  if (htmlElement) 
    // Create and start the viewer in that element    
    viewer = new Autodesk.Viewing.GuiViewer3D(htmlElement);
    viewer.start();
    // Load the document into the viewer.
    Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
  
);

【讨论】:

感谢您的信息。我编辑了我的问题,提供了有关如何设置 Viewer 环境的其他信息,这与您所拥有的环境相似,但它仍然返回相同的 403 错误消息。 好的,感谢您的更新。我再次测试,在一种情况下我看到了 404(不是 403)。所以我进一步调查,似乎本周早些时候我们可能遇到了一个小水桶问题。能否请您使用新存储桶重试,再次上传模型,然后测试 SVF2 翻译?请让我知道情况如何。目前在我的测试中,它似乎已解决。您的查看器代码对我来说看起来不错。感谢您提供它。谢谢 我创建了一个新存储桶并进行了 SVF2 翻译,但在查看器中加载 SVF2 时仍然返回相同的错误消息。当我更改为请求 SVF 版本时,模型加载正常。我还能做些什么来试错? 很抱歉给您带来麻烦。我会询问工程团队是什么导致了您的问题。 好的,您能提供 URN(以确保我们看到的是正确的)以及从浏览器导出的 HAR 吗? HAR 是 HTTP 存档,可以按照以下示例说明导出:knowledgebase.paloaltonetworks.com/… HAR 文件可以帮助我们的产品团队查看您的客户端上发生的情况。在“刷新页面并允许 记录浏览器-网站交互”步骤中,确保在该步骤中加载 SVF2。如果您愿意,可以将其发送至 forge.help@autodesk.com 并提及“kevin vandecar”【参考方案2】:

我也面临同样的问题。

    虽然模型已经转为SVF2格式,但是我的云积分已经用完了。 清单摘录:

         "name": "7085-33cc-9464.rvt",
         "progress": "complete",
         "outputType": "svf2",
         "status": "success"
    

    无论使用哪种设置,查看器中都只加载 SVF 格式。 我没有从查看器收到错误消息,一切正常,除了 SVF 仍然加载而不是 SVF2。 查看器初始化选项:

     const viewerEnv = await this.initialize(
       //env: dbModel.env,
    
       env: "MD20ProdEU",
       api: "D3S",
       //accessToken: "",
     );
    

【讨论】:

【参考方案3】:

不确定这是否已在单独的线程上解决,但问题可能是options 中没有为loadModel() 设置acmSessionId - 请参阅https://forge.autodesk.com/blog/403-error-when-trying-view-svf2

function onDocumentLoadSuccess(doc) 
  let items = doc.getRoot().search(
    'type': 'geometry',
    'role': '3d'
  , true)

  let url = doc.getViewablePath(items[0])

  viewer.loadModel(url,  acmSessionId: doc.getAcmSessionId(url) )

最好只使用loadDocumentNode() 而不是loadModel()

【讨论】:

以上是关于无法在 Autodesk Forge Viewer 中加载 SVF2 模型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Autodesk Forge Viewer 在 PDF 文件中添加 Puspin

将模型从 Autodesk Viewer 加载到 Forge Viewer

如何在 Forge Viewer 中激活“Autodesk.MemoryLimited”扩展?

在 Autodesk Forge Viewer 中显示尺寸

Autodesk Forge Viewer 透明背景

如何克服 Autodesk Forge Viewer 中的窗口选择限制?