Comments 17
Шикарно!
Надо найти старую демку и заново пройти (e3-1220/16gb ddr3/ssd-480/HD7750)
Надо найти старую демку и заново пройти (e3-1220/16gb ddr3/ssd-480/HD7750)
В шутерах наподобие Quake использовалось двоичное разбиение пространства (binary space partitioning, BSP), а Turok выбрал совершенно иной подход: в нём применялись только статичные меши.Что, простите? BSP это технология, позволяющая попилить пространство и не отрисовывать то, что не видно на экране, с целью выдавить немного фпс из машинки. Статические меши-то тут при чем?
Абсолютно причем. Выпиливая из BSP ненужные полигоны вы получаете динамический меш, который обновляется каждый кадр и передаёте его в GPU. Так работали движки на основе quake. В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.
Ок, вроде смысл понял.
Я проще скажу. Разработчики игрового уровня Quake должны были делать уровень подобно созданию деталей в современных 3D CAD системах: Autocad, Компас и др. Разработчики Турок (а еще сюда можно добавить TES3-5, GTA3-5, Stalker, Crysis и др.) — просто расставляли заранее сделанные текстурированные детали по уровню, как им удобно.
Но сами детали, из которых собирать уровень всё равно надо было делать подобно созданию деталей в современных 3D CAD системах :)
В современном 3D MAX очень много инструментов, которыми CAD не обладают. Да и работа в них отличается. В CAD, в основном, я пользуюсь инструментами выдавить, вырезать и сплайнами (кстати, тоже самое в редакторе карт для Quake и Half-Life), а в MAX работаю на уровне вершин и полигонов.
Но мне самому не нравится такой подход, когда уровень собирают по кусочкам из деталек, что-то уникальное сделать там сложно. Полет фантазии приходится ограничивать.
Но мне самому не нравится такой подход, когда уровень собирают по кусочкам из деталек, что-то уникальное сделать там сложно. Полет фантазии приходится ограничивать.
Занятно, в Half life 2 есть уровень, где гордон пробирается под мостом. Мост в этой локации сделали одним большим мешем-декорацией. Т.е. не используя примитивы «браши» редактора, которыми создают большую часть остальных уровней.
Half-Life 2 использует сходный с Quake механизм удаления невидимых поверхностей — BSP + PVS, но для практически целиком просматриваемых конструкций моста он не подходит.
Это известная проблема — ещё со времён Quake есть типы брашей, например func_wall, которые не участвуют в построении основного BSP дерева уровня* и не влияют на построение его PVS. Всякие мелкие детали, кнопки, тонкие металлоконструкции дают лишние разбиения, раздувают число листьев в BSP-дереве, при этом практически ничего не скрывают.
Но даже браши func_wall обходятся/рисуются дороже моделек — как обычные стены, с картой освещения, проекцией текстур и т.д.
Решение сделать целый мост мешем-декорацией вполне обосновано :)
Тем более для моделек там неплохо работают уровни детализации (LOD)
* уровень в Quake состоит из нескольких «моделей» и у каждой из них своё BSP дерево, там их лес :). Первая модель есть сам уровень, остальные это всякие двери, подъемники и т.п. Спец. браши выносятся из первой модели в отдельные.
Это известная проблема — ещё со времён Quake есть типы брашей, например func_wall, которые не участвуют в построении основного BSP дерева уровня* и не влияют на построение его PVS. Всякие мелкие детали, кнопки, тонкие металлоконструкции дают лишние разбиения, раздувают число листьев в BSP-дереве, при этом практически ничего не скрывают.
Но даже браши func_wall обходятся/рисуются дороже моделек — как обычные стены, с картой освещения, проекцией текстур и т.д.
Решение сделать целый мост мешем-декорацией вполне обосновано :)
Тем более для моделек там неплохо работают уровни детализации (LOD)
* уровень в Quake состоит из нескольких «моделей» и у каждой из них своё BSP дерево, там их лес :). Первая модель есть сам уровень, остальные это всякие двери, подъемники и т.п. Спец. браши выносятся из первой модели в отдельные.
Это немножко не так :)
Для простоты — меш это набор треугольников с одной и той-же текстурой.
Модели врагов и оружия в Quake — цельные меши, но сам уровень использует множество текстур, поэтому состоит из нескольких мешей.
BSP дерево в Quake статично, и видимость определяется для листьев дерева целиком.
У каждого листа есть перечень других листьев, которые оттуда видно (PVS).
Лист статичен и содержит несколько мешей по числу текстур, использованных в нём (выпуклой многогранной области)
Это набор статических мешей, который меняется только когда камера переходит из одного листа BSP дерева в другое. В целях оптимизации несколько мешей с одной текстурой объединялись, но это не каждый кадр, а раз для листа (вот наверное единственное что «динамический меш»), но Quake и без этого работает.
GLQuake точно так-же работает. Модели врагов в Quake были статическими мешами, определёнными для кадра анимации, тогда как Turok ещё и скиннинг/интерполяцию делал.
BSP это технология, позволяющая попилить пространствода, и отсортировать объекты
и не отрисовывать то, что не видно на экране— так было в Doom, но в Quake для этого используется PVS, который основан на выпуклых областях и порталах между ними (утилита vis) — BSP лишь один из способов разбить уровень на выпуклые области чтобы рассчитать видимость, причём разбиение далеко не самое лучшее.
Для простоты — меш это набор треугольников с одной и той-же текстурой.
Модели врагов и оружия в Quake — цельные меши, но сам уровень использует множество текстур, поэтому состоит из нескольких мешей.
Выпиливая из BSP ненужные полигоны
BSP дерево в Quake статично, и видимость определяется для листьев дерева целиком.
У каждого листа есть перечень других листьев, которые оттуда видно (PVS).
Лист статичен и содержит несколько мешей по числу текстур, использованных в нём (выпуклой многогранной области)
вы получаете динамический меш, который обновляется каждый кадр
Это набор статических мешей, который меняется только когда камера переходит из одного листа BSP дерева в другое. В целях оптимизации несколько мешей с одной текстурой объединялись, но это не каждый кадр, а раз для листа (вот наверное единственное что «динамический меш»), но Quake и без этого работает.
В современном мире у вас есть статические меши уже хранящиеся на GPU и вы просто делаете вызов на их отрисовку.
GLQuake точно так-же работает. Модели врагов в Quake были статическими мешами, определёнными для кадра анимации, тогда как Turok ещё и скиннинг/интерполяцию делал.
>Однако когда игрок получает более тяжёлое вооружение и по всему экрану начинают появляться взрывы, скорость падает до 10fps.
Забавно, в детстве этот эффект просадки в динамичных играх серии Twisted Metal (на PS1) давал эффект, напоминающий стилизованное слоу-мо. И это доставляло.
Не играл в Turok, но судя по статье эта механика управления была удачной и была применена на в игре Syphon Filter в 1999, любителям стелс-шутеров рекомендую. Хорошая, художественно целостная графика и локации, сюжет, атмосфера.
Забавно, в детстве этот эффект просадки в динамичных играх серии Twisted Metal (на PS1) давал эффект, напоминающий стилизованное слоу-мо. И это доставляло.
Не играл в Turok, но судя по статье эта механика управления была удачной и была применена на в игре Syphon Filter в 1999, любителям стелс-шутеров рекомендую. Хорошая, художественно целостная графика и локации, сюжет, атмосфера.
Скриншоты







Sign up to leave a comment.
Почему Turok: Dinosaur Hunter для N64 на годы опередил своё время