Как сделать облако точек

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Как правильно использовать облако точек

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

Узнав больше об облаках точек - что это такое, как их создавать, о различных подходах и сценариях использования - вы сможете принять обоснованное решение о внедрении этих цифровых инструментов для ваших задач.

Облака точек: все дело в перспективе

Что такое облако точек? Это набор точек данных, отображаемых в трех измерениях. Каждая точка имеет свои собственные значения X, Y и Z в зависимости от того, где она находится в пространстве. Некоторые облака точек могут иметь исключительно высокое разрешение, сотни отдельных точек на квадратный метр, чтобы точно показать, что находится в трехмерном пространстве.

Вместе точки обозначают поверхность объектов и особенности ландшафта в пределах интересующей области, что позволяет геодезистам или другим специалистам создавать чрезвычайно точные 3D-карты и модели этих областей. Однако само облако - это не карта. Для создания более полнофункциональной модели вам понадобится другой набор данных, помимо точек данных высот.

Чтобы создать эти облака точек, вам потребуется соответствующее оборудование и новая перспектива вашей целевой области, а именно - вид с воздуха. Управляя беспилотным летательным аппаратом (БПЛА) над выбранной вами областью, вы можете собрать необходимую информацию о высоте и топографии.

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

Как работает облако точек

Как именно работает процесс создания облака точек? Хотя точность зависит от того, оснащен ли ваш дрон датчиками LiDAR или фотограмметрическим оборудованием, процедура остается той же.

Ваш БПЛА пролетает над выбранной областью, сканируя местность. Информация о точках данных затем собирается в пригодную для использования форму с помощью программного обеспечения для обработки облака точек, такого как DJI Terra.

Чтобы получить результат в виде трехмерного облака точек, программное обеспечение сгенерирует точки на основе коллекции фотографий, снятых под разными углами.

Разница между облаками точек LiDAR и облаками точек фотограмметрии

Два основных метода создания облака точек из данных БПЛА, LiDAR и фотограмметрия, имеют свои идеальные варианты использования. Вы можете использовать оба варианта в разное время.

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

Где используется построение облака точек

  • Энергетическая инфраструктура: поиск новой инженерной инфраструктуры становится проще и быстрее, когда команды имеют доступ к дронам и могут создавать трехмерное облако точек для интересующих областей. Это может быть особенно полезно для таких объектов, как линии электропередач, построенные в отдаленных районах, где командам будет сложно перемещаться пешком.
  • Строительство в нефтегазовой отрасли: как и в случае с электроэнергетикой, нефте- и газоперерабатывающие заводы часто требуют точной трехмерной информации о больших территориях, возможно, в удаленных местах. Это еще один сценарий, в котором дроны могут оказаться более эффективными, чем наземные исследовательские группы.

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

    является хорошим выбором для 3D-моделирования облака точек. Он может работать в самых разных условиях окружающей среды и обеспечивать 55 минут полета при оснащении выбранным вами сенсорным блоком.
  • Полезная нагрузка LiDAR: Zenmuse L1 - первая система LiDAR для БПЛА, доступная через DJI, и ее перечень функций впечатляет. Это решение позволяет отображать 240 000 точек в секунду с одним возвратом или до 480 000 точек в секунду с тремя возвратами. Встроенная камера RGB позволяет выводить облако точек с истинным цветом, а LiveView в облаке точек в DJI Pilot позволяет проверить, правильно ли идет сбор данных.
  • Полезная нагрузка фотограмметрии: пользователям, предпочитающим фотограмметрию, DJI предлагает Zenmuse P1 . Эта система может делать снимки каждые 0,7 секунды, чтобы быстро создавать точные и подробные модели для преобразования в трехмерные облака точек.

Для получения более подробной информации ознакомьтесь с нашими решениями.

Облако точек для BIM модели

Итак, приступим.
Рассмотрим, как создавать внешние части церкви: стены и крышу.

Откроем облако точек в BricsCAD. Для этого откроем пустой чертеж, затем вставим облако точек и обрежем его до соответствующего объёма.

