首页 > 解决方案 > 如何在 Forge 查看器中复制或克隆模型的元素

问题描述

我已经加载了一个模型,我想从中选择一个元素,克隆它并将克隆沿 X 轴移动 1000 个单位。

通过在 Web 浏览器控制台中进行测试,我使用以下代码管理了沿 X 轴部分的移动:

var tree = NOP_VIEWER.model.getData().instanceTree;
var offset = new THREE.Vector3( 1000, 0 , 0 );

tree.enumNodeFragments(7836, function (frag) {
    var fragProxy = NOP_VIEWER.impl.getFragmentProxy( NOP_VIEWER.model, frag);
    var newfragProxy = fragProxy.mesh().clone();
    fragProxy.getAnimTransform();
    var position = new THREE.Vector3(
        fragProxy.position.x + offset.x,
        fragProxy.position.y + offset.y,
        fragProxy.position.z + offset.z
    );
    fragProxy.position = position;
    fragProxy.updateAnimTransform();
});

NOP_VIEWER.impl.sceneUpdated(true);`

但我未能找到克隆初始元素的方法。有人可以帮我创建元素的副本或元素几何的副本吗?

感谢您的时间。

标签: autodesk-forge

解决方案


目前官方的Viewer API不支持这种操作。

您可能会FragmentList从非缩小的 JavaScript 代码对类进行逆向工程,但您很可能会看到很多意外行为。查看器进行了大量预处理以确保高效的场景遍历和渲染(例如,计算 BVH 或合并网格),所有这些优化都假设场景是静态的。


推荐阅读