Удалить закрытые грани на закрытой сетке - PullRequest
5 голосов
/ 15 апреля 2011

Мне нужно удалить некоторые скрытые грани, которые находятся внутри замкнутой треугольной сетки.Я нашел способ сделать это, используя MeshLab , но есть две проблемы: 1) в статье говорится, что в некоторых случаях она может потерпеть неудачу (вы можете представить, в каких случаях?) И 2) я бынравится делать это программно (знаете ли вы о какой-либо существующей реализации?).Я даже не знаю названия этого вида упрощающих фильтров.

Буду очень признателен за любую подсказку.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

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

  1. Рассмотрим один треугольник в сетке.Нарисуйте три линии между тремя вершинами треугольника и точкой камеры.(Если камера находится бесконечно далеко, просто рассмотрите направление точки обзора.)
  2. Если все нарисованные линии пересекаются с триангулированной поверхностью, не отображайте рассматриваемый треугольник.Если это делают только некоторые из них, частично покажите треугольник.
  3. Повторите для всех треугольников в сетке.
0 голосов
/ 20 июня 2013

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

Римлянам решение может быть приемлемым, если вы хотите смотреть на объект только с 1 стороны. Поскольку невидимые поверхности могут стать видимыми, если повернуть камеру, это неприемлемое решение.

Использование заливки работает с многомерными массивами, но также работает и с трехмерными координатами? поскольку поверхности не всегда (int) и имеют другой наклон, чем (1,0,0), (0,1,0) (0,0,1), этот подход, с моей точки зрения, также не работает.

случаи, в которых алгоритм может потерпеть неудачу: Вычисленное значение окклюзии говорит вам, находятся ли вершины вашей поверхности внутри вашего объекта. Однако: хотя все вершины находятся внутри объекта, часть поверхности может отображаться в любом случае. Подумайте об этом: у вас есть три возвышенных объекта, каждый из которых содержит вершину внутри. Хотя вершины не показаны, поверхность между ними частично видна.

Я не могу вам помочь, так как я также ищу алгоритм, который может это сделать.

приветствует

...