【问题标题】:Transform point from DWG model coordinates to autodesk forge viewer coordinates (new WGS.LmvMatrix4 undefined)从 DWG 模型坐标转换点到 Autodesk Forge 查看器坐标(新 WGS.LmvMatrix4 未定义)
【发布时间】:2022-11-01 17:09:59
【问题描述】:
我正在尝试在 Autodesk forge 查看器中显示的模型上显示一个点。但是我无法弄清楚如何转换这一点。我发现下一个问题似乎可以解决这个问题:
Transform point from DWG model coordinates to autodesk forge viewer coordinates
当我尝试使用这个问题的功能时:
var vpXform = viewer.model.getPageToModelTransform(viewportId).clone();
var invVpXform = new WGS.LmvMatrix4(true);
invVpXform.getInverse(vpXform, true);
var ptInCadX = ...;
var ptInCadY = ...;
var verticesInViewer = new THREE.Vector3().set(ptInCadX, ptInCadY, 0).applyMatrix4(invVpXform);
它显示下一个错误:未捕获的 ReferenceError:未定义 WGS
如果我在没有 WGS.LmvMatrix4 的情况下尝试它,它会显示以下错误:未捕获的 ReferenceError:未定义新的 LmvMatrix4
我正在使用最新版本的 Forge Viewer v7。有人可以帮我找出我做错了什么吗?
非常感谢。
【问题讨论】:
标签:
autodesk-forge
autodesk-viewer
【解决方案1】:
这是 sn-p 的更新版本:
// Start by getting a list of all viewports in your model
let viewports = viewer.model.getData().viewports;
// Choose a viewport you want to use for the design-to-viewer coordinate mapping (it must include a `transform` property);
// in my case I'll just pick the first one
let viewport = viewports[0];
// Load the viewport transform into a three.js matrix
let xform = new THREE.Matrix4().fromArray(viewport.transform);
// Compute the inverse transxform
let inverse = new THREE.Matrix4().getInverse(xform, true);
// Use the inverse transform to convert design coordinates to paper coordinates
let someX = 0, someY = 0;
let viewerCoords = new THREE.Vector3().set(someX, someY, 0).applyMatrix4(inverse);