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

Doom Rate: 2
Ссылка на пост №1 Отправлено: 03.01.13 12:07:54
Я вот решил освоить рендеринг этой великой игры. До этого понял весь движок Вольфенштейна 3д, но в случае с думом всё куда интереснее. И у меня несколько вопросов к думерам, разбирающимся и в технической части игры (заодно и узнаем, много ли их тут на форуме, хехе).
В инете много где пишут, что в Думе, мол, используется рейкастинг. По-моему, это не так, хотя я, может, и не прав. Раасскажите, каким образом в игре отрисовываются SEGS (и, соответственно, SIDEDEFS) , если они на карте заданы по сути только точками ? Если всё-таки используется рейкастинг, то как происходит трассировка лучей до такой линии?
P.S. исходники, конечно, смотрел, но несмотря на то что Кармак пишет вполне чисто и красиво, не понял.
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №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
BFG2407
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 58 points
1582

Doom Rate: 1.67
Ссылка на пост №3 Отправлено: 11.02.13 19:43:25
Korshun
Смею оспорить: Кен нигде не опровергал, что Build рейкаст. Технология строится на рейкастинге, т.е. мы бросаем луч. Для того, что-бы понять что-куда, скачай с сайта Ken Silverman демку, для QBasicа, которую делал сам Кен, что-бы понять как в думе работают уровни. И еще, то, что ты описал и есть рейкаст! Просто поверь на слово ;)
2 1
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №4 Отправлено: 11.02.13 21:33:59
BFG2407 :
Смею оспорить: Кен нигде не опровергал, что Build рейкаст.

Опровергал на форуме jfDuke (http://www.jonof.id.au). Там очень долго сидел сам Кен. Говорил, что сам не знает, кто сказал что билд это рейкастер, и что на самом деле это не так... Буквально несколько месяцев назад форум работал, но счас его закрыли и из кеша гугла тоже пропало.

BFG2407 :
Технология строится на рейкастинге, т.е. мы бросаем луч.

Никаких лучей мы не бросаем, а заполняем стену на экране по двум концам.

BFG2407 :
Для того, что-бы понять что-куда, скачай с сайта Ken Silverman демку, для QBasicа, которую делал сам Кен, что-бы понять как в думе работают уровни.

Это же то старьё когда билд ещё был тайловым. После телефонного разговора с Кармаком Кен выкинул рейкастинг и сделал сектора как в думе.

BFG2407 :
И еще, то, что ты описал и есть рейкаст! Просто поверь на слово

А вот не поверю ;) Рейкастинг это когда бросаются лучи (например, как в вольф3д). А в думе лучей для рендеринга не бросается
1 2
sidav
Recruit
Next rank: Marine after 8 points
12

Doom Rate: 2
Ссылка на пост №5 Отправлено: 12.02.13 21:51:31
Korshun , спасибо за почти доходчивое объяснение. Правда, про проецирование на экран я не совсем понял - что представляет собой FOV? (само определение я знаю - field of view. Меня интересует именно в данном контексте - это интегер какой-то?)
p.s. А эта твоя "недорисовалка" ещё осталась где-нибудь?
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №6 Отправлено: 12.02.13 22:32:11
Field of view это угол. Угол может задаваться в чём хочешь: в радианах, в градусах или в своих единицах (в думе угол это short, в окружности 65536 углов). Главное чтобы были соответствующие тригонометрические функции. Да и пожалуй сходу я формулу неправильную написал.

Рендерера у меня было два, более хороший удолил, более старый - глюкалово и забил давно и легче новый написать. Код грязный, текстурирование стен поломано, проекция неправильная :/
1 2
sidav
Recruit
Next rank: Marine after 8 points
12

Doom Rate: 2
Ссылка на пост №7 Отправлено: 12.02.13 23:08:52
Korshun, исходников, я так понимаю, не осталось?
по теме: а как тогда отрисовывались стены, концы (VERTICES) которых не укладывались в FOV? допустим, мы смотрим на стену и видим только её середину, а края "не влезают" в поле зрения?
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №8 Отправлено: 13.02.13 18:09:02
Ну исходники более нового и хорошего рендерера не сохранились. А старый, как я уже сказал, УГ по всем параметрам.

sidav :
а как тогда отрисовывались стены, концы (VERTICES) которых не укладывались в FOV?

А вот я сам не разобрался :/. В этом случае мой рендерер начинал неправильно рендерить стену. Уверен, что дум как-то очень просто проверяет, выходит ли вершина за fov, и если да, то ограничивает их... Сейчас очень лень лезть разбираться :/
1 2
sidav
Recruit
Next rank: Marine after 8 points
12

Doom Rate: 2
Ссылка на пост №9 Отправлено: 13.02.13 19:23:09
Korshun :
А старый, как я уже сказал, УГ по всем параметрам.
а можешь хотя бы им поделиться?

BFG2407 :
Для того, что-бы понять что-куда, скачай с сайта Ken Silverman демку, для QBasicа, которую делал сам Кен, что-бы понять как в думе работают уровни.
что-то непонятное написал. Эта демка тайловая, с Ъ-рейкастингом. В Думе же тайлов нет вообще. Не думаю, что Кен писал не имеющий никакого отношения к Думу движок чтобы понять как работает Дум.
Скрытый текст:

