Как оценить грубую сложность 3D моделей? - PullRequest
0 голосов
/ 30 апреля 2018

Мне нужно, чтобы проект классифицировал 3D-модели в зависимости от сложности.

Под «сложностью» я имею в виду, например, 3D-модель мебели в современном стиле, которая имеет низкую сложность, но 3D-модель мебели в королевском стиле имеет очень высокую сложность.

Все 3D модели имеют тип сетки. Мне нужна только очень приблизительная оценка, надежность не требуется слишком высока, но должна быть правильной в большинстве случаев.

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

Лучше всего, если мы сможем обрабатывать внутри Meshlab, но любой другой источник тоже подойдет.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

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

Давайте рассмотрим старую и простую современную мебель: у старой потенциально много разных вершин, но их организация не "проста".

Предлагаю измерить сложность, чтобы рассмотреть:

  • количество различных углов (и телесных углов) между ребрами
  • количество длин различных ребер (например, расстояние между связанными вершинами)

Пока все хорошо. Но мы попали сюда, посчитав глобальную сложность . Что если с одним и тем же набором ребер и вершин мы упорядочим их и построим что-то, что меняется монотонно? Да, нам также необходимо учитывать локальную сложность : скажем, сложность в ограниченном пространстве.

Алгоритм принимает форму:

  • разделить пространство на более мелкие пространства
  • количество наборов разных ребер по углам и длине

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

Я думаю, у вас есть что-то интересное. Дело в том, что этот алгоритм довольно близок к некоторым методам, оценивающим размерность фрактального объекта.

Документы (ученый Google) об "оценке фрактальной размерности"

0 голосов
/ 30 апреля 2018

3D-модели состоят из вершин, и вершины соединяются вместе ребрами для формирования граней. Грубой мерой сложности с точки зрения вычислений будет подсчет вершин или граней.

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

Чтобы устранить это ограничение, я бы объединил смежные грани с конгруэнтными нормальными векторами. Если грани имеют одно ребро и имеют конгруэнтные нормальные векторы, то можно сказать, что они плоские по отношению друг к другу. Это будет иметь эффект упрощения 3D-модели. Простой объект должен иметь меньшее количество вершин / граней после этой операции, чем более сложная модель. По крайней мере, в теории.

Я уверен, что есть имя для этого алгоритма, но я не знаю его.

...