我已经加载了一个模型,我要从中选择一个元素,对其进行克隆,然后将克隆沿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);`
但是我没有找到克隆初始元素的方法。有人可以帮助我创建元素的副本或元素的几何形状的副本吗?
谢谢您的时间。
答案 0 :(得分:2)
官方Viewer APIs目前不支持这种操作。
您可能会通过未缩小的JavaScript代码对FragmentList
类进行逆向工程,但是您很有可能会看到很多意外行为。查看器进行了大量预处理,以确保有效的场景遍历和渲染(例如,计算BVH或合并网格),所有这些优化均假定场景为静态。