如何在 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 或合并网格),并且所有这些优化都假设场景是静态的。
我已经加载了一个模型,我想从中 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 或合并网格),并且所有这些优化都假设场景是静态的。