无法在 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格式,但是我的云积分已经用完了。 清单摘录:
"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