Этот курс научит вас создавать полноценный движок лучевого трассирования с нуля. Мы будем использовать алгоритм, похожий на тот, который использовался в Wolfenstein 3D. Итоговый проект будет написан на JavaScript и C. В нем будут реализованы движение игрока, вид карты в 2D, проекция стен в 3D, текстурированные стены, спрайты и другие техники оптимизации.
Этот курс будет разделен на две важные части:
Первая часть курса использует JavaScript для изучения теории и математики, лежащих в основе алгоритма лучевого трассирования. JavaScript — это простой высокоуровневый скриптовый язык, который помогает нам не отвлекаться на детали реализации.
Вторая часть курса использует язык программирования C для реализации скомпилированной версии нашего лучевого трассировщика, включая текстурированные стены и спрайты. Также на языке C мы обсудим важные аспекты оптимизации и производительности нашего кода.
Инструменты, которые вам понадобятся: Вам потребуется веб-браузер, поддерживающий JavaScript, и небольшой компилятор для C. Все эти инструменты кросс-платформенные, так что вы сможете следовать инструкциям на Windows, macOS или Linux!
Алгоритм лучевого трассирования Wolfenstein 3D, который мы будем изучать, в значительной степени основан на тригонометрии, поэтому убедитесь, что у вас под рукой есть ручка и бумага для лекций. Я постараюсь, чтобы мы рассмотрели и поняли каждую формулу, которую встретим на нашем пути!
Посмотреть больше
Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум
Ограничение времени просмотра
Вы можете просматривать пробный урок только 10 минут. Получите полный доступ, чтобы смотреть без ограничений.
Gustavo Pezzi - преподаватель университета в Лондоне, Великобритания. Он получил несколько образовательных наград в качестве учителя и также является основателем pikuma.com. Густаво преподает основы информатики и математики; его академический путь включает такие учебные заведения, как Государственный университет Питтсбурга, Городской университет Лондона и Оксфордский университет.