HLFX.Ru Forum Страницы (4): [1] 2 3 4 »
Показать все 46 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- XashXT (https://hlfx.ru/forum/forumdisplay.php?forumid=30)
-- Динамическая смена скайбокса (https://hlfx.ru/forum/showthread.php?threadid=3857)


Отправлено Дядя Миша 22-03-2013 в 22:06:

Динамическая смена скайбокса

Тов. KRE030T не знает как реализовать динамическую смену дня и ночи в своём моде. Поскольку в XashXT на данный момент нету единой централизованной системы управлением времени суток, я решил привести пример мапперам, как это можно сделать не прибегая к кодингу, но при этом получив довольно неплохие результаты.

1. Немного теории.
Что нам потребуется для того чтобы иммитировать смену дня и ночи посредством смены скайбокса? Ну как минимум - эти самые скайбоксы с различными облаками, иммитирующие закат, рассвет, полдень. За этим далеко ходить не надо - такие скайбоксы лежат в папке valve (просто для примера). Однако движок не имеет встроенных способов плавной замены одного скайбокса другим. Что же делать в этой ситуации? Мы прибегнем к помощи 3D Sky и методу, продемонстрированному на карте demo_1 - натянем текстуры нашего небесного куба на самый обычный брашевый кубик. Если сделать это аккуратно и впоследствии выровнять скейл, то шва заметно не будет. Шов, к слову сказать, присутствует и при программной отрисовке скайбокса, и борются с ним точно так же - небольшим сдвигом текстурных координат. Итак, у нас есть скайбокс, однако он натянут на саму комнатку 3D Sky, мы не можем его плавно сфейдить, чтобы показать другой. Нам придется сделать копию нашей комнатки, немножко (на 1 юнит) сдвинуть её стенки к центру и обратить в func_illusionary. Таких комнаток следует сделать 4 шутки, проставить им rendermode texture и renderamt 0, кроме одной, та, которая будет видна при старте карты. Чтобы основная комнатка 3D Sky не вносила цветовых искажений при наших сменах скайбокса мы покрасим её стенки текстурой WHITE.
2. Практика.
Итак, у нас уже есть 4 скайбокса, которые только и ждут, чтобы мы начали их менять. Приступим. Для каждой энтити func_illusionary мы создадим два env_render, которые кроме резкой смены параметров имеют так же замечательную фичу - плавную смену параметров. Эта фича пришла к нам из спирита и активируется проставлением параметра в поле frags. Значение обозначает кол-во секунд, за которое один наш скайбокс поменяет свою прозрачность до нуля, а другой, соответственно, наоборот - наберет видимость с нуля. Как вы уже догадались, один env_render включает заданное небо, другой выключает. Теперь создадим 4 multi_manager, чтобы управится со всем этим хозяйством. Каждый из мульти_менеджеров будет давать команду одному из env_render на включение, а всем остальным - на выключение. Это позволит нам чередовать скайбоксы в произвольном порядке, если нам вдруг это захочется. Но для начала освоим простое циклическое переключение по кругу. Как вы уже наверное догадались для этого нам потребуется еще три энтити - multi_switcher, который будет активировать выбранную цель,
multi_manager который, через multi_switcher будет активировать собственно, какой скайбокс включить, выключив остальные, а так же с небольшой задержкой переключать multi_switcher на следующую позицию, ну и наконец generator, который будет переодически активировать наш multi_manager через заданный промежуток времени. Впрочем можно обойтись и без генератора, если закольцевать мультименеджер сам на себя.
3. ограничения:
убедитесь что квар r_lighting_extended не равен значению 2. Если это так, поставьте 1 или 0. Так же проверьте что у вас включена поддержка материалов (HD текстур), поскольку 8-битные текстуры неба выглядят ужасно
4. возможные доработки
Даже с такими жуткими текстурами скайбокса смена выглядит довольно терпимо, особенно если учесть, что переход занимает 10 секунд и игрок этого ждёт. В реальной игре с красивыми скайбоксами и временем на смену до 5-10 минут, ни один игрок не отличит сиё действо от сталкера.
Так что - экспериментируйте.
5. пример к туториалу можно скачать здесь:
www.hlfx.ru/xash/skybox_shuffle.rar - 2.8 Mb
распакуйте в папку xash и наберите в консоли weathdemo.
Смена скайбокса начнется через 20 секунд после начала игры.

Пожелания, предложения, вопросы?


Отправлено Ku2zoff 23-03-2013 в 05:12:

Пожелания: поменьше энтить для реализации механизма. В самом деле, ведь ксашмод задумывался как альтернатива спириту, в которой все те же самые плюшки можно будет сделать с использованием меньшего количества энтить. Здесь же получается классический спиритовский изврат в стиле Доктора Тресни с тем лишь отличием от спирита, что гарантированно не глючит и выглядит на пятёрку.
Намного проще для мапперов использовать одну-единственную энтитю типа func_illusionary, текстуры которой будут плавно меняться при её активации по списку, находящемуся в свойствах этой энтити или в текстовом файле. Так что здесь кодинг треба Причём, по большей части на клиенте, текстуру ведь нужно менять посредством рендерера. А в таком случае можно какие-нибудь эффекты прикрутить.


Отправлено XaeroX 23-03-2013 в 06:03:

Ku2zoff
Лучше делать универсальные фичи с десятком энтитей, чем узкоспециальные на одной-двух.
В этом смысле идеология спирита очень правильная.
Кому нужно что-то специализированное - всегда сможет сам нужный код написать.

__________________

xaerox on Vivino


Отправлено FiEctro 23-03-2013 в 07:19:

Дядя Миша
Попрасил бы креозота чтобы скаи из сталкера выложил.

Насчет демки - выглядит прикольно, но весьма странно переключается - сначало плавно меняется, потом ждёт, потом опять меняется. К чему такие задержки?

Кстати старые халфовские компиляторы умели в каждой комнатке с небом делать собственный свет от солнышка, собсно вопрос: нельзя ли точно также чтобы у каждой комнатки с небом мог быть свой скайбокс?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено PLut 23-03-2013 в 08:42:

Дядя Миша Можно ли поставить 4 light_environment и переключать их вместе со скаями? Как я понял, light_environment можно включать и выключать, причем плавно.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 23-03-2013 в 15:24:

Цитата:
Ku2zoff писал:
Здесь же получается классический спиритовский изврат в стиле Доктора Тресни с тем лишь отличием от спирита, что гарантированно не глючит и выглядит на пятёрку.

Так в этом-то и весь смысл - что оно не глючит и его можно использовать в реальной игре.
Цитата:
FiEctro писал:
выглядит прикольно, но весьма странно переключается - сначало плавно меняется, потом ждёт, потом опять меняется. К чему такие задержки?

Там в паке исходник карты - подбери задержки по своему вкусу.
Цитата:
PLut писал:
Можно ли поставить 4 light_environment и переключать их вместе со скаями?

В том-то и дело, что да! Скажем три лампочки на рассвет, полдень, закат и одну для иммитации спыжки молний.
Небольшая загвоздка заключается в определенной ступенчатости смены яркости лайтмапы, но я уверен это можно решить, подобрав паттерн подлиннее (до 256 буков). Скажем, типа такого:
mmmmmmmllllllllkkkkkkkkjjjjjjjjjiiiiiiiiihhhhhhhhgggggggggffffffffeeeeeeedddddddcccccbbbbbbbaaaaaaa
в халфе, прошу заметить макс. длина паттерна 64 символа, а в ксаше - 256.


Отправлено SpAwN 23-03-2013 в 16:23:

Добавить модельку плывущих облаков, движущиеся солнце (env_glow), хотя можно вращать и сам скайбокс (если это возможно).

ТЕОРЕТИЧЕСКИ:
Для идеала наверное потребуется:
1) 3 (или более) скайбокса без облаков. Это утро, день, ночь (можно даже в фотошопе однотонные цвета подобрать, но я не дело ваше). Ещё лучше ещё добавить такие как рассвет, закат.

2) Анимированная моделька облаков.
3) Env_glow движущийся по путям - как бы имитация солнца.
3.1) Можно солнышко нарисовать и на самих скайбоксах, но придется крутиться и сам скайбокс.

