2017-01-26 4 views
0

В настоящее время я работаю над системой, в которой мы добавляем пользовательскую сетку на Viewer.impl.sceneAfter и сталкиваемся с некоторыми проблемами, когда большие сетки (больше, чем объединение видимых границ всех загруженных моделей) когда добавляются большие облака точек, возникает проблема отсечения, когда часть сетки вырезается.Настройка видимых границ в Forge Viewer

Из исходного кода я заметил, что дальнее значение камеры обновляется на основе видимой границы мировой сцены, и эта сцена не учитывается при вычислении видимой границы (в отличие от viewer.impl.scene, который учитывается).

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

я придумал два Hacky решение для этого:

Во-первых, переписав функцию getVisibleBounds прототип, представленную в Viewer3D.js , вдохновленная этим Stackoverflow ответ: Changing Camera Speed, но не был удовлетворен, так как он переписывает третьего который может измениться позже.

Во-вторых, с невидимым клоном (используя видимое свойство материала вместо геометрии) пользовательской сетки в viewer.impl.scene, так что она меняет видимую границу зрителя. Что мне нравится лучше, чем первое решение, но по-прежнему считаю неэффективным, так как мне нужно отслеживать два экземпляра сетки для удаления геометрии.

мне было интересно, если есть более элегантное решение, чем эти

Заранее спасибо!

ответ

1

Я зарегистрировал запрос на желание, чтобы учесть, что сетки добавлены в sceneAfter в будущем выпуске нашего API-интерфейса для просмотра.

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

Надеюсь, что это поможет

+0

Понятно, что я не рассматривал использование тривиальной сетки. Спасибо за помощь! – MazaYong