加载后转换模型(移动原点)

时间:2018-05-29 13:18:33

标签: autodesk-forge autodesk-viewer

我的公司正在使用支持多种模型进行联合的最新版本,我们面临的问题是有时模型不能正确排列。我知道加载选项globalOffset,但即使有了这个选项,它们也不会排列。

因此,我正在寻找一种在加载模型后移动模型的方法,这样我就可以将这个新的偏移量存储在数据库中,以便下次正确加载。

目前这可能吗?

1 个答案:

答案 0 :(得分:1)

如果您之前没有使用共同原点或共享坐标设置模型,则它们将不会与globalOffset选项对齐。

是的,模型可以在加载后移动。您可以查看我们很酷的同事Philippe编写的这个很棒的扩展程序Viewing.Extension.Transform,翻译工具是here

以下示例显示如何在x方向上移动整个模型-100个单位。它的关键概念是将模型偏移量应用于每个Forge片段,如下面的代码片段所示。

const fragCount = viewer.model.getFragmentList().fragments.fragId2dbId.length;

// Move whole model -100 units in the x-direction
const offset = new THREE.Vector3( -100, 0 , 0 );

for( let fragId = 0; fragId < fragCount; ++fragId ) {
    const fragProxy = viewer.impl.getFragmentProxy( model, fragId );

    fragProxy.getAnimTransform();

    const position = new THREE.Vector3(
        fragProxy.position.x + offset.x,
        fragProxy.position.y + offset.y,
        fragProxy.position.z + offset.z
    );

    fragProxy.position = position;

    fragProxy.updateAnimTransform();
}


viewer.impl.sceneUpdated( true );