Для большей крутости можно использовать несколько light_enviroment как и описал ДМ. Только, я так думаю, тени не будут динамическими. Будут стоять на месте вне зависимости от движения Солнца по небосклону. Хотя...я не проверял. Это теоретически. Но, думаю, стоит попробовать


Отправлено Дядя Миша 23-03-2013 в 16:28:

Товарищи! Я вам просто показал принцип. Чтобы вы лучше его усвоили, вам необходимо попрактиковаться самостоятельно.
Почему бы например не замутить мини-конкурс на лучшую иммитацию погодных условий мапперскими способами?
Выкладывайте свои наработки прямо в тему.


Отправлено SpAwN 23-03-2013 в 16:45:

Цитата:
Дядя Миша писал:
Почему бы например не замутить мини-конкурс на лучшую иммитацию погодных условий мапперскими способами?


Нууу...я как бы не против. Но думаю изврат Доктора все равно будет круче))


Отправлено SpAwN 23-03-2013 в 23:45:

А у меня ничего не получается. Смена идет, но скайбоксы переливаются, ну как бы мигают. Думал я с менеджерами намудрил. Пошел хардкорнее - полностью скопировал коробку со скайбоксами и менеджерами от ДМ к себе в тест карту - и что? Так же мигают скайбоксы!!!

