Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
Рендеринг ванильного дума.
   Список разделов - Doom и его порты - Рендеринг ванильного дума.Ответить
АвторСообщение
sidav
Recruit
Next rank: Recruit after 8 points
2

Doom Rate: 2
Ссылка на пост №1 Отправлено: 03.01.13 12:07:54

Я вот решил освоить рендеринг этой великой игры. До этого понял весь движок Вольфенштейна 3д, но в случае с думом всё куда интереснее. И у меня несколько вопросов к думерам, разбирающимся и в технической части игры (заодно и узнаем, много ли их тут на форуме, хехе).
В инете много где пишут, что в Думе, мол, используется рейкастинг. По-моему, это не так, хотя я, может, и не прав. Раасскажите, каким образом в игре отрисовываются SEGS (и, соответственно, SIDEDEFS) , если они на карте заданы по сути только точками ? Если всё-таки используется рейкастинг, то как происходит трассировка лучей до такой линии?
P.S. исходники, конечно, смотрел, но несмотря на то что Кармак пишет вполне чисто и красиво, не понял.
Korshun
- Corporal -
Next rank: = Corporal = after 2 points
168

Doom Rate: 3.43
Ссылка на пост №2 Отправлено: 10.01.13 21:11:19

Дум является 2.5D движком, но не рейкастером. А пишут про рейкастинг в думе... Да это просто так после вольф3д повелось, что 2.5Д = рейкастинг, хотя это не так. Билд тоже рейкастером называют, и сам создатель движка это опровергает.

SEGS отрисовываются достаточно просто, я даже свою недорисовалку делал.
1) Передвигаем две точки чтобы камера была в начале координат.
2) Проецируем вершины на экран, учитывая горизонтальный FOV. (ну то есть
screen_x = 0.5 * screen_width * (1 + atan2(x, y) / (0.5 * fov))
);
3) Находим расстояния от плоскости камеры до вершин. (тут у меня мой недорендерер заглючил при рисовании стен за пределами экрана. Уверен, что дум как-то ограничивает вершины по fov)
4) Рисуем серию столбцов на экране между двумя спроецированными вершинами, линейно интерполируя все параметры, зависящие от дальности (высота столбца стены, масштаб столбца текстуры, етц).

И если ещё не читал, то обязательно читать:
http://doomwiki.org/wiki/Doom_rendering_engine
и
http://fabiensanglard.net/doomIphone/doomClassicRenderer.php
Хотя я сам там многого не понял в деталях. Особенно то, как правильно рисовать виспланы поверх остального. :/

EDIT: формулу проекции написал неправильную.
1 2
Страница 1 из 1Перейти наверх
   Список разделов - Doom и его порты - Рендеринг ванильного дума.

Игнор-лист
© iddqd.ru