forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Альтернативы SkyBox для открытого мира (http://forum.boolean.name/showthread.php?t=13675)

YaLAS 08.11.2010 14:07

Альтернативы SkyBox для открытого мира
 
Доброго времени суток всем. Вопрос таковой:
Начал делать игру с "открытым миром" и столкнулся с тем, что реализация окружения мира методом SkyBox (на сайте есть почти идентичный пример) не подходит для этого. Для маленького замкнутого уровня он замечателен, а здесь нужны альтернативы.
Мир такой - корабль в море и плавать можно на большие расстояния, вода прозрачная. При скайбоксе хорошо выглядит мир только пока игрок в центре "коробки" и не часто смотрит вниз. Дно есть, но видно что оно далеко и слишком уж ровное. Если подплыть ближе к краю "коробки" то становится все очевиднее что это КОРОБКА, а посмотрев в противоположный угол можно увидеть и срезанные углы этой коробки (не смотря на то, что максимальная дистанция камеры и так 10000, а размер "коробки" 5000).
Пробовал использовать стандартный "туман", но он даже на дистанции 10000 заметно меняет цвет коробка и делает саму "коробку" явной даже для наблюдателя в центре.
Наличие на стенах коробки островов и облаков вообще не нужно, т.к. при движении они выглядят неестественно и впоследствии их заменю на реальные объекты.
Увеличить "коробку" и дистанцию камеры в сотню раз это глупо.
По сути вокруг должны быть однородные пространства - вода, воздух и дно, так что особо мудреного ничего и не требуется.

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

P.S. Примеры приветствуются. Заранее спасибо.

НУБ 08.11.2010 14:11

Ответ: Альтернативы SkyBox для открытого мира
 
двигай коробку вместе с камерой, поставь ей отрицательный ордер чтобы рендерилась первой (тогда её размеры не будут иметь значения).

YaLAS 08.11.2010 14:20

Ответ: Альтернативы SkyBox для открытого мира
 
НУБ, спасибо, только хотел сказать, что такое уже приходило в голову, но как-то все рано она меня не устраивает в этом деле.

Как допустим будет, если на расстоянии от игрока до стенки коробки появляется объект (остров, корабль) - пока он за "стенкой" он невидим, а потом РАЗ- и пролазит через стенку ...

НУБ 08.11.2010 14:24

Ответ: Альтернативы SkyBox для открытого мира
 
в таком варианте, как я описал - расстояния до всех стенок куба = бесконечность(он не пишется в z-буфер) :) Так что объекты могут внезапно резаться только дальней плоскостью отсечения камеры. Вывод - сделай туман ;)

YaLAS 08.11.2010 14:38

Ответ: Альтернативы SkyBox для открытого мира
 
Видимо не поняли друг друга.
Расстояние от игрока до края коробки всегда 5000, допустим. До края он не доплывает, хорошо. Но расстояние до всех остальных объектов в мире меняется и они могут то попадать в коробку (при приближении ближе чем на 5000) или исчезать из нее, оказавшись за гранью. Так вот корабль с 5000 тысяч точек уже видно на глаз, а огромный остров тем более, а выходит, что на 5001 (от игрока) он абсолютно невидим, а на 4999 уже резко появляется во всю высоту.
Туман был бы наверное подходящим, хорошим и даже обязательным, если не использовать скайбокс вовсе - тогда бы и остров "выходил из тумана" - отлично. НО! В сочетании со скайбоксом он очень плохо выглядит - я и цвета подбирал и дистанцию вдвое больше коробки делал (а смысл уже больше). Туман делает квадратность мира ОЧЕНЬ ЗАМЕТНОЙ! А если дистанция тумана меньше коробки, то и саму коробку уже невидно и смыслу в ней нет.

А как корректнее двигать скайбокс? Привязать его к игроку и все?

Может лучше использовать тогда уже туман и плоскость для облаков в небе и дно с помощью карты высот и все без скайбокса?

Knightmare 08.11.2010 14:45

Ответ: Альтернативы SkyBox для открытого мира
 
Еще раз для тех кто в танке. При порядке отрисовки объекта меньше 0 (EntityOrder()), объект (в нашем случае скайбокс) рисуется перед всеми объектами, и будет служить фоном. Он физически не перекрывает никакие объекты, все будет рисоваться только поверх него. Можно считать, что вместо заливки окна сплошным цветом он зальется картинкой, если так проще воспринять. Технически не имеет значения какой у него будет размер, 1х1х1 или 100500х100500х100500, выглядеть будет одинаково, важно правильно его только позиционировать относительно камеры.

НУБ 08.11.2010 15:01

Ответ: Альтернативы SkyBox для открытого мира
 
На перую часть Knightmare ответил. Про туман - отключи его на скайбоксе (entityfx), а на его текстуре нарисуй нужного цвета около горизонта, всё.


Часовой пояс GMT +4, время: 16:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot