С построением вроде разобрался более или менее, с текстурными координатами тоже вроде разобрался, заполнение многоугольника треугольниками то же сделал.
Вопрос такого плана, как найти все точки, которые находятся в прямой видимости от новой точки?
(Наверняка уже 100 раз придумано и просто надо знать что посмотреть.)
Может кто подскажет, как это называется, что почитать?
Если порисовать картинки, то невооруженным взглядом видно, что есть логика с пристроением перпендикуляров, определением их пересечений и расстояний до них, но как-то не могу сформулировать общую концепцию, если кроме одной координаты например Z использовать 2 координаты например X и Z. В каком случае по какой определять? А если их будет все 3?
Как проще всего определить находится ли точка в прямой видимости и не перекрывается самой фигурой?
Скалярное произведение нормали вершины на вектор от новой точки должно быть отрицательное. Если фигура выпуклая, то все. Если нет, то дальше только проверять пересечение со всеми отрезками(2д) или полигонами (3д)
Ещё можно рендерить карту глубины для меша из новой точки и сравнивать zбуффер с расстоянием до вершины, но там тебя ждут всякие случаи, типа меш не весь попал в кадр и т.д., не зная подробностей надёжнее просто перебирать грани на цпу
>meekobold
Понял спасибо, так хоть понятно, что почитать.
Второй вариант это позже несколько ,я до такого пока не дошел еще я даже не знаю что такое zбуффер.
У меня пока 2D. Я пытаюсь сгенерить развертку модели и всех элементов, наложить текстуры нарисовать на них все что нужно и потом из нее согнуть и сложить уже саму модель.
Перечень крайних точек у меня есть, значит я так понял надо проверять пересечение со всеми отрезками ими образованными. Буду пробовать.
dot(N, dir)
>lookid
За команду спасибо, но все равно надо понимать что с ней делать. Я пока не разобрался.
Нефига не понимаю. Может покажете пример? (Ключевой момент, проверку можно начинать с любого отрезка в данном случае проверяем с искомой точки)
Я пока все же выдумал что-то типа такого:
Так вроде за 1 проход массива вершин, можно отсечь все невидимые, но пока не сделал с многоугольниками, где точка внутри, там он что-то косячит, но опять же скорее всего что-то выдумываю кривое как всегда.
>lookid
dot(N, dir)
Вот теперь вроде разобрался с дот ), да без нее я там такого понаворотил, пипец. И так и сяк и все глюки то там то тут. Но все равно, что-то совсем просто не получилось. Зато теперь хоть понятно как зону видимости сделать можно (надеюсь понятно).
>meekobold
>lookid
Еще раз спасибо.
похоже треугольники победили
>Мисс_Самец
Если бы вы умели читать, ну или хотя бы смотреть, то поняли бы, что в теме видимости точек я разобрался и сделал все что нужно, так что это мелочи. В частности на видео реализация показана.
Я хоть пока и не делаю ничего по играм, так как работы много, но вы правы треугольники пока побеждают.
Сделал генерацию по принципу marching cubes, но эта штука крайне ограниченная из-за фиксированного шага и не дает того, что я хочу получить. Короче сделать автоматическую развертку модели пока так и не получилось и даже идей нет как это реализовать. Уплывает или форма развертки, или UV координаты или и то и другое вместе. Как автоматом делать швы и вырезать налезающие друг на друга элементы стыкуя при этом UV придумать не могу (что бы четко было понятно что с чем состыковано без кучи дополнительных данных).
Проблема в том, что не могу переходить к следующему этапу, до тех пор пока не доделаю текущий до полностью работоспособного состояния, а текущий меня выбесил по полной. С работой закончу обязательно буду продолжать побеждать треугольники.