Суббота, 27.04.2024, 10:05
Under sky of Half-Life
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Категории каталога
На движке Valve Source [29]
На движке Half-Life 1 [1]

Главная » Статьи » Статьи по мэппингу » На движке Valve Source

С чем едят Areaportal'ы
С чем едят Areaportal'ы

Содержание
  1. Введение
  2. Часть первая - Исключаем прорисовку карты за закрытой дверью
  3. Часть вторая - Борьба с окнами
  4. Пример карты

Введение


Когда мы закрываем непрозрачную дверь, мы не видим что находится по ту сторону. А движок видит. И мало того, тратит на это свои ресурсы. Убедиться в этом можно набрав в консоли mat_wireframe 1.
Когда мы издалека видим только окно в комнату, движок отрисовывает всю комнату. Кому? Очевидно воронам на проводах.
Конечно это не справедливо. Но у нас есть средство борьбы с несправедливост
ью - ареапорталы.

Включенный ареапортал жестоко отрезает от взора движка (ну и конечно от нашего взора) все что находится по другую его сторону. Для этого он должен перегораживать собой весь проем. И чтобы никаких там func_detail или func_brush. Они не остановят движок. Если в проеме встречаются не только браши, а еще и энтити, то ареапортал надо продлить до настоящих брашей. Проще понять на примере.


Часть первая - Исключаем прорисовку карты за закрытой дверью

Создадим пару небольших комнаток с дверью между ними. Двери даем какое-нибудь имя, оно нам пригодится. Если вы читаете такой муторный тутор, то это вы уже уметь должны. В противном случае бросайте читать :).
Я сразу усложнил себе задачу сделав раму двери func_detail.
За дверью накидаю ящиков чтобы было на что смотреть сквозь двери. Получилось примерно так:




Потом закрываем это добро потолком, компилируем, запускаем, пишем в консоли mat_wireframe 1 и наслаждаемся контурами ящиков сквозь закрытую дверь.



Полное безобразие.
Где же наш спаситель, где рыцарь на белом коне... Ну в смысле по размеру дверного проема создаем новый браш (это удобно делать в виде сверху, предварительно выделив дверь и раму), покрываем его текстурой tools/toolsareaportal
, и тут же конвертим его (Ctrl+T) в func_areaportal.
Заходим в его свойства, и делаем две вещи: Initial state - ставим Closed (чтобы он был включен вместе с закрытой дверью), и указываем в Name of Linked door - нашу дверь. Не зря же мы ей имя дали.
Очень аккуратно помещаем его внутрь созданной ранее двери так, чтобы его не было видно, и так чтобы он прилегал вплотную к стенам. Вот кое-как сделал скрин, надеюсь понятно что я это в упор смотрю сквозь дверь чтобы увидеть наш ареапортал. А вообще его не должно быть видно ни с какой стороны!




Ну вот... А что вот? Компилируем, и наслаждаемся чудом!



Чудо - чудом, но возле дверей бывают окна. И одно паршивое окошечко, сведет на нет все наши труды по оптимизации.


Часть вторая - Борьба с окнами

Сделаем рядом с распрекраснейшей дверью, отвратительное окно. Непременным условием такового, является прозрачность. Примерно так.



Как я и предупреждал, все труды пошли на смарку. Мы опять за закрытой дверью видим и ящики и стены, причем как бы мы далеко не отошли. Но зато мы знаем что дверь в этом не виновата! А значит беремся за окно.
Твердой рукой внутри поганого стекла создаем браш покрытый текстурой ареапортала но конвертим его уже в другую брашевую энтитю - func_areaportalwindow. И работать она будет по другому. На определенном расстоянии она избавит стекло от прозрачности. Повторяю, ареапортал должен быть совсем внутри, его края не должны не то что выступать из стекла, но даже и быть наравне. Как и в случае с дверью. Иначе ждут самые странные глюки.
Рекомендую сделать его самым тоненьким, и в самом центре.
Сделаем еще один браш для наших нужд. Он будет плавно прекрывать прозрачность оконного проема в зависимости от приказа func_areaportalwindow. Этот браш может быть чем угодно, лишь бы у него было имя, и правильная текстура. Для проемов в которые можно пролезть делают func_illusonary, но у нас окно небьющееся, и поэтому сделаем func_brush. Сразу обзовем его понятным именем, и покрасим в текстуру dev/dev_windowportal. В принципе подходят разные текстуры. Но эта как нельзя лучше отражает окружающее пространство.
В свойствах func_areaportalwindow сделаем не много, но со вкусом.
В поле Rendered Window укажем наш свежесозданный браш с хитрой текстурой (для этого ему имя и было дано), Fade start distance я сделал 64, Fade end distance - 128. Последние два параметра, чтобы далеко от окна не бегать. Комнатка у меня маленькая и ножки устали. Они, как можно догадаться, отвечают за расстояния начала и конца превращения прозрачного стекла в непрозрачное. Можно ввести свои значения, какие вам нужны.

Аккуратно водружаем слоеный пирог в оконный проем:
В самом центре и самый тонкий - func_areaportalwindow, Его окружает с обоих сторон func_brush с текстурой
dev/dev_windowportal, и самый большой браш - это обычный браш с текстурой стекла.
По такой схеме получилось красивей всего.

Как это выглядело в Хаммере:



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



Но стоит отойти на указанное в настройках func_areaportalwindow расстояние, как стекло "тухнет", но и это еще не все, объекты за окном больше не отрисовываются движком! Ура, товарищи!

Категория: На движке Valve Source | Добавил: JOHN (22.07.2009) | Автор: JOHN
Просмотров: 3123 | Комментарии: 2
Всего комментариев: 2
2 monolife  
Ты же знаешь, что ты дорог нам:)

1 JOHN  
Любопытно, наткнулся в инете на свой тутор.
http://cs-mapping.com.ua/forum/showthread.php?t=21427
Там его даже хвалят в отличие от вас :).

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:

Поиск

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

© 2024, MonoLife