Как это сделать?

  1. Используйте команду PointCloudAttach, чтобы прикрепить исходный файл облака точек к файлу .dwg.
    Примечание. Вы можете подгрузить следующие форматы файлов:
    .las, .pts, .ptx, .rcp, .rcs.
  2. Вставьте облако точек, используя точку с координатами 0,0,0 как базовую.
    Примечание. Процессы загрузки и обработки облака точек выполняются параллельно в фоновом режиме, и для больших объемов может потребоваться некоторое время.
  3. По окончанию загрузки будет выдано оповещение. Иногда для отображения облака потребуется выполнить регенерацию экрана. Чтобы работать только с частью облака точек, сделайте обрезку. Для этого используйте команду BIMSection с опцией Detail и обрежьте изображение так, чтобы вы могли видеть только ту часть облака точек, которая вам нужна.

Трассировка контура

Для улучшения видимости контура сделаем новое сечение, затем обведем стены полителом. Не привязывайтесь к конкретной высоте, зададим ее позже.

Как это сделать?

  1. Используйте команду BIMSection с опцией Detail для обрезки лишней части вокруг церкви. Установите вид и обрезку таким образом, чтобы экран напоминал вид сверху:
  2. Измерьте расстояние между точками, чтобы получить толщину стены.
  3. Используйте инструмент Политело, чтобы нарисовать план этажа. Возьмите толщину по предыдущему шагу (в этом примере: около 1 м) в качестве толщины стенки.
    Совет: включите режим привязки и ОРТО, пока обводите стены. Это даст более точный конечный результат. Теперь у вас должно быть что-то похожее на это:

Добавление колонн и контрфорсов

Завершив обводку стен, добавим колонны и контрфорсы.

