Point camera

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Point_camera

Описание

Объект point_camera используется в качестве камеры. Камера может создавать изображение всего чего она видит, и сохранять полученное изображение на специальной текстуре "_rt_Camera". Эта текстура является базовой для таких материалов как "dev/dev_tvmonitor1a", "dev/dev_tvmonitor2a" и им подобным, поэтому если наложить такие материалы на какую-нибудь Brush-поверхность, это приведёт к тому что на этой поверхности можно будет видеть то, что видит камера. Таким образом могут быть легко созданы мониторы в игре.

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект должен быть установлен там, где будет использоваться.
  • На карте может быть установлено множество этих объектов
  • Для того чтобы камера начала обновлять текстуру "_rt_Camera" она должна быть присоединена к пространству карты хотя бы через один объект func_monitor или info_camera_link. Если камера не указана ни в одном из этих объектов, то такая камера работать не будет.
  • В игре CS:S в один момент времени может быть активна только одна камера, поэтому необходимо выключать все другие камеры при переключении на эту камеру. Благодаря этой особенности на карте может быть установлен всего один объект func_monitor или info_camera_link, который сможет обеспечивать функциональность для всех камер на карте.
  • Включение свойства "Fog Enable" может привести к большой нагрузке на центральный процессор на компьютерах игроков, что снизит общее быстродействие карты. Используйте свойство "Fog Enable" только тогда, когда точно уверены что это требуется.

Ошибки

Не обнаружены.

Заметки

Использование камер и мониторов влечёт за собой больший расход ресурсов компьютера. Вы всегда должны учитывать, что при использовании камер и мониторов практически всегда требуется больше видеопамяти, так как будут использоваться текстуры не только в той области, в которой находится игрок, но и те текстуры, которые находятся в поле зрения камеры. Общий объём используемых одновременно текстур не должен превышать значения в 100 МБ (с учётом материалов игроков, декалей крови и т.д.), иначе у некоторых игроков могут возникнуть проблемы с производительностью на такой карте.

В игре CS:S текстура "_rt_Camera" имеет квадратную форму. Учитывайте это при наложении на Brush-поверхности, чтобы избежать изменённых пропорций при отображении в игре.

Параметры

  • FOV – угол обзора камеры;
  • Fog Enable – включить туман и отсечение при отрисовке камеры;
  • Fog Color – цвет тумана;
  • Fog Start – расстояние от камеры, с которой начинается видеться туман;
  • Fog End – расстояние от камеры на котором туман полностью не прозрачен; это же расстояние является расстоянием отсечения видимости камеры.

Флаги

  • Start OFF – выключить камеру в начале каждого раунда.

Inputs

  • ChangeFOV <ANGLE TIME> - изменить угол обзора камеры – свойство "FOV"; *ANGLE – новый угол обзора, TIME – время за которое камера изменит угол с текущего значения на новый; например: "180 5.5" – камера изменит свой угол обзора с текущего до 180 за 5.5 секунды;
  • SetOn – включить камеру;
  • SetOff – выключить камеру;
  • SetOnAndTurnOthersOff – включить эту камеру и выключить все остальные камеры на карте.

Карта

csssdk_point_camera.vmf

Используются объекты

  • point_camera
  • func_button
  • func_detail
  • func_monitor
  • func_rotating
  • env_spritetrail
  • logic_timer

Описание карты

На карте установлено множество экранов и невидимый вращающийся объект func_rotating, который нужен просто для того, чтобы что-то двигалось и это было видно. Для каждого экрана выбран свой отдельный материал-монитор. Все они выглядят по-разному, но отображают всегда одинаковое изображение. Это особенность игры CS:S, позволяющая в один момент времени использовать только один объект point_camera. На этой карте для того, чтобы какая-нибудь камера работала, необходимо чтобы она была прописана хотя бы у одного объекта func_monitor в свойстве "Camera". После этого для камеры необходимо вызвать функцию "SetOnAndTurnOthersOff", которая включит эту камеру, а все остальные камеры – отключит. Именно такие операции выполняют большие кнопки на пультах. Маленькие кнопки на пультах включают/выключают мониторы, расположенные перед пультом. Обратите внимание, что большие кнопки на пульте выполняют функцию "SetCamera" всегда только для первого монитора - объекта monitor1 (func_monitor). Это сделано в учебных целях и понадобится для понимания работы камер.

Есть одна очень интересная особенность использования объектов point_camera и func_monitor. Эту особенность всегда нужно учитывать. Для правильной работы объекта point_camera необходимо чтобы он был прописан в свойстве "Camera" хотя бы у одного объекта func_monitor. Это условие выполняется на этой карте-примере, потому что мы меняем свойство "Camera" всегда только у первого объекта func_monitor. А что будет если выключить первый объект func_monitor? Чтобы лучше понять что произойдёт, нажмите сначала на большую кнопку первого пульта – чтобы включить первую камеру, а затем на маленькую кнопку на первом пульте – чтобы выключить первый монитор. Если выполнить эту последовательность действий, то картинка на всех мониторах перестанет обновляться, а значит первая камера перестала работать. Тоже самое произойдёт со второй и третьей камерой.

Первая камера постоянно изменяет свой угол обзора. Это результат работы функции "ChangeFOV".

Обратите внимание так же на то, как работает вторая камера. На ней чётко видны артефакты вызванные тем, что камера может видеть результат своей работы. Возможно, на разных компьютерах это выглядит по-разному, но на момент создания этой карты-примера камера могла видеть до 2 своих шагов, после чего появлялись артефакты.

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

Скорей всего вы уже заметили, что игрок не может видеть сам себя в камерах. Это не досадное упущение разработчиков, а особенность движка Source. Если вы хотите увидеть себя в камере, то выполните в консоли команду "sv_cheats 1" и вслед за ней команду "thirdperson". Эта команда переключит камеру на вид от третьего лица. Камера станет "малость" кривовата, зато вы сможете себя видеть в камерах. Чтобы вернуть вид в нормальное состояние, выполните в консоли команду "firstperson".

Смотрите также