Русский
Русский
English
Статистика
Реклама

Хитрости работы с MeshLab устранение ошибок в 3D моделях

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 npmesh_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  021Vertices adjacent to vertex  102Vertices adjacent to vertex  210Vertices adjacent to vertex  3Vertices 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  0Vertices adjacent to vertex  132Vertices adjacent to vertex  213Vertices adjacent to vertex  321Vertices 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
К списку статей
Опубликовано: 20.02.2021 20:08:41
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Работа с 3d-графикой

Mesh

3d graphics

3d model

Repair

Устранение ошибок

3d-моделирование

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru