Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя
АСКОН, Технический специалист  · 18 сент 2022

Загружаем облако точек в Ренгу

Облако точек удобно использовать при построении модели в 3D, если речь идет, например, о реконструкции, а для нас актуально иметь максимально точные размеры. Звучит заманчиво, но Ренга не поддерживает форматы облаков точек. Что ж, надо придумать обходной путь (и желательно бесплатный).
Что я предлагаю: Используя open source программы MeshLab и FreeCad, сконвертировать облако точек в 3D формат, который можно загрузить в Ренгу.
1 этап: Превращаем облако точек в полигональную сетку в MeshLab.
Для демонстрации сценария я взял облако точек в формате e57 из открытого доступа. 
  1. Создаем проект в MeshLab и импортируем туда наше облако File - Import Mesh.
  2. Чистим наше облако. Для более корректной работ алгоритмов, я советую перед манипуляциями удалить "свободные" точки, и кроме этого, для оптимизации убрать те части модели которые не нужны. Для этого используем кнопки Select Vertices (для перехода в режим выбора точек) и Delete Selected Vertices (непосредственно для удаления)
  1. Я буду загружать в Ренгу только центральную часть здания. Вывеску, боковые корпусы и цоколь я удалил. 
  1. Для создания поверхности, нам необходимо создать нормали, по которым эти поверхности будут создаваться. Для этого используем команду Filters - Normals, curvatures and orientation - Compute normals for point sets. Настройки по умолчанию не меняю и жму Apply. Компьютер немного думает, но визуально на экране ничего не добавилось.
  2. Теперь создаём саму поверхность через команду Filter - Remeshing, simplification and reconstruction - Surface reconstruction: Screened Poison. Здесь характеристики по умолчанию тоже не меняю и жму Apply
  1. Любуемся нашей поверхностью (для этого в правой части экрана можно отключить отображение точек чтобы они не мешались). Создание подобных артефактов, ожидаемо, так как по краям облаков точек алгоритмы могут работать некорректно. Поэтому производим чистку через команды Select faces и Delete Selected Faces:
  1. Экспортируем нашу полигональную модель через File - Export Mesh As и сохраняем в формат stl. Попробуем загрузить полученный stl файл в Ренгу (Команда в верхней части панели "Вставить из"). Наше "облако" загрузилось (и даже быстро), но вот проблема в том, что полигональные поверхности в Ренге это не самый приятный вид информации. Его можно перемещать, его можно видеть на 3д виде, но привязываться к точкам, кроме базовой, нельзя. На планах и разрезах вся модель отображается просто перечеркнутым прямоугольником.
2 этап: Превращаем полигональную поверхность в твердое тело в FreeCad.
  1. В проект FreeCad выбираем Файл/File - Импортировать/Import и выбираем stl файл. 
  1. В верхнем меню надо переключиться на Деталь/Part. Выбрав сетку, жмём команду Деталь/Part - Создание фигуры из полигональной сетки. Настройки оставляю по умолчанию и жму ОК. Операция может происходить долгое время (у меня заняла порядка минуты).
  1. Полученное твердое тело сохраняем: выбираем твердое тело, Файл - Экспортировать - выбираем формат step. Экспорт может занять тоже некоторые время.
3 этап: Загружаем твердое тело в Ренгу
В проекте Ренга через команду "Вставить из" загружаем твердое тело. Как правило, step файл с большим количеством точек может загружаться относительно долго (мой step файл весил около 290 Мб и конвертировался в Ренгу порядка 5 минут). После вставки, наше твердое тело маленьких размеров. Я предполагаю, что FreeCad превращает метры в миллиметры, поэтому  через Стили элемента увеличил наше твердое тело в 1000 раз. В реальной ситуации, советую найти эталонный размер и по нему отмасштабировать, потому что погрешности могут быть еще на этапе сканирования, которые дадут пару процентов в какую-то сторону.
Данное твердое тело можно перемещать, привязываться к нему при построении, измерять точки между собой (как в облаке, так и между облаком и нашими элементами)
А также, если нужно, оформлять на чертеже и разрезе.
В реальном проекте, я советую помещать облако точек на отдельный уровень, чтобы было удобно фильтровать. А если мы не используем его на чертежах, то лучше: отмасштабировать, спозиционировать, скопировать в другой проект (чтобы привязки по x,y,z остались) и удалить. Если нам надо использовать облако точек, то из второго проекта копируем в рабочий, проводим операции, анализ и снова удаляем для облегчения модели. Будьте внимательны: наш элемент занимает пространство еще в стилях элемента, поэтому для экономии места желательно там тоже удалять модель. 
Также, стоит помнить, что не надо без необходимости загружать лишние части здания с избыточной точностью, так как её увеличение приводит к экспоненциальному росту веса модели.
Может быть, стоит поделить облако точек на части с разной детализацией для разных задач.
Если остались вопросы - то в комментарии.
4 эксперта согласны
Коллеги, подскажите, споткнулся на первом шаге: при импорте е57 в мэш, программа пару секунд думает, после... Читать дальше
Антон, спасибо за информацию. Вопрос: естественно, при вставке в проект облако точек увеличивает размер файла/модели.  Почему, как в Revit, допустим, не реализована подгрузка облака в виде внешенй ссылки? Тогда не увеличивается размер файла и, при необходимости, связь легко выгружается/загружается и файл не тормозит? Бесконечно вставлять/удалять облако точек в процессе проектирования (допустим, при реконструкции объекта) дело затратное по времени и лишним операциям. Пока работаю надо объектом - большую часть времени мне нужно облако. Внешняя ссылка - отличное решение. Ваше мнение?