КАМЕРЫ
(сложность - продвинутый маппер)
В этом туторе я расскажу, как разместить на карте простую камеру и систему мониторов.
Содержание
1. Нужные познания
2. Нужные файлы
3. Создание камеры
4. Дополнительные возможности
5. Текстуры и эффекты
6. Прочие возможности камеры Нужные познания В данной статьи предполагается, что вы имеете базовые знания в области:
Создания комнат
Создания энтитей
Системе I/O
Нужные файлы
Camera FGD (
www.hl2world.com )
Карта-пример камеры (
www.hl2world.com )
Создание камеры
Я предположу, что вы имеете все вышеперечисленное - без него вам придется очень трудно;). Итак, погнали.
Для начала создадим какое-нибудь устройство для крепления
камеры(например треног, палку или стойку и т.п.). Если вы используете
для этого браши, объедините их все и превратите в ентитю. Сделать это
можно двумя путями: a) func_brush: крепление не будет двигаться b)
func_physbox: крепление не будет двигаться и падать от ударов и толчков.
Если ваша подставка для камеры - модель, то используйте prop_physics
или prop_physics_override . Все это дело(крепление камеры) назовите
camera_base.
Теперь нам нужен объект, который будет имитировать камеру(сама модель
камеры лагает и не работает:(, поэтому придется использовать брашевую
камеру или похожую на нее модельку). Браш-камеру превратите в
func_physbox. Назовите ее camera_representation. Поставьте камеру на
подходящую позицию и вставьте phys_constraint в том месте, где камера и
подставка соединяются(на самом деле нет разницы, где ставить эту ентитю -
она работает вне зависимости от расстояний). Phys_constraint`у дайте
имя camera_connection, и в его свойствах поставьте attachment 1:
camera_representation, attachment 2: camera_base, Force to Break (lbs.):
3000.
Теперь нам нужна ентитя камеры: поставьте point_camera в нужном
месте(скорее всего, это рядом с линзами камеры:)) и дайте ей имя
camera_actual. Внимание!!! Важно, чтобы ентитя камеры(point_camera) не
была внутри модели/браша камеры!!! Также можно отредактировать FOV(Field
of View - поле зрения) камеры. Создание камеры завершено - можете
отдохнуть/покурить(хотя как показал опрос маперы курят очень мало, что
радует:)). Теперь нам нужен монитор . Ниже приведены два способа
создания камеры - выбирайте любой:
Неподвижный моник : создайте браш, который станет
монитором. Ту сторону вашего "телевизора" которая будет передавать
изображение(экран, если мне памят не изменяет:)) покройте текстурой
dev/dev_tvmonitornoise (или другой из приведенного ниже списка), а
остальные стороны - tools/toolsnodraw. Затем выделите весь монитор
превратите его в func_monitor. Назовите его camera_tvscreen и поставьте
следующие значения: Camera name: camera_actual. Создание монитора
закончено: если вы скомпилируете созданную нами систему, он будет
работать.
Физический моник(передвигаемый) : сначала создайте
prop_physics. В поле world model поставьте
models/props_c17/tv_monitor01.mdl, дав ему имя monitor_shell. Теперь
создайте браш, все стороны которого, кроме экрановой, покройте текстурой
tools/toolsnodraw, а оставшуюся - текстурой монитора(все так же, как и в
первом способе). Затем превратите браш монитора в func_monitor, дайте
ему имя monitor_screen, а в поле Parent поставьте monitor_shel. То же
самое проделайте с camera_name, camera_actual. Создание физического
монитора завершено: компилируйте карту и наслаждайтесь проделанной
работой:).
Дополнительные возможности Разбиваемый монитор : здесь все очень просто: создайте
браш такой же формы, что и монитор, и превратите его в func_breakable.
Теперь в его свойствах поставьте Parent: monitor_screen, и настройте
аутпуты(outputs): My output named: OnBreak, Target entities named:
monitor_screen, Via this input: kill.
Динамичесий свет : чтобы от вашего монитора, как от
настоящего голубого экрана, исходил свет, поставьте несколько
light_dynamic по периметру экрана в том же направлении, что и сам
дисплей. Установите цвет(Lights Color) на 80 113 226(цвет, специально
подобранный в течение месяца измерительных фоторабот в самой Valve:)), и
яркость(Lights Brightness) поставьте 4. В свойствах света поставьте
Parent: monitor_screen и наслаждайтесь волученным эффектом.
Меняем разрешние монитора : смена разрешения - в
некоторой степени трудный процесс. Прежде всего растяните текстуру
монитора на весь экран. Если вы хотите увеличить разрешение, то
уменьшайте скейл(scale) текстур. Например если размеры экрана равны
512х512, то при скейле, равном 1 разрешение увеличится в 2 раза и будет
равно 512х512(так как текстура экрана - 256х256 - именно с таким
разрешением она передает изображение по умолчанию), а если вы поставите
скейл 0.5, то разрешения экрана станет в 2 раза меньше, то есть 128х128.
Просмотр изображения в HUD : давайте рассмотрим
футуристическую карту, где игрок имеет камеру, встроенную в HUD. Чтобы
добавить моник в HUD, наберите в консоли mat_showcameraendertarget 1. Но
вам придется так писать каждый раз, когда вы захотите посмотреть на
встроенный экран(эта фишка должна обновиться с новой ентитей
point_clientcommand, которая на момент написания, скорее всего, уже
вышла)
Текстуры и эффекты
Название мониторных текстур(справа налево):
dev_tvmonitornonoise,
dev_tvmonitor1a,
dev_tvmonitor2a,
dev_combinemonitor_g,
dev_combinemonitor_r,
and dev_combinemonitor_b.
В таком же порядке: dev_combinemonitor1, 2, 3, 4 and 5
Эти текстстуры позволяют применять к передаваемым изображениям различные видеоэффекты.
Из стандартных текстур ХЛ2 это:
dev/dev_tvmonitornonoise - нормальное изображение
dev/dev_tvmonitor1a - горизонтальные черно-белые полосы, двигающиеся по вертикали
dev/dev_tvmonitor2a - изображение с помехами
dev/dev_combinemonitor1 - светлый полупрозрачный фильтр с "шашечными" помехами
dev/dev_combinemonitor2, 3, 4, 5 - более темные версии combinemonitor1
dev/dev_combinemonitor_r, _g, _b - поупрозрачное изображение, окрашенное в красный/зеленый/синий цвета
Текстуры dev_combine* лучше использовать с темными брашами
позади.Текстура dev/dev_monitor не работает напрямую с целями(лично я не
понял, что автор имел ввиду, може вы поймете).
Если вы хотите создать свою собственную текстуру монитора, то в *.vmt файле напишите:
"$baseTexture" "
_rt_Camera "
Прочие возможности камеры
Вместо func_monitor вы можете использовать info_camera_link: в поле
Camera Name напишите имя камеры(camera_actual), Entity Whose Material
Uses _rt_camera: любой браш-ентити или модели, использующих мониторную
текстуру. Так же, как и func_monitor, info_camera_link может быть
активирована с помощью инпута(input) SetCamera для переключения между
несколькими камерами.
Автор: RomeoJGuy
Взято с
www.hl2world.comПеревод
AndrewDragon`а Приятного вам маппинга:)