[Работа с 3D-графикой] Хитрости работы с MeshLab: устранение ошибок в 3D моделях
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
MeshLab является довольно популярной программой для манипуляции и визуализации трехмерных моделей, предоставляющий широкий набор инструментов. Он среди прочего предоставляет возможности по восстановлению и устранению проблем и ошибок в 3D моделях. О некоторых таких возможностях я бы хотел рассказать в статье. Кого заинтересовало, прошу под кат.Довольно популярной проблемой при работе с 3D моделями является возникновение отверстий (holes, gaps). Такие проблемы возникают из-за несовершенной процедуры реконструкции сцены или недостаточной точности и качества 3D камер типа Microsoft Kinect.Мы можем восстановить поврежденные поверхности моделей и закрыть дыры в программе Meshlab. Meshlab включает специальный фильтр для задачи закрытия отверстий в 3D моделях.В начале откроем Meshlab и импортируем модель: File > Import Mesh.Здесь показан пример модели с отверстием
Применим фильтр. Откроем в верхнем меню Filters > Remeshing, Simplification … > Close Holes
Откроется диалог настройки параметров
Введем значение для параметра Max size to be closed и нажмем Apply. В моем случае хороший результат дало значение 210.Результат применения фильтра
Выглядит неплохо, не правда ли?Как мы видим не нужно писать специальный скрипт для закрытия отверстий. Все работает "из коробки".Решение проблемы с дубликат вершины в моделиПосле применения фильтра Close Holes при экспорте модели в obj файл могут возникнуть вершины-дубликаты, т.е. вершины с одинаковыми координатами. Это может привести к некорректной обработке модели при использовании библиотек типа OpenMesh.Давайте создадим obj файл со следующим содержимым:v 0 0 0
v 1 0 0
v 0 1 0
v 1 1 0
f 0 1 2
f 1 2 3Создадим скрипт test_duplicates.py с использованием библиотеки OpenMesh (туториалы по ней можно посмотреть здесь)
import openmesh as om
import numpy as np
mesh_3 = om.read_trimesh('duplicate_vert_test.obj')
print('Test duplicate vertices')
for i, vh in enumerate(mesh_3.vertices()):
print('Vertices adjacent to vertex ', i)
for vh_n in mesh_3.vv(vh):
print(vh_n.idx())
Запустим его
Vertices adjacent to vertex 0
2
1
Vertices adjacent to vertex 1
0
2
Vertices adjacent to vertex 2
1
0
Vertices adjacent to vertex 3
Vertices adjacent to vertex 4
Добавим дубликат вершиныv 0 0 0
v 1 0 0
v 0 1 0
v 1 1 0
v 1 0 0
f 0 1 2
f 4 2 3Здесь мы добавили еще одну вершину с координатами 1 0 0.Запустим скрипт еще раз
Vertices adjacent to vertex 0
Vertices adjacent to vertex 1
3
2
Vertices adjacent to vertex 2
1
3
Vertices adjacent to vertex 3
2
1
Vertices adjacent to vertex 4
Сейчас мы видим, что для вершины 0 нет соседних вершин, зато для вершины 3 появились две соседние вершины 2 и 1. Кажется, что вершина 4 перетянула к себе всех соседей вершины 0, с которой имеет одинаковые координаты.Попробуем удалить дубликаты вершин на модели из примера выше. Импортируем модель
Здесь мы видим множество цветных граней.Применим специальный фильтр для удаления дубликатов вершинFilters -> Cleaning and Repairing -> Remove duplicate Vertices
Результат применения фильтра
Если мы применим фильтр на нашей первоначальной простой модели после экспорта модели мы получим obj файл следующего содержания vn 0.000000 -nan(ind) 0.000000
v 0.000000 0.000000 0.000000
vn 0.000000 0.000000 -0.785398
v 1.000000 0.000000 0.000000
vn 0.000000 0.000000 -0.785398
v 0.000000 1.000000 0.000000
vn 0.000000 0.000000 -1.570796
v 1.000000 1.000000 0.000000
# 4 vertices, 0 vertices normals
f 4//4 2//2 3//3
# 1 faces, 0 coords textureНа этом все. Удачи в использовании MeshLab для манипуляции с 3D моделями и до новых встреч.
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, C++, Работа с 3D-графикой, Разработка игр, CGI (графика)] Vulkan. Руководство разработчика. Image view (перевод)
- [Работа с 3D-графикой, Машинное обучение] Компьютерное зрение в промышленной дефектоскопии: Часть 2 “Генерируем стремные трубы чтобы порадовать нейронку”
- [Программирование, C++, Работа с 3D-графикой, Разработка игр, CGI (графика)] Vulkan. Руководство разработчика. Swap chain (перевод)
- [Разработка веб-сайтов, JavaScript, Работа с 3D-графикой, Canvas, IT-компании] Шейдеры, Three.js и киберпанк. Как мы делали лендинг в неоново-античной стилистике
- [Работа с 3D-графикой, Контент-маркетинг, Научно-популярное, AR и VR, Мозг] Как доставить сообщение “прямо в мозг” или немного о современном языке визуальной коммуникации
- [Высокая производительность, Информационная безопасность, IT-инфраструктура, Серверное администрирование] АМА-сессия «Service mesh 2021» 17 февраля
- [Работа с 3D-графикой, Big Data, Промышленное программирование, Разработка для интернета вещей] Вебинар «Умное решение для повышения эффективности термообработки»
- [Высокая производительность, Разработка под iOS, Разработка мобильных приложений, Разработка под Android, Микросервисы] Envoy как универсальный сетевой примитив
- [IT-инфраструктура, DevOps, Микросервисы, Kubernetes] Онлайн-интенсив «Service mesh» 19—21 марта
- [Программирование, C++, Работа с 3D-графикой, Разработка игр, CGI (графика)] Vulkan. Руководство разработчика. Window surface (перевод)
Теги для поиска: #_rabota_s_3dgrafikoj (Работа с 3D-графикой), #_mesh, #_3d_graphics, #_3d_model, #_repair, #_ustranenie_oshibok (устранение ошибок), #_3dmodelirovanie (3d-моделирование), #_rabota_s_3dgrafikoj (
Работа с 3D-графикой
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:46
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
MeshLab является довольно популярной программой для манипуляции и визуализации трехмерных моделей, предоставляющий широкий набор инструментов. Он среди прочего предоставляет возможности по восстановлению и устранению проблем и ошибок в 3D моделях. О некоторых таких возможностях я бы хотел рассказать в статье. Кого заинтересовало, прошу под кат.Довольно популярной проблемой при работе с 3D моделями является возникновение отверстий (holes, gaps). Такие проблемы возникают из-за несовершенной процедуры реконструкции сцены или недостаточной точности и качества 3D камер типа Microsoft Kinect.Мы можем восстановить поврежденные поверхности моделей и закрыть дыры в программе Meshlab. Meshlab включает специальный фильтр для задачи закрытия отверстий в 3D моделях.В начале откроем Meshlab и импортируем модель: File > Import Mesh.Здесь показан пример модели с отверстием Применим фильтр. Откроем в верхнем меню Filters > Remeshing, Simplification … > Close Holes Откроется диалог настройки параметров Введем значение для параметра Max size to be closed и нажмем Apply. В моем случае хороший результат дало значение 210.Результат применения фильтра Выглядит неплохо, не правда ли?Как мы видим не нужно писать специальный скрипт для закрытия отверстий. Все работает "из коробки".Решение проблемы с дубликат вершины в моделиПосле применения фильтра Close Holes при экспорте модели в obj файл могут возникнуть вершины-дубликаты, т.е. вершины с одинаковыми координатами. Это может привести к некорректной обработке модели при использовании библиотек типа OpenMesh.Давайте создадим obj файл со следующим содержимым:v 0 0 0 v 1 0 0 v 0 1 0 v 1 1 0 f 0 1 2 f 1 2 3Создадим скрипт test_duplicates.py с использованием библиотеки OpenMesh (туториалы по ней можно посмотреть здесь) import openmesh as om
import numpy as np mesh_3 = om.read_trimesh('duplicate_vert_test.obj') print('Test duplicate vertices') for i, vh in enumerate(mesh_3.vertices()): print('Vertices adjacent to vertex ', i) for vh_n in mesh_3.vv(vh): print(vh_n.idx()) Vertices adjacent to vertex 0
2 1 Vertices adjacent to vertex 1 0 2 Vertices adjacent to vertex 2 1 0 Vertices adjacent to vertex 3 Vertices adjacent to vertex 4 v 1 0 0 v 0 1 0 v 1 1 0 v 1 0 0 f 0 1 2 f 4 2 3Здесь мы добавили еще одну вершину с координатами 1 0 0.Запустим скрипт еще раз Vertices adjacent to vertex 0
Vertices adjacent to vertex 1 3 2 Vertices adjacent to vertex 2 1 3 Vertices adjacent to vertex 3 2 1 Vertices adjacent to vertex 4 Здесь мы видим множество цветных граней.Применим специальный фильтр для удаления дубликатов вершинFilters -> Cleaning and Repairing -> Remove duplicate Vertices Результат применения фильтра Если мы применим фильтр на нашей первоначальной простой модели после экспорта модели мы получим obj файл следующего содержания vn 0.000000 -nan(ind) 0.000000 v 0.000000 0.000000 0.000000 vn 0.000000 0.000000 -0.785398 v 1.000000 0.000000 0.000000 vn 0.000000 0.000000 -0.785398 v 0.000000 1.000000 0.000000 vn 0.000000 0.000000 -1.570796 v 1.000000 1.000000 0.000000 # 4 vertices, 0 vertices normals f 4//4 2//2 3//3 # 1 faces, 0 coords textureНа этом все. Удачи в использовании MeshLab для манипуляции с 3D моделями и до новых встреч. =========== Источник: habr.com =========== Похожие новости:
Работа с 3D-графикой ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:46
Часовой пояс: UTC + 5