вернуться на beanet.ru вернуться к списку проектов вернуться на главную страницу сборника

Тема: Камеры и мониторы


Ключевые слова: камера, монитор, point_camera, func_monitor, связь камеры с монитором, несколько камер

См. также: func_monitor, point_camera
Список используемых понятий, сокращений и обозначений

перейти к общему списку

Две энтити – func_monitor и point_camera – используются преимущественно для передачи изображения из определенной области карты на монитор (специальный браш, преобразованный в func_monitor), находящийся в другой области. При этом энтити point_camera невидима и захватывает (получает) изображение (играет роль камеры), а func_monitor – воспроизводит на своей поверхности передаваемые ею данные (играет роль реального монитора или телевизора). Подробнее по каждой энтити, а также о связи между ними см. func_monitor и point_camera.
Поверхность энтити-монитора, на которой должно быть изображение, закрашивается текстурами dev/dev_*monitor*. От выбранной текстуры зависит качество картинки на мониторе (чистая или с помехами).

Замечание: существует ограничение на использование мониторов – в одно и то же время источником изображения для всех мониторов может быть только одна камера. Другими словами, даже если Вы установите для каждого монитора источниками сигнала разные камеры, в игре все мониторы будут передавать одно и то же изображение (с последней активированной камеры).
Обратите внимание, что в лаборатории Кляйнера (Half-Life 2) есть система мониторов, одновременно показывающих разные картинки, однако эти изображения – всего лишь анимированные текстуры, наложенные на модель props_lab/securitybank.mdl. В данном случае не используются камеры и мониторы (энтити), кроме центрального изображения.

Вероятная причина указанного выше ограничения – дополнительные затраты на рендеринг изображения (по сути повторная прорисовка трехмерной сцены). Естественно, каждая камера отнимала бы часть ресурсов игры. Еще одна возможная причина - особеность движка. Т.е. вывод с камеры реализован на одну и только одну текстуру, независимо от того, где она применяется.
Пока единственным известным решением является расположение мониторов таким образом, чтобы игрок не мог видеть их одновременно. В процессе игры источник сигнала (активная камера) переключается по мере приближения игрока к каждому монитору (для примера см. карту sdk_d1_trainstation_01.vmf в каталоге <путь установки Steam>/SteamApps/<имя аккаунта>/sourcesdk_content/hl2/mapsrc), обеспечивая иллюзию одновременной трансляции видео с каждой камеры на соответствующий монитор.

Замечание: в игре Portal используется тот же принцип мониторов. Если расположить порталы друг напротив друга (для появления эффекта "многократного отражения") и посмотреть сквозь любой из них - игра заметно "тормозит". В настройках игры есть параметр Глубина отображения порталов - именно он задает, сколько раз один портал "отразится внутри другого".



Статьи (рус):
Статьи (eng):

перейти к общему списку

Номер статьи: 12

Сборник полезной информации по созданию модификаций на движке Valve Source Engine (игры Half-Life 2, Episode One, Episode Two)