Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 18:58   #1
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
Радость Правильное определение порядка точек в прорисовке тени в 2d-игре

Здравствуйте уважаемые программисты!
Давно тут не постил уже, прям забыл уже как тут хорошо было
Вот заинтересовал вопрос о прорисовке тени. Допустим есть некий игрок и препятствия (см. вложение) и он имеет угол обзора 90 градусов и все, что выпадает за этот угол или закрывается препятствием не должно быть отображено. Допустим неким образом я сумел просчитать координаты этих точек, где кривая тени ломается. Определяю методом перебора:
1. Проверяю доступность для "обзора" каждой из четырех точек препятствия (все объекты - прямоугольники).
2. Если точка оказывается доступной(красные круги) то добавляем ее в список точек а также пробуем спроектировать луч из этой точки с углом из точки обзора, тем самим добавляя спроектированную точку в список(угол показан жёлтым, а спроектированная точка зелёным).
3. Дальше пытаюсь отсортировать эти точки так, чтобы их можно было бы прорисовать одним циклом (для начала просто соединить в ломанную(показано белым), а в дальнейшем хочу зарисовать все, не входящее в эту фигуру чёрным или серым). Но так как все препятствия расположены хаотически то может случится ситуация, когда одно препятствие попадает в список раньше положенного.

Прошу помощи в сортировке такого списке, чтобы можно было отобразить как на картинке Спасибо за внимание.
Изображения
Тип файла: jpg Безымянный.jpg (53.4 Кб, 149 просмотров)
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 18.06.2010, 21:48   #2
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Цитата:
Но так как все препятствия расположены хаотически то может случится ситуация, когда одно препятствие попадает в список раньше положенного.
Не совсем понятно что значит раньше положенного? Можешь на скрине показать проблемный момент?

Сам думал попробовать сделать что-то с тенями, да вот руки не доходят.Есть статья про создание динамичных 2D теней. Там в основном теория на английском, но может поможет:
http://www.gamedev.net/reference/art...rticle2032.asp
Я не особо понял статью т.к не сильно разбирался да и переводил частично "на ходу".

Последний раз редактировалось Вадим Буренков; 18.06.2010 в 21:50.
Вадим Буренков вне форума Ответить с цитированием
Старый 18.06.2010, 22:44   #3
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
Вопрос

Допустим при расстановке препятствий (показано белым) имеет расстановку точек в полученном массиве (желтым) в порядке, который если отобразить просто в цикле будет выглядеть как синие линии, в отличии от нужного (белые). Интересует здравый алгоритм сортировки этих точек
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 18.06.2010, 22:56   #4
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Вроде понял проблему. Что-то не приходит идей... Я бы сделал рассчет теней для каждого объекта отдельно. В принципе разницы для процессора никакой - рассчитывается все так же, только вывод за несколько раз будет.
P.S. Можно оценить наработки?
Каким образом устанавливается порядок объектов для просчета теней (что белыми цифрами отмечены)?

Последний раз редактировалось Вадим Буренков; 18.06.2010 в 23:00.
Вадим Буренков вне форума Ответить с цитированием
Старый 18.06.2010, 23:37   #5
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Ну чтото типа того, Скачать файл "wideo0016.mp4" с файлообменника CncFiles.ru (10.7 мб)
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 19.06.2010, 00:08   #6
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Молодец, игра на уровне . Хочешь буду бетатестером ?
А пока делать нечего решил заняться тенями. Завтра начну пытаться делать рисование по той статье. Там вроде нормально написано как только кода почти нет , а тот что есть на C.
Вадим Буренков вне форума Ответить с цитированием
Старый 19.06.2010, 19:32   #7
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Dj_smart, вроде приоритет виден сразу, ...важность координат Y сверху вниз, X с лева направо. Алгоритм - пузырек (начальный курс информатики).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 19.06.2010, 20:02   #8
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Это понятно, я сразу пузырек применил, причём сортировал не по координатам а по углу относительно к герою (т.к. он может поворачиваться) и проблема была в ситуации, когда у разных точек имелся один и тот же угол (точки 4 и 5 на втор. рис) Вроде решил, в зависимости от точки, в которую попадает луч (4 точки препятствия) выбираем какую из точек поставить первой. В общем, всем спасибо.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 19.06.2010, 23:50   #9
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

В принципе тут задача на приоритет выбора вершин, а они берутся по условию нахождения "взора" в одной из четырех секторов системы координат, т.е. case 1 - 4: там пузырек и установка линий по двум ячейкам массива.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 19.06.2010, 23:52   #10
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Да, я так и поступил
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение контрольных точек на лице. hoza_syl Свободное общение 21 09.06.2010 15:46
Эффект падения тени??? Миша Общие вопросы Delphi 6 08.04.2010 19:26
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50
Определение собственных значений для матрицы 2-го порядка Игорь777 Помощь студентам 0 26.04.2009 18:33
Ошибка в прорисовке карты для игры в танчики NSvirus Паскаль, Turbo Pascal, PascalABC.NET 1 27.02.2009 21:08