Причем что на тест карте ДМ все впорядке, ничего не мигает, но копипаста всей коробки в моей карте дает глюки.

Порой бывает что освещение вырубается начисто. И потом снова включается...

Добавлено 24-03-2013 в 00:53:

r_lighting_extended и 1 и 0 пробовал

Добавлено 24-03-2013 в 03:45:

Дядь Миш. Скомпилировал я твой исходник. Не знаю чем ты компилировал, но после компиляции у меня так же моргают небеса (потому что браш друг в друге). Не знаю какими компиляторами ты компилировал, но я компилировал теми что идут в комплекте с ксаш модом под бсп31.

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


Отправлено KiQ 24-03-2013 в 07:50:

Может там дело во float координатах, которые хаммером округляются?

__________________
-Brain is dead-


Отправлено Дядя Миша 24-03-2013 в 08:25:

Я вам давно говорил - переходите на QuArK. Ну или хотя бы поставьте патч от китайца.

Цитата:
SpAwN писал:
Я вижу такой выход: каждую следующую коробку с текстурой неба делать на 1 юнит больше

Вот сразу видно кто теорию не учил
Они же рисуются с отключенным з-буффером и моргать не могут по определению. Что, кстати, убедительно доказывает моя демка.


Отправлено SpAwN 24-03-2013 в 12:41:

Цитата:
Дядя Миша писал:
Я вам давно говорил - переходите на QuArK. Ну или хотя бы поставьте патч от китайца.


Патч китайский стоит.

Теорию я учил. Как работает твоя демка без понятий, но твоя же демка скомпилированная мною не работает. Все скайбоксы переливаются друг с другом


Отправлено Дядя Миша 24-03-2013 в 12:50:

Попробуй скомпилить без участия хаммера - батником. Посмотрим что получится. Только map-файл возьми из пака, а не тот что перезаписал хаммер.


Отправлено SpAwN 24-03-2013 в 13:41:

Компилировал как раз батником. Но правда перезаписывал хаммером...сейчас протестирую

Добавлено 24-03-2013 в 17:41:

Оо, а вот откомпилированный исходник без перезаписи хаммером работает!
Но есть разница!
В демки ДМ - освещение яркое
После перезаписи хаммером - темнее
После компиляции без перезаписи - совсем темное.

Но в чем причина то? Как теперь тоже самое в хаммере реализовать?


Временная зона GMT. Текущее время 07:05. Страницы (4): [1] 2 3 4 »
Показать все 46 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024