Как я могу дублировать или клонировать элемент модели в программе просмотра кузницы - PullRequest
0 голосов
/ 25 января 2019

Я загрузил модель, из которой хочу выбрать элемент, клонировать его и сдвинуть клон вдоль оси X на 1000 единиц.

Проведя тестирование в консоли веб-браузера, я справился со сдвигом по оси 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);`

Но мне не удалось найти способ клонировать начальный элемент. Может ли кто-нибудь помочь мне создать копию элемента или копию геометрии элемента?

Спасибо за ваше время.

1 Ответ

0 голосов
/ 29 января 2019

Этот вид операции в настоящее время не поддерживается официальными API Viewer .

Вы можете потенциально перепроектировать класс FragmentList из не минимизированного кода JavaScript, но вы, скорее всего, увидите много неожиданного поведения. Зритель выполняет большую часть предварительной обработки, чтобы обеспечить эффективный обход и рендеринг сцены (например, вычисление BVH или объединение сеток), и все эти оптимизации предполагают, что сцена статична.

...