Re[4]: Алгоритм определения координаты точки в mesh
От: DziD  
Дата: 11.10.19 15:19
Оценка:
Здравствуйте, Homunculus, Вы писали:

H>Здравствуйте, DziD, Вы писали:


H>Финальная версия алгоритма:

H>1) ищем ось вазы. То есть прямую. Для прямой в 3D надо задать точку и вектор.
H>Вектор оси симметрии — сумма всех нормалей всех треугольников. Найдя этот вектор, поворачиваем вазу так, чтоб этот вектор смотрел вниз (или вверх).
H>После этого ваза у нас стоит или на дне или дном вверх.
H>2) ищем габаритный бокс повернутой вазы. Центр этого габаритного бокса будет лежать на оси вращения вазы.
H> Нашли прямую.

H>Дальше этой прямой можно пересечь сам габаритный бокс. Но получим две точки, возможные центры дна. А нам нужна одна. Поэтому придется пересечь эту поямую с самими треугольниками вазы. Получим то, что ищем.


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

А в целом большое спасибо, направление куда ковырять понял.
Сейчас я могу определить вершины на выгнутом дне вазы (правда, пока она "правильно" ориентирована). Для этого я считаю нормали треугольников, и просто отсекаю все треугольники, которые не смотрят вниз. Далее выбираю (делю по подгруппам) все треугольники которые находятся рядом друг с другом, если получилась одна подгруппа, то значит мы попали в "дно", если несколько, то выбираю ту, у которых средняя координата высоты меньше...

Осталась проблема с ориентацией.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.