Войти
UnityФорумОбщее

Генерация меша, определение прямой видимости точек. Подскажите плз. алгоритм.

#0
16:57, 15 янв 2023

С построением вроде разобрался более или менее, с текстурными координатами тоже вроде разобрался, заполнение многоугольника треугольниками то же сделал.

Вопрос такого плана, как найти все точки, которые находятся в прямой видимости от новой точки?
(Наверняка уже 100 раз придумано и просто надо знать что посмотреть.)
Может кто подскажет, как это называется, что почитать?

Если порисовать картинки, то невооруженным взглядом видно, что есть логика с пристроением перпендикуляров, определением их пересечений и расстояний до них, но как-то не могу сформулировать общую концепцию, если кроме одной координаты например Z использовать 2 координаты например X и Z. В каком случае по какой определять? А если их будет все 3?

Как проще всего определить находится ли точка в прямой видимости и не перекрывается самой фигурой?

VisibleZone | Генерация меша, определение прямой видимости точек. Подскажите плз. алгоритм.
#1
18:01, 15 янв 2023

Скалярное произведение нормали вершины на вектор от новой точки должно быть отрицательное. Если фигура выпуклая, то все. Если нет, то дальше только проверять пересечение со всеми отрезками(2д) или полигонами (3д)

#2
18:09, 15 янв 2023

Ещё можно рендерить карту глубины для меша из новой точки и сравнивать zбуффер с расстоянием до вершины, но там тебя ждут всякие случаи, типа меш не весь попал в кадр и т.д., не зная подробностей надёжнее просто перебирать грани на цпу

#3
18:36, 15 янв 2023

>meekobold
Понял спасибо, так хоть понятно, что почитать.
Второй вариант это позже несколько ,я до такого пока не  дошел еще я даже не знаю что такое  zбуффер.

У меня пока 2D. Я пытаюсь сгенерить развертку модели и всех элементов, наложить текстуры нарисовать на них все что нужно и потом из нее согнуть и сложить уже саму модель.

Перечень крайних точек у меня есть, значит я так понял надо проверять пересечение со всеми отрезками ими образованными. Буду пробовать.

#4
20:36, 15 янв 2023

dot(N, dir)

#5
0:12, 16 янв 2023

>lookid
За команду спасибо, но все равно надо понимать что с ней делать. Я пока не разобрался.
Нефига не понимаю. Может покажете пример? (Ключевой момент, проверку можно начинать с любого отрезка в данном случае проверяем с искомой точки)
Direction | Генерация меша, определение прямой видимости точек. Подскажите плз. алгоритм.

Я пока все же выдумал что-то типа такого:
Так вроде за 1 проход массива вершин, можно отсечь все невидимые, но пока не сделал с многоугольниками, где точка внутри, там он что-то косячит, но опять же скорее всего что-то выдумываю кривое как всегда.

+ Показать
#6
23:27, 18 янв 2023

>lookid

dot(N, dir)

Вот теперь вроде разобрался с дот ), да без нее я там такого понаворотил, пипец. И так и сяк и все глюки то там то тут. Но все равно, что-то совсем просто не получилось. Зато теперь хоть понятно как зону видимости сделать можно (надеюсь понятно).

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

>meekobold
>lookid
Еще раз спасибо.

#7
19:43, 11 июня 2023

похоже треугольники победили

#8
20:39, 21 июня 2023

>Мисс_Самец
Если бы вы умели читать, ну или хотя бы смотреть, то поняли бы, что в теме видимости точек я разобрался и сделал все что нужно, так что это мелочи. В частности на видео реализация показана.
Я хоть пока и не делаю ничего по играм, так как работы много, но вы правы треугольники пока побеждают.
Сделал генерацию по принципу marching cubes, но эта штука крайне ограниченная из-за фиксированного шага и не дает того, что я хочу получить. Короче сделать автоматическую развертку модели пока так и не получилось и даже идей нет как это реализовать. Уплывает или форма развертки, или UV координаты или и то и другое вместе. Как автоматом делать швы и вырезать налезающие друг на друга элементы стыкуя при этом UV придумать не могу (что бы четко было понятно что с чем состыковано без кучи дополнительных данных).

Проблема в том, что не могу переходить к следующему этапу, до тех пор пока не доделаю текущий до полностью работоспособного состояния, а текущий меня выбесил по полной. С работой закончу обязательно буду продолжать побеждать треугольники.

UnityФорумОбщее