Скайбокс

Скайбо́кс (англ. sky — «небо» и box — «коробка») — объект в трёхмерной графике, играющий роль неба и горизонта. Представляет собой несложную трёхмерную модель (как правило, куб), со внутренней стороны которой натянута текстура неба (так называемая «кубическая текстура»).

ТехнологияПравить

 
Пример двухмерного скайбокса

Обработка трёхмерной графики требует много вычислительной работы, поэтому «честно» просчитывать в играх объекты, находящиеся на горизонте, было бы расточительством. К тому же, трёхмерное аппаратное обеспечение имеет Z-буферы, которые из-за ограниченной разрядности отбрасывают всё, что находится далеко от камеры[1]. Поэтому удалённые объекты изображаются крайне примитивно: в виде куба, шесть граней которого — текстуры неба и горизонта. Если отобразить этот куб так, чтобы камера находилась точно в центре, будет казаться, что через камеру действительно видны небо и горы.

Скайбокс всегда следует за камерой, так что изображённые на скайбоксе объекты выглядят удалёнными в бесконечность. Движок отображает скайбокс каждый кадр в первую очередь, отключив Z-буферизацию[2].

Высокие, заметные из любой точки уровня объекты наподобие башен обычно на скайбоксе не рисуют — для них нужна не иллюзия «бесконечной удалённости», а наоборот, определённое положение в пространстве. Но существуют исключения из правил, когда на скайбоксах изображают огромные сооружения, призванные показать, что же находится за пределами игрового уровня. Подобные скайбоксы можно увидеть в Quake II, Quake 4, The Chronicles of Riddick: Escape from Butcher Bay и др.

Источником текстур может быть что угодно: фотография, рисунок или трёхмерный рендер.

Трёхмерные скайбоксыПравить

Чтобы как-то «оживить» небо, с конца 1990-х годов разработчики начали добавлять в скайбокс немного геометрии — например, слои облаков и звёзд в Unreal[3] и realMyst. В игре Grand Prix 3 цилиндрический горизонт и сферическое небо отделены друг от друга — это связано с требованием динамически менять погоду на автодроме.

В более новых играх скайбоксы составляют из нескольких слоёв, которые двигаются за игроком с неравной скоростью. Так смоделирована башня Цитадели в Half-Life 2. В уровнях, расположенных внутри Цитадели, верхние этажи башни, к которым игрок доступа не имеет, — тоже часть трёхмерного скайбокса[4]. В любом случае, геометрия скайбоксов остаётся предельно простой: например, сверхпортал из Half-Life 2: Episode Two представляет собой всего лишь один многоугольник, а видимость портала достигнута шейдерами[4]. В Half-Life 2 трёхмерные скайбоксы делаются в масштабе 1:16 — объекты рисуются в 16 раз больше их действительного размера[5].

Интересно, что в игре Portal от той же Valve игрок вообще не видит неба, и авторы даже не пытались исправить артефакты трёхмерного скайбокса при взгляде через портал. В более новых версиях движка это исправлено[5].

Нетрадиционные скайбоксыПравить

 
«Давящее» плоскостное небо в Nexuiz

В 2,5-мерных движках наподобие Doom engine скайбокс имеет вид цилиндра. В отличие от современных игр, экран не заливался скайбоксом каждый кадр, а фрагменты неба рисовались с помощью особой процедуры, когда рендерер попадал на «залитые небом» плоскости[6].

В первых трёхмерных играх (Quake) небо представляло собой «бесконечно удалённую» плоскость с движущейся по ней текстурой облаков. Такое небо выглядит «давящим», полным слоистых облаков — даже если в действительности оно синее, с лёгкими белыми облачками. В Quake 3 такой метод рисования неба также доступен наряду с кубом; кроме того, можно использовать оба метода, рисуя плоскость с давящими облаками поверх кубического скайбокса.

В некоторых играх (например, Grand Prix 3) скайбокс имеет форму сферы или купола[7]. Возможно, это связано с крайне низкой детализацией текстур и режимом программного рендеринга.

См. такжеПравить

ПримечанияПравить

  1. OpenGL Red Book — Viewing Архивная копия от 29 сентября 2010 на Wayback Machine (англ.)
  2. Gamedev.ru: Простой скайбокс
  3. Unreal Wiki: Skybox (англ.)
  4. 1 2 Комментарии разработчиков к игре.
  5. 1 2 Valve Wiki: 3D Skyboxes (англ.)
  6. Исходный код Doom был выпущен под свободной лицензией и доступен для ознакомления любому желающему.
  7. Заметно, если в настройках драйверов излишне сместить центр текселя.