Autodesk Forge Viewer - SVF2 格式的无效 OGT 标头

Posted

技术标签:

【中文标题】Autodesk Forge Viewer - SVF2 格式的无效 OGT 标头【英文标题】:Autodesk Forge Viewer - Invalid OGT header with SVF2 format 【发布时间】:2021-04-17 18:54:58 【问题描述】:

当我将 Forge Viewer 从 SVF 迁移到 SVF2 时,某些几何图形未加载,并且每个元素都出现“无效的 OGT 标头”和“无法解析 OGT 几何图形”。

Console error

我直接从 BIM360 获取模型。 我正在使用带有 express 的 Nodejs 并执行发布请求以与客户端通信 Forge 访问令牌

app.get('/home', (req, res) => 

var options = 
    'method': 'POST',
    'url': 'https://developer.api.autodesk.com/authentication/v1/authenticate',
    'headers': 
        'Content-Type': 'application/x-www-form-urlencoded',
        'Cookie': 'PF=boZ6jpDwlNEmVzAGFiFx8i',
form: 
    'grant_type': 'client_credentials',
    'client_id': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
    'client_secret': 'XXXXXXXXXXXXXXXXXX',
    'scope': 'data:read data:write';

我刚刚将 SVF 查看器选项替换为 Autodesk Post 中的选项

function launchViewer(urn) 

//SVF
//var options = 
//env: 'AutodeskProduction',
//getAccessToken: getToken,
//api: 'derivativeV2' + (atob(urn.replace('_', '/')).indexOf('emea') > -1 ? '_EU' : '');

//SVF2
var options = 
env: 'MD20ProdUS',
getAccessToken: getToken,
api: 'D3S';


Autodesk.Viewing.Initializer(options, () => 

viewer = new Autodesk.Viewing.Viewer3D(document.getElementById('forgeViewer'));
viewer.start();

var documentId = 'urn:' + urn;
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure););

function onDocumentLoadSuccess(doc) 
var viewables = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, viewables).then((i) => 
  // documented loaded, any action?
);

this.viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, onSelectionChanged);
this.viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, onGeometryLoaded);  


function onGeometryLoaded() 
 console.log(viewer);


function onDocumentLoadFailure(viewerErrorCode) 
 console.error('onDocumentLoadFailure() - errorCode:' + viewerErrorCode);

最终从服务器获取令牌

//Localhost
function getToken(_callback) 
    $.get("http://localhost:3000/home", function(data, status)
    var response = JSON.parse(data);
    _callback(response.access_token, response.expires_in);
 );

有什么线索吗?

【问题讨论】:

【参考方案1】:

我们使用 SVF2 已经 2 个月了,现在我们的一个模型遇到了这个问题,该模型以前没有问题。但是,大多数模型都可以正常工作。 SVF2 好像退步了。

但是,我们使用 EMEA 环境:


     'env': 'MD20ProdEU', //svf2
     'api': 'D3S', //svf2
     ...

编辑:

我研究了一点。我们托管在端口 1841 上的本地开发实例仅对一个模型有错误。我们在端口 80 上正确托管的查看器实例对于同一模型没有错误。 (针对查看器版本 7.34 和 7.33 测试)

编辑 2:

不幸的是,没有答案的相关 Stackeoverflow 问题:Forge Viewer - Failed to parse OTG

编辑 3:

我们的一些用户遇到了某些型号的 OGT 错误,而其他用户在使用相同的设置时没有任何问题。

【讨论】:

这里有一些奇怪的行为,我尝试了完全相同的配置,但我只使用 Revit 示例模型而不是其他模型遇到问题。好消息是我尝试了 EMEA 环境,现在所有模型都可以工作,我不知道可能有什么区别,但确实做到了。

以上是关于Autodesk Forge Viewer - SVF2 格式的无效 OGT 标头的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk Forge Viewer 透明背景

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

在 Autodesk Forge Viewer 中显示尺寸

Autodesk Forge Viewer 适合查看纵向/横向

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

Autodesk Forge Viewer getScreenshot 方法