【问题标题】:Translate a model after load (move origin)加载后平移模型(移动原点)
【发布时间】:2018-11-08 04:08:36
【问题描述】:

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

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

目前可以吗?

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    如果您的模型之前没有设置同源或共享坐标,那么它们将不会与globalOffset 选项对齐。

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

    这是一个示例,展示了如何将整个模型在 x 方向上移动 -100 个单位。它的关键概念是将您的模型偏移量应用于每个 Forge 片段,如下代码 sn-p。

    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 );
    

    【讨论】:

    • 完美!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多