Агрегирование модели в программе просмотра - проблема с координатами - PullRequest
0 голосов
/ 13 декабря 2018

Я динамически агрегирую модели в средстве просмотра (исходя из нескольких файлов BIM).По сути, я инициализирую средство просмотра, а затем LoadDocument и LoadModel для каждой модели, которую пользователь выбирает для просмотра, динамически.

В основном это файлы NVC (которые я использовал для тестирования), которые используют систему координат.Модели загружаются динамически и корректно сшиваются.

Тем не менее, система координат испорчена, когда загружается вторая модель - не всегда, но в некоторых случаях (в v6.3 - не проверялись предыдущие версии).Когда это происходит, я могу заметить следующее:

  1. Когда я щелкаю значок «home» во вьюере, он не показывает полную агрегированную модель, а показывает только первую загруженную модель в центре иостальные выходят за пределы экрана.
  2. Когда я щелкаю элемент, чтобы выбрать, он выбирает что-то еще (со смещением), а в некоторых случаях ничего не выбирается (то есть, координаты щелчка интерпретируются неправильно).

Я пробовал несколько комбинаций, и эта проблема возникает, когда первая загруженная модель не занимает полный размер агрегированной модели (скажем, один этаж здания).

Я нашел решение, хотя,После загрузки моделей (каждый раз, когда пользователь выбирает некоторые), если я «скрываю» все модели и «показываю» их снова, это устраняет проблемы с щелчком и событием AGGREGATED_SELECTION.

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

Есть ли способ «сбросить» систему координат зрителя (с тем же эффектом, что и при скрытии / показемодели)?

Буду признателен за помощь в решении этой проблемы.

Спасибо, Банду

1 Ответ

0 голосов
/ 19 декабря 2018

хорошо, значит, есть большое смещение, вызывающее проблему точности.Вот почему вы видите много «дрожания» камеры.

Чтобы исправить это ... нам нужно исправить огромное смещение, вернув всю геометрию ближе к исходной точке вручную.(или исправление исходного файла navisworks).

Во-первых, давайте приблизительно вычислим значение смещения ...

Alt-Click в любом месте объекта, чтобы создать точку поворота и получить значение x, y, z, используя этот трюк (https://github.com/wallabyway/markupExt/issues/2).

Вы должны увидеть значение xyz, подобное этому ... Z.Vector3 {x: 1296285.515098644, y: 14995636.431742325, z: 364.26238179027337}

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

строка 70: ​​

var modelOptions = {
    sharedPropertyDbPath: doc.getPropertyDbPath(),
    globalOffset: {x:1296285.515098644, y: 14995636.431742325, z:0}
};
viewer.loadModel(svfUrl, modelOptions, onLoadModelSuccess);

`

Это отменяет эффектэтого большого смещения. В результате геометрия перестает мерцать, а движение камеры перестает «дрожать» из-за проблем с точностью.

Дайте мне знать, если это работает для вас. Майкл

...