如何在 Forge 查看器中复制或克隆模型的元素

How can I duplicate or clone an element of a model in forge viewer

我已经加载了一个模型,我想从中 select 一个元素,克隆它并将克隆沿着 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);`

但是我没能找到克隆初始元素的方法。谁能帮我创建一个元素的副本或元素几何的副本?

感谢您的宝贵时间。

目前官方不支持这种操作Viewer APIs

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