autodesk-forge - Forge Viewer - 无法正确查看多个不同的模型
问题描述
我无法在查看器中加载不同的模型。我怀疑问题出在模型中混合了不同的单位(米和毫米)。
所以我有3个模型:
IFC 1使用毫米作为单位。
将 SVF 导数加载到查看器中时,执行
console.log(model.getUnitScale(), model.getUnitString());
输出:
0.001, mm
IFC 2,以毫米为单位。获得与IFC 1相同的输出
对象。立方体中心位于原点 [0, 0, 0] 的简单立方体模型。这似乎没有任何固有的单位。
将 SVF 导数加载到查看器中时,执行
console.log(model.getUnitScale(), model.getUnitString());
输出:
1, null
为了加载具有正确坐标的模型,我使用以下选项:
国际金融公司 1 和 2:
{
globalOffset: {x: 1000000, y: 100000, z: 7000},
sharedPropertyDbPath: doc.getPropertyDbPath(),
}
对象:
let mat = new THREE.Matrix4();
mat.makeTranslation(1000000, 100000,7000);
{
placementTransform: mat,
sharedPropertyDbPath: doc.getPropertyDbPath(),
}
这里的基本原理是 IFC 模型远离原点,而 Obj 模型位于原点。似乎有必要使用globalOffset
IFC 以使它们在查看器中对齐,使用placementTransform
将 Obj 靠近 IFC 模型是必要的。
我在这里遇到以下问题:
- 导航模型很困难,当突出显示 Obj 模型时,它似乎设置为使用 y-up 或其他东西,这使得其他模型很难进行方向导航。
- 尝试更改缩放时,似乎只有 Obj 受到影响。这可能是由于不同的比例设置造成的吗?
编辑 1:
看起来像让 Obj 立方体与其他模型一样大小可以解决缩放问题。此外,如果先加载 IFC 文件,则方向导航是正确的。只有在首先加载 OBJ 文件时,我们才会遇到“y-up 方向”问题
编辑 2:
方向导航问题可以用viewer.navigation.setWorldUpVector(new THREE.Vector3(0,0,1), false);
. 是否也可以全局控制这样的行为,而不是总是让不同的模型设置行为?
解决方案
我认为最后加载的模型将始终优先于任何先前设置的世界向上向量。因此,如果您想全局控制世界,则需要viewer.navigation.setWorldUpVector
在加载所有模型后手动使用该方法。
推荐阅读
- java - 泛型 我要向 [???] 添加什么?我知道它是
然后是一些东西 - git - 如果未添加新提交,如何使用 Github api 合并 PR
- reactjs - 使用带有 typescript 的 props.children 和 styled-component “as” prop
- python - Python 动态数据框名称
- java - BuiltinClassLoader.java:606 处的 ClassNotFoundException
- swift - Swift WebKit WebView 打开 ICS 日历事件
- github - Github 机密在值的开头有 '='
- c - 如何在 c 中的 fgets 输入上修复此令牌比较
- django - 生成视频缩略图的最佳方法是什么?
- r - 如何删除表示给定矩阵中其他排列的行