Как это сделать?

  1. Для колонн:
    1. Используйте инструмент Многоугольник, чтобы сделать восьмиугольную форму.
    2. Выдавите форму произвольной высоты.

    Создание крыши

    Для создания крыши воспользуемся инструментом Политело. Используя инструмент Манипулятор, развернем ее в соответствие облаку точек.

    Как это сделать?

    1. Отключите обрезку и просмотрите всю модель.
    2. Скрыть облако точек.
    3. Постройте наклонную крышу, используя плоские тела (ширина 0,5 м), поверх стен. Вид, когда стены скрыты:
    4. Наклоните крышу внутрь на 45 °: используя длинное нажатие на объекте и с помощью инструмента Манипулятор.
    5. Используйте L-соединение для крыши.
    6. Используйте команду DmPushPull для улучшения внешнего вида.
    7. Продолжайте создавать секции крыши. Используйте облако точек 3D в качестве образца.
    8. С помощью Манипулятора регулируйте наклон крыши, стремясь закрыть стыки.
    9. Контролируйте перекрытия при помощи L-соединение и Разрез.
    10. Повторите эти действия, пока вы не будете довольны крышей. Теперь у вас должно быть что-то похожее на это:

    Соединение стен и крыши

    Измените высоту стен при помощи инструмента PushPull, пока они не достигнут крыши. После вычитаем стены с крыши, чтобы получить аккуратное соединение. Можно использовать L-соединение, но со сложными крышами данная операция не всегда дает желаемые результаты.

    Как это сделать?

    1. Показать все, кроме облака точек.
    2. Выберите верхнюю грань стены.
    3. Используйте команду SelectAlignedFaces, чтобы выбрать верхние грани стен.
    4. Выполните команду DmPushPull стены к самой высокой отправной точке крыши.

      У вас должно получится что-то похожее на это:
    5. Для улучшения внешнего вида удалите лишнюю геометрию.
    6. Используйте Примыкание к ближайшему, чтобы состыковать торцы стен с крышей.
    7. Выполните вычитание. Теперь у вас должно быть что-то похожее на это:
    8. Доделайте дополнительное помещение, сбоку церкви. Сделайте для него наклонную крышу. (Используйте инструменты Политело, Манипулятор, Вычитание и Примыкание к ближайшему). Теперь у вас должно быть что-то похожее на это:

    На этом все. В следующей статье мы продолжим работу с облаком точек и доработаем детали первоначальной модели.

    Начните использовать облака точек в BricsCAD сегодня.
    Загрузите демо-версию BricsCAD.

    Дальше будет интересная информация :) Особенно для тех, кто был (до сегодняшнего дня) не очень знаком с компьютерной графикой..

    Прежде чем начнем, нам понадобится программа MeshLab, скачать её можно вот тут.

    Если вы успешно преодолели описанные в прошлых постах этапы, то у вас должна быть папочка в которой лежит файл с расширением PLY .
    У меня этот файл лежит вот по такому пути:
    d:\Research\Photogrammetry\PPT\temp\osm-bundler-p3ydou\pmvs\models\option-0000.ply
    Повторюсь, в этом файле хранится облако точек (Point cloud - на бусурманском), сгенерированных на основе принципов фотограмметрии . То есть это еще не полноценный трехмерный объект, который можно, например, напечатать на 3D принтере..
    Что бы увидеть это облако точек - запускаем программу MeshLab и перетаскиваем в неё наш *.PLY файл..
    Файл загружается и мы должны увидеть примерно нечто такое:





    Сейчас у нас всего 1 слой - исходное облако точек.
    Моя задача сейчас превратить эти точки в поверхность.. Делать это будем в два этапа.

    Этап 1 : создаем упрощенную основу..

    1) Проверяем, что точки ориентированы правильно. Для этого идем в меню render и включаем режим отображения нормалей - "show normal\curvature":


    Появляются длинные синие линии (как шерсть:). По этим линиям хорошо видно ориентацию точек.. у меня ориентация сейчас вполне традиционная.. так что можно двигаться дальше.
    Но если у вас вдруг ориентация хорошая как на изображении, то её всегда можно инвертировать.. но это отдельная тема..

    2) Теперь упрощаем само облако точек.. что бы затем создать на нём упрощенную основу..
    (нормали можно отключить, что бы не мешали)
    Что бы произвести какие то изменения с объектом в MeshLab его нужно "прогнать" через так называемый "фильтр". Этих фильтров огромное количество на все случаи жизни :) .. В данном случае нам нужен фильтр "Poisson-disk Sampling" :



    Появляется окно настроек фильтра.. Нас интересует два параметра:
    "Number of samples" - вводим там 20000.
    Это означает что после прохода через этот фильтр от исходного облака точек останется ровно 20 тысяч точек. Сейчас же в моем облаке 123309 точек. Информация об этом написана внизу экрана ..
    Второй параметр который нас интересует - нужно поставить галочку напротив "Base Mesh Subsampling"..
    В итоге должно мои настройки выглядят так:


    Ещё обратите внимание на белое поле справа - это список слоёв.. Пока что в нём всего один наш базовый слой.. Но как только я применю фильтр - то появится новый слой - с 20 тысячью точек.. И так, нажимаем кнопку "Apply"


    Как я и предсказывал - появился новый слой.. К стати, напротив каждого слоя слева есть значек "глаз".. если его выколоть (тыкнуть в него мышкой) - то слой выключится, не будет отображаться . Так я и сделал - отключил исходный слой и теперь вижу только один новый.

    Еще один немаловажный момент - порядок. Мой опыт крайне убедительно говорит - в деле, которое предполагает в дальнейшем усложнение - лучше изначально стараться придерживаться какого то порядка\правил, который в дальнейшем позволит легко ориентироваться в проекте..
    В случае с мешлабом порядок можно начинать с того, что давать всем слоям понятные имена..
    Сейчас у нас два слоя :
    первый - это исходный материал.. я его назову "SourcePCloud"
    второй - упрощенный пойнтклауд(облако точек).. я его назову "simplifiedPCloud" ..
    Что бы переименовать слой - достаточно нажать правой кнопкой мышки по нему и выбрать "Rename Current Mesh":



    3) И вот теперь, наконец, мы можем создать упрощенную основу для нашей финальной детализированной геометрии.. Обязательно проверьте, что в списке слоев выделен слой с только что созданным упрощенным облаком точек!
    На этот раз нам нужен фильтр "Surface reconstruction: Poisson" :



    Нажимаем кнопку "Apply".
    Здесь может произойти несколько интересных ситуаций.. Я очень кратко опишу их.
    Если всё нормально, то спустя некоторое время (обычно до минуты) появится созданная поверхность и можно двигаться дальше.
    Но может и просто зависнуть.. если в течении минут 5, 10ти ничего не появилось - то это признак того, что все повисло.. нужно закрывать программу и все начинать с начала , только в поле Octree Depth ввести число поменьше.. Я сегодня пробовал запустить этот фильтр на исходное облако точек, и значение "Octree Depth " поставил = 10.. Так вот, мешлаб провисел полтора часа. и я его попросту вырубил и начал сначала..

    Но я надеюсь, что у вас , как и у меня - все прошло нормально.
    Обращаем внимание что в списке слоев появился ещё один новый слой, который я тут же переименовал в "base_mesh", а так же видим созданную поверхность:


    5) Включаем режим "Flat Lines" - что бы увидеть плотность сетки.. А так же поворачиваем нашу модель фронтально, как на картинке :


    Дело в том, что созданная сетка сейчас очень неравномерная и "грязноватая".. Для оптимизации пропустим нашу геометрию через фильтр " Quadric Edge Collapse Decimation ":



    В появившемся окне настроек оставляем все по умолчанию, разве что - ставим галочку на против "Planar Simplification" :


    7) И самая самая последняя оптимизация .. - применяем фильтр "Merge Close Vertices" - он сольет несколько вершин в одну, если расстояние между ними меньше порогового значения..



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

    Этап 2 : уплотняем упрощенную основу..

    Теерь необходимо подготовить уже созданную упрощенную основу для нанесения на неё детализации. Что бы упрощенная поверхность смогла принять бОльшую детализацию - нужно уплотнить её сетку в тех местах, где мы хотим добавить деталей. В нашем случае это область головы.
    Что бы выделить область (или области) которые будем детализировать, нужно активировать режим "Select Faces in a rectangular region", он находится на панели инструментов справа сверху:





    Осталось всего ничего - пропустить выделенную область через очередной фильтр, который повысит детализацию сетки .. Для этого нам понадобится фильтр
    "Subdivision Surfaces : LS3 Loop":
    (обратите внимание что бы в списке слоев был выбран слой с этой поверхностью)


    В появившемся окошке можно настроить параметры увеличения детализации. Вы можете с ними играться сами.. В моем примере я, вспомнив Джеймса - ввёл число 0.0007:
    (чем меньше число тем плотнее сетка)



    И так! наша основа готова принять финальную детализацию!
    Прежде чем это сделать - уберем красное выделение, оно нам больше не понадобится. Для этого, опять же, идем в фильтры : Filters->Selection->Select None:


    В появившемся окне нажимаем Apply и выделение пропадет.

    Теперь для порядка делаем дубликат этого слоя и называем его : base_mesh_subdivided.
    И сохраняем проект.


    Это нужно для того случая, если MeshLab вдруг повиснет или произойдет еще что то нежелательное (а я не нашел тут функции CTRL+Z )) - мы всегда можем открыть предыдущую сохраненную версию.. и спокойно продолжить работу не с нуля..

    Этап 3 : Наносим детализацию на упрощенную основу..

    Суть следующая: у нас есть очень высоко детализированное облако точек.. которые хорошо описывают поверхность.. а так же есть как-бы пластилиновый кусок упрощенной формы, на который мы хотим нанести детализацию, которая есть в облаке точек.

    И в MeshLab для этого есть отличный инструмент - "Vertex Attribute Transfer". Если говорить очень упрощенно, то он позволяет скопировать значение позиции одной точки на другую.. таким образом мы сейчас с помощью облака точек, как-бы "выдавим" из нашей упрощенной "пластилиновой" поверхности все детальки.

    Да, помимо копирования позиции , этот инструмент позволяет копировать и другие свойства точки, например - цвет! Если вы сейчас включите режим отображения "Smooth" , то увидите, что наша поверхность абсолютно белая.. :



    Но прежде, чем начать процедуру переноса атрибутов, я делаю новый дубликат слоя и называю его "mesh_withDetails" - это будет тот слой, на который я буду наносить финальные штрихи.. :



    Вот посмотрите что будет когда мы применим Filters->Sampling->Vertex Attribute Transfer
    (не забудьте с начала выделить новый слой : base_mesh_subdivided)


    Target Mesh - это цель.
    Здесь выбираем слой, к которому хотим применить этот фильтр, тоесть наш слой с упрощенной поверхностью (base_mesh_subdivided).


    У меня результат получился вот такой (обратите внимание, что я отключил лампочку, что бы видеть чисто геометрию с текстурой, без дополнительного освещения) :








    Но это ещё не всё.. Наша моделька сейчас слегка "тяжеловатая".. и её нужно немного подчистить - убрать лишние вершины(вертексы).. После применения трансфера атрибутов некоторые вершины оказались практически в одной точке.. и их правильнее объединить в одну. Это мы и сделаем.. Воспользуемся уже ранее применяемым фильтром "Merge Close Vertices" Но на этот раз нам нужно сохранить большую детализацию, по этому в поле вводим число не 0.004 как в первый раз, а 0.0002.


    И видим что так мы отфильтровали 84684! вершины.. что очень неплохо оптимизировало финальную модель!

    Небольшая инструкция по работе с данными лазерного сканирования при проектировании фасадных систем и светопрозрачных конструкций. Рекомендации к используемому софту, советы в работе и наставления. Поехали!

    Основная идея этой статьи - научить и показать потенциальному пользователю цифровых данных то, что этими данными пользоваться легко, просто и удобно.
    Чаще всего нет необходимости делать упрощающую обработку данных лазерного сканирования (выполнять оцифровку в 3D при помощи 3D-полилиний или точек автокада, плоскостей и покрытий) для продуктивной и эффективной работы с полученной информацией.

    Облака точек это не страшно, главное знать что и в какой последовательности с ними делать.


    Для работы в среде Autodesk нам необходимо в первую очередь подготовить данные (облака точек лазерного сканирования) для работы именно в этом ПО. С этим помогает Autodesk ReCap. Он импортирует в свои проекты облака точек различных форматов, и формирует нечто вроде внешней ссылки на данные лазерного сканирования, которые можно загрузить в AutoCAD, Navisworks, Revit и т.п. При этом массив информации уже не загружает чертеж, являясь внешней ссылкой, однако с этими пространственными данными уже можно работать из пространства чертежа.


    Основная проблема, с которой сталкиваются все впервые увидевшие облако точек перед собой - это то, что данных много. Действительно - мы видим полную цифровую копию, включая людей, мусор, стройматериалы, снег и т.п. Поэтому первая задача - научится правильно сегментировать облака точек. Делить, чистить, оставлять только нужное, скрывать лишнее. Это можно делать стандартными средствами Автокада, а можно поставить сверху вспомогательное ПО - FARO As-built for AutoCAD/Revit. Это комплекс вспомогательных функций, большая часть из которых вам врятли пригодится, однако за богатые возможности сегментации - рекомендовано к использованию. Вот краткий курс в картинках:


    Когда мы смогли оставить перед собой только необходимую информацию - можно приступать к настройке пространства чертежа и визуализации самого облака точек. Мы можем менять размер точек, настраивать прозрачность облаку, делая материал удобным к просмотру. Настраивать варианты визуализации в зависимости от условий и задачи - включать отображение "по интенсивности, в котором легко различимы бетон и кирпич, или делать облако монотонно белым, или включать реальные цвета, если съемка производилась с окрашиванием точек с панорам. Это все не обязательно, но очень упрощает работу с данными и повышает производительность.

    Читайте также: