我正在测试示例https://github.com/petrbroz/forge-potre-demo试图将 NWD 和点云导入 Forge 查看器,但无法使它们与坐标匹配。
我在 Navisworks 上确认 PC 和模型都在 0,0,0 对齐。但它们在查看器中位移了 200 多英尺。
我们所做的尝试
点云是使用 Potree 转换的 1.6 和 1.7 https://github.com/potre/PotreeConverter/releases/tag/1.7的转换器
使用 . 将点云从米缩放到英尺
let scale = new THREE.Vector3(3.28084,3.28084,3.28084);
。模型以 0,0,0 的全局偏移量插入。
globalOffset: {x:0,y:0,z:0}
我们使用英尺坐标直接在 Threejs 中的已知点创建了一个球体,它与 NWD 上的位置相匹配。
我们发现 potree 转换器不是 100% 与示例兼容,需要在第464 行快速修复以读取转换器创建的类别。
var pointAttributeName = pointAttributes[i].name.toUpperCase().replaceAll(' ','_');
我们还需要在第 434 行周围添加一个新类别
PointAttribute.RGBA = new PointAttribute(PointAttributeNames.COLOR_PACKED, PointAttributeTypes.DATA_TYPE_INT8, 4);
如果没有这两个最新修复,我们将无法加载点云。
我们缺少什么?
我们可以手动覆盖位置,但最终坐标对项目没有意义。太随意了。这两个修复可能是问题吗?应该有什么替代方案?