Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: RayCasting  (Прочитано 7219 раз)
0 Пользователей и 1 Гость смотрят эту тему.
_KROL
Интересующийся

by
Offline Offline

« : 20-07-2017 08:05 » 

Здраствуйте! Не поможете ли создать трёхмерную игру(или хотя бы заготовку) с использованием RayCastingа?
Я конечно могу и OPENGL поизучать, но как-то всё-же интереснее это.
Я вроде примерно по своёму понял как это, но только теоретически, практически почему-то не получается. Жаль
1. Прорисовка
Делим размер экрана по горизонтали на угол, который мы хотим обхватить в прорисовке. Цикл(от левой до правой части)... То же самое по вертикале, только другой угол. В цикле ведём луч(аж ЭЛТ вспоминается).
2. Ведём луч
Здесь я вспомнил производные и уравнение y=k*x+b

Может я где-то не прав?

P.s. Я пишу обычно на Pascal, но можете отвечать мне на чём угодно, за исключением всяких HTML5 и т.д.
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 20-07-2017 08:44 » 

OpenGL, DirectX - это готовые системы для обсчёта 3D графики. Вам потребуется либо создать собственный движок, либо использовать готовый. Вот, например, что по поводу готовых решений думает google: https://godotengine.org

Если дело именно в самостоятельном проектировании движка, то сперва необходимо правильно поставить задачу: какого качества необходимо добиться?

А теперь немного по самому методу:
1) Каждый пиксель экрана является не просто лучом нулевой толщины, а вершиной усечённой пирамиды с квадратным основанием. Поэтому, его цвет формируется всеми объектами, которые он способен охватить, для этого этот луч необходимо разделять.
2) Для образования теней и отражений необходимо будет из каждой точки пересечения сканирующего луча проводить дополнительные лучи: нормальные и направленные на объекты освещения.

После правильной постановки задачи можно будет перейти к реализации: сперва составить перечень объектов, подумать как их хранить, какие модули их будут обрабатывать. Затем переходить к математике обсчёта.
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #2 : 20-07-2017 09:17 » 

Да нет, мне просто WOLF3D и DUKE3D нравятся, вот и хочу что-нибудь сделать...
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 20-07-2017 11:40 » 

Посмотрите здесь: http://eduke32.com
Современная реализация Duke3d с открытым исходным кодом.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines