Перевести модель после загрузки (переместить начало координат) - PullRequest
0 голосов
/ 29 мая 2018

Моя компания использует последнюю версию, которая поддерживает несколько моделей для федерации, проблема, с которой мы сталкиваемся, заключается в том, что иногда модели не совсем правильно выстраиваются.Мне известно о параметре загрузки globalOffset, но даже при этом они не совпадают.

Поэтому я ищу способ перемещения модели после ее загрузки, чтобыЗатем я могу сохранить это новое смещение в базе данных, чтобы оно в следующий раз корректно загружалось.

Возможно ли это в данный момент?

1 Ответ

0 голосов
/ 01 июня 2018

Если ваши модели не настроены с совмещением или с общими координатами ранее, то они не будут выровнены с опцией globalOffset.

И да, модель можно перемещать после загрузки.Вы можете проверить это удивительное расширение, Просмотр. Расширение. Преобразование , написанное нашим классным коллегой Филиппом, и инструмент перевода: здесь .

Вот пример, показывающийКак переместить всю модель -100 единиц в направлении X.Его ключевая концепция заключается в применении смещений вашей модели к каждому фрагменту Forge, как показано ниже.

const fragCount = viewer.model.getFragmentList().fragments.fragId2dbId.length;

// Move whole model -100 units in the x-direction
const offset = new THREE.Vector3( -100, 0 , 0 );

for( let fragId = 0; fragId < fragCount; ++fragId ) {
    const fragProxy = viewer.impl.getFragmentProxy( model, fragId );

    fragProxy.getAnimTransform();

    const position = new THREE.Vector3(
        fragProxy.position.x + offset.x,
        fragProxy.position.y + offset.y,
        fragProxy.position.z + offset.z
    );

    fragProxy.position = position;

    fragProxy.updateAnimTransform();
}


viewer.impl.sceneUpdated( true );
...