Autodesk Forge Viewer - SVF2 格式的 OGT header 无效
Autodesk Forge Viewer - Invalid OGT header with SVF2 format
当我将我的 Forge Viewer 从 SVF 迁移到 SVF2 时,一些几何体没有加载,我得到每个元素的“无效 OGT header”和“无法解析 OGT 几何体”。
Console error
我直接从 BIM360 获取模型。
我将 Nodejs 与 express 一起使用,并执行 post 请求与客户端
通信 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);
}}
终于从服务器获取token
//Localhost
function getToken(_callback) {
$.get("http://localhost:3000/home", function(data, status){
var response = JSON.parse(data);
_callback(response.access_token, response.expires_in);
});
}
知道这里可能发生了什么吗?
我们使用 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 错误,而其他用户在使用相同设置时没有遇到任何问题。
当我将我的 Forge Viewer 从 SVF 迁移到 SVF2 时,一些几何体没有加载,我得到每个元素的“无效 OGT header”和“无法解析 OGT 几何体”。
Console error
我直接从 BIM360 获取模型。
我将 Nodejs 与 express 一起使用,并执行 post 请求与客户端
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);
}}
终于从服务器获取token
//Localhost
function getToken(_callback) {
$.get("http://localhost:3000/home", function(data, status){
var response = JSON.parse(data);
_callback(response.access_token, response.expires_in);
});
}
知道这里可能发生了什么吗?
我们使用 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 错误,而其他用户在使用相同设置时没有遇到任何问题。