Комментарии 27
понимаю, что перевод. но тени, имхо, неестественные. тут уж либо 2d и без теней. или псевдо-3d, тогда сортируем объекты по глубине при отрисовке. ну и тени на объектах тоже придется сделать.
+1
Cтатья не о том, как подобрать тип теней для конкретной игры, а о том, как реализовать динамические тени. Интереснее тот момент, что автор просто опускает откуда он берёт карту высот и как её формирует.
0
ну тогда тема не раскрыта. потому что то, что сделано — использовать нельзя. если автор на этом и остановился — то очень зря, потерял много благодарных читателей
0
45 секунд, потраченные на просмотр начального видео уже не вернуть…
-1
А готовые решения применять не пробовали, например spriteilluminator?
+1
Я не понимаю зачем делать карты высот для теней. Почему просто не сделать 3Д модели именно для расчета теней? Тогда и проблем с деревьями не будет.
0
Я не понял вопроса. 3Д модели в 2Д игру не вставишь.
Однако из 3Д моделей отлично получаются спрайты, карты нормлей и карты высот + это будет все равно проще чем полноценное 3Д/2.5Д
Однако из 3Д моделей отлично получаются спрайты, карты нормлей и карты высот + это будет все равно проще чем полноценное 3Д/2.5Д
+1
А чем карта высот отличается от 3Д модели?
-2
Карта высот — это 2,5D-модель, так сказать. В одной точке с координатами x,y не может быть нескольких значений z.
+1
Карта высот — 2Д текстура. В примере в статье это может быть один канал одной текстуры.
+2
Есть какие-то аппаратные ограничения, которые не позволяют передать в шейдер 3Д буффер?
0
Если и можно, то зачем передавать 3Д модель, когда можно ограничиться текстуркой с картой высот?
0
Чтобы сделать тень от деревьев, например.
Да и в целом смысл в генерации карты высот для этого дела теряется, когда можно сразу использовать 3Д модель.
Да и в целом смысл в генерации карты высот для этого дела теряется, когда можно сразу использовать 3Д модель.
0
Тени от деревьев здесь можно сделать просто отдельным фейком: отрисовкой отдельного спрайта с поворотом и масштабированием. Это 2D игра, мир дешевых иллюзий. Скорее всего у автора нет никаких 3D моделей и карту высот он рисует вручную, также как и карту нормалей. Для простых зданий из этой игры это вполне реально. Вы же предлагаете оторванное от контекста неоправданно дорогое решение.
0
Вы серьезно полагаете, что нарисовать карту высот проще, чем несколько кубиков грубо повторяющих геометрию объекта?
0
Проще кому? Вам, возможно. Это два решения, требующие разных навыков разработчика и разных архитектур игрового движка. Для автора статьи явно работать с пикселями проще, чем 3D моделями. У него 2D игра с пиксель-арт графикой.
Кроме того, ресурсная эффективность у карты высот на порядки выше, чем у работы с 3D моделями. Если автору работать с картой высот легче и на выходе получается более производительный алгоритм, то незачем использовать более сложную технологию, требующую больших ресурсных затрат.
Думаю, дело в том, что вы умеете в 3D и просто сделали бы другую игру. Искренне завидую, сам бы делал всё в 3D если бы умел.
Кроме того, ресурсная эффективность у карты высот на порядки выше, чем у работы с 3D моделями. Если автору работать с картой высот легче и на выходе получается более производительный алгоритм, то незачем использовать более сложную технологию, требующую больших ресурсных затрат.
Думаю, дело в том, что вы умеете в 3D и просто сделали бы другую игру. Искренне завидую, сам бы делал всё в 3D если бы умел.
0
Да нет, не мне.
Никто же не делает карты высот и карты нормалей в фотошопе.
Самый распространенный способ создать карты высот — это слепить 3Д модель и запечь геометрию в текстуру.
Нарисовать карту высот соответствующую геометрии руками — это сложная работа, требующая навыка. Слепить 3Д модель из кубиков сможет кто угодно, после 15 минут просмотра туториалов на ютьбе. А уж из 3Д модели получить карту нормалей и карту высот — плевое дело.
Я бы согласился с доводом о производительности, если бы речь шла о расчете тени на CPU. JavaScript с этим не справится нормально. Но у нас все равно шейдеры, а значит видеокарта. Даже древний Intel скушает модель из десятка полигонов без потери производительности.
А вот с доводом, что деревья можно сделать фейком — я согласен.
В принципе если код получается проще, а результат устраивает, то почему бы и не карту высот…
Никто же не делает карты высот и карты нормалей в фотошопе.
Самый распространенный способ создать карты высот — это слепить 3Д модель и запечь геометрию в текстуру.
Нарисовать карту высот соответствующую геометрии руками — это сложная работа, требующая навыка. Слепить 3Д модель из кубиков сможет кто угодно, после 15 минут просмотра туториалов на ютьбе. А уж из 3Д модели получить карту нормалей и карту высот — плевое дело.
Я бы согласился с доводом о производительности, если бы речь шла о расчете тени на CPU. JavaScript с этим не справится нормально. Но у нас все равно шейдеры, а значит видеокарта. Даже древний Intel скушает модель из десятка полигонов без потери производительности.
А вот с доводом, что деревья можно сделать фейком — я согласен.
В принципе если код получается проще, а результат устраивает, то почему бы и не карту высот…
0
Спасибо за перевод! Приятно прикапываться к автору статьи читая её на родном языке! :)
Путь карта высот приходит из воздуха, а шейдер не самый эффективный на свете, статья компактная и прагматичная, она полезна. Побольше бы таких статей и их переводов.
Путь карта высот приходит из воздуха, а шейдер не самый эффективный на свете, статья компактная и прагматичная, она полезна. Побольше бы таких статей и их переводов.
+1
Похожие динамические тени зависящие от освещения были в пиксельной 2D игре Dungeon of the Endless.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Динамические свет и тени в моей 2d игре