он же совсем не глупый человек - глупец такой хороший движок как билд не написал бы.


BFG2407 :
И еще, то, что ты описал и есть рейкаст! Просто поверь на слово ;)
Рейкастинг - ray casting - переводится как "бросание лучей" или "пускание слюней лучей". То есть, по определению, мы должны бросать луч из камеры к объектам, и смотреть где луч пересекает объекты сцены. Ну-ка, скажи, где в описанном коршуном примере есть трассировка луча и столкновение с объектами?
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №10 Отправлено: 13.02.13 21:00:22
sidav :
можешь хотя бы им поделиться?

http://www.mediafire.com/download.php?9trvvavpko1hq4d
Перспектива там неправильная. Текстурирование такое, что лучше бы его и не было.

Ещё если впадлу компилировать этот хлам, то вот какие-то залежавшиеся бинарники:
http://www.mediafire.com/download.php?6tunqan4263kya7 - новая версия.
http://www.mediafire.com/download.php?raz768jmwdc1y4q - старая версия.

sidav :
Не думаю, что Кен писал не имеющий никакого отношения к Думу движок чтобы понять как работает Дум.

Кен пытался сделать движок, имеющий схожие с думом возможности. Но до разговора с Кармаком пытался достичь их тайлами. Кстати есть и гораздо более продвинутая демка чем то QBasic-УГ, а именно - самая последнаяя тайловая версия билда, в которой были высоты, текстуры пола, освещение - вобщем, на первый взгляд отличий от секторов не заметно.
1 2
sidav
Recruit
Next rank: Marine after 8 points
12

Doom Rate: 2
Ссылка на пост №11 Отправлено: 14.02.13 11:07:14
Korshun :
Кстати есть и гораздо более продвинутая демка чем то QBasic-УГ, а именно - самая последнаяя тайловая версия билда, в которой были высоты, текстуры пола, освещение - вобщем, на первый взгляд отличий от секторов не заметно.
Не слышал про такую. А где?
ZZYZX
UAC Sergeant Major
Next rank: Chief Petty Officer after 29 points
821

Doom Rate: 1.38
Ссылка на пост №12 Отправлено: 14.02.13 19:50:44
По поводу рендерера, возможно не совсем в тему, но Korshun может заинтересоваться.
http://alexfru.chat.ru/r3d.html

Да, кстати, помню у Кена был полностью трёхмерный движок, действительно работающий на трёхмерных же тайлах. Сложно сказать, почему фичи из этого движка (а именно, трёхмерность) не были реализованы в Build. То-ли он был позже, то-ли там жёстко завязано на квадратности объектов.
1
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №13 Отправлено: 15.02.13 13:09:25
sidav :
Не слышал про такую. А где?

Линка не нашёл но на ютубе в видео History of Build Engine показана.


ZZYZX :
Да, кстати, помню у Кена был полностью трёхмерный движок, действительно работающий на трёхмерных же тайлах. Сложно сказать, почему фичи из этого движка (а именно, трёхмерность) не были реализованы в Build. То-ли он был позже, то-ли там жёстко завязано на квадратности объектов.

Похоже, что да, квадратность. К тому же в билде есть 3д полы (без слопов) и сектора поверх секторов, так что вроде как ничего и не потеряно.

Добавлено спустя 5 часов 12 минут 11 секунд:

ZZYZX :
http://alexfru.chat.ru/r3d.html

Посмотрел клоны вольф3д и квакодума (как ещё назвать секторный движок с тру3д рендерингом, если есть даже дум порты на основе рендерера кваки? ). Жаль что там всё под дос, и непонятно, зачем там только один экзешник нормально работает, а все остальные - тормозиловка. Движки хорошие, а вот карты к ним... Но вот софтварные тру3д движки немногие пишут, в отличие от очередного воль3д. Респект. :) И ещё я удивляюсь, что эта фильтрация текстур такая быстрая.
1 2
sidav
Recruit
Next rank: Marine after 8 points
12

Doom Rate: 2
Ссылка на пост №14 Отправлено: 15.02.13 20:30:36
"трёхмерные тайлы" это ж воксели?
а по поводу дума - там в коде зачем-то ищут угол наклона SEG'а. зачем?
Korshun
= Master Corporal =
Next rank: - Sergeant - after 50 points
240

Doom Rate: 2.58
Ссылка на пост №15 Отправлено: 16.02.13 17:49:51
sidav :
"трёхмерные тайлы" это ж воксели?

Каждый воксель может иметь только один цвет. Трёхмерные текстурированные кубы вокселями не являются. И тайлы вообще могут внутри себя иметь, например, наклонную стену, тогда такой тайл даже кубом не является.
sidav :
а по поводу дума - там в коде зачем-то ищут угол наклона SEG'а. зачем?

если угол наклона стены в координатном пространстве камеры меньше нуля (при использовании функции atan2(x, y)), то мы видим обратную сторону стены, и поэтому рисовать её вообще не надо. Хотя вроде как он для чего-то ещё нужен, не помню...
1 2
Страница 1 из 1Перейти наверх
   Список разделов - Флуд и устаревшие темы - Рендеринг ванильного дума.