Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.

Ru/Script intro: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
mNo edit summary
 
(20 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{totranslate:ru}}
<!-- When this page is updated to {{langsp}} or {{langsp}} instead of {{lang}}, please move {{this is a}} to the base page, as it is automatically translated. -->{{lang|Script intro}}{{this is a|point entity|suf=:ru|name=script_intro}}
{{wrongtitle:|title=script_intro}}
[[Category:Entities]][[Category:GUI Entities]][[Category:Camera]]


== Описание ==
==Описание энтити==
The [[script_intro]] entity is a singleplayer only entity that is used extensively in the intro sequence for Half-Life 2. It makes use of DirectX's buffer blending capabilities to overlay a second camera onto the main camera, i.e., the player's view, and to blend between the two views using various effects. This is also useful for doing traditional A-B camera exposition sequences.
Энтити <code>script_intro</code> является единственным объектом, который используется для интро-сцен только в одиночных играх Valve, таких как Half-life 2 и её эпизодах. Она использует возможности DirectX’s рендера, когда на основное изображение (камера или зрение игрока) накладывается второстепенная картинка из другого источника, с примесью различных эффектов и переходов. Очень удобно для плавной смены ракурсов.


Some of the possible uses for this entity include hallucination effects, and dream sequences, traditional A-B camera work for [[Wikipedia:machinima|machinima]], and so on.
Некоторые эффекты данной энтити можно использовать для имитирования зрительных галлюцинаций или же снов наяву. Традиционно плавные переходы от камеры А к В используются в различных  {{L|Wikipedia:machinima|машинимах}} .


The main issue with understanding this entity is the workflow isn't the same as other entities, in that it's highly time based. You don't just set keys and it works, but rather you'll have to trigger it at intervals using inputs, so a good working knowledge of Source's entity I/O system is required.
Главная проблема в понимании работы этой энтити заключается в том, что она очень зависит от таймингом выполнения различных Outputs команд. Недостаточно просто выставить нужные команды, ещё нужно подгадать интервалы времени между различными действиями, чтобы всё работало без багов. Для комфортной работы в данной энтити, нужен опыт. терпение и время.


=== Using script_intro ===
=== Использование script_intro ===
There's only one key that you have to deal with on this entity, and that's it's targetname. Once you have a name to refer to the entity by, all the work is done by sending it inputs. First thing that you have to do to use script_intro is to send in an Activate input. This will (I believe) initialize the secondary framebuffer it uses.  
У этой энтити есть всего один ключ, и это targetname. Как только у вас есть его имя, Вся работа с ним сводится к посылке в него инпут команд. Смешанный вид (ссо сконфигурированным к настоящему времени параметрами) включается через инпут <code>Activate</code>. Перед тем, как вы вызовите <code>Activate</code>, есть несколько вводов (инпутов), которым вам следует послать для инициализации энтити, так что переход от обычного вида игрока к смешанному происходит плавно. Этми инпутами являются: <code>SetCameraViewEntity</code>, <code>SetFOV</code>, <code>FadeTo</code>, <code>SetFadeColor</code> и <code>SetBlendMode</code>.


There are several inputs you have to send to 'initialize' the entity, before it functions the way you expect it to. Each will be explained. They are SetCameraViewEntity, FadeTo, SetNextBlendMode, and SetNextBlendTime.
Начиная с инпута <code>SetCameraViewEntity</code> , с помощью имени энтити камеры ({{L|point_camera}}), вид из которой вы собираетесь следующим, в качестве параметра. Камера автоматически активирует инпут  <code>Activate</code> указанный в <code>script_intro</code>. Помните, точка зрения игрока это первая камера, так что в привычных терминах, игрок это Камера A, а  <code>point_camera</code>, использующаяся в<code>script_intro</code> это Камера. Последующий необязательный инпут <code>SetFOV</code> установит нужный угол обзора для камеры B. Если вы также хотите управлять углом обзора камеры A, используйте энтити {{L|env_zoom}}. Обратите внимание, вам не обязательно активировать<code>SetCameraViewEntity</code>; в этом случае инпут для камеры B будет абсолютно черным  и вы сможете использовать энтити для всяких пост-процессинг эффектов, применяемых к виду от лица игрока.


Start by sending the SetCameraViewEntity input, with the name of the [[point_camera]] entity that you'll be using as the second view as a parameter. Remember, the player's viewpoint is the first camera, so in traditional film terms, the player is the A camera, and the point_camera that script_intro is using is the B camera. You'll send further inputs to script_intro to control blending between the A and B cameras.
Далее вы можете использовать инпуты <code>SetFadeColor</code> и <code>FadeTo</code>, чтобы опционально применить дополнительное смешивание сплошного цвета к двум камерам, как только энтити активировано. <code>SetFadeColor</code> (по умолчанию <code>0 0 0</code>) определяет цвет, который добавляется к смешиванию, а <code>FadeTo</code> определяет прозрачность этого цвета в смешении. Вы используете инпут для отсылки параметра с одним или двумя значениями, разделенными пробелом. Первое значение это целое число от 0 до 255, где 255 это полная непрозрачность, а 0 (по умолчанию) это полная прозрачность (то есть никакой цвет не подмешивается в вид). Второе значение это число в секундах, за которые случится затухание. При первоначальном конфигурировании энтити, используйте значение 0 для второго параметра, чтобы изменения наступали сразу.


You'll use the FadeTo value to tell the second camera what Alpha value it should display at. This is what controls how transparent the camera will be when it's overlayed over the first view. You use the input by sending a parameter with it with two values separated by a space. The first value is an integer with a range of 0-255, where 255 is completely opaque, and 0 is completely transparent. The second value is a number in seconds, that the fade will occur over.
Наконец, вы можете изменить режим смешивания по умолчанию с помощью <code>SetBlendMode</code>. Хорошим выбором для начала является число 8 (см. список ниже), т.к. он учитывает только Камеру A и игронирует камеру B, позволяя сделать плавный переход. Если у вас нет камеры B, то и 0 (по умолчанию) подойдет неплохо.
Next you'll want to use the SetNextBlendMode and SetNextBlendTime to accompish effects. SetNextBlendMode with a parameter of '6' is the most natural of blend modes. It will produce a straight fade between the two cameras. The other blend modes will produce special effects, such as the black and white and inversion effects seen in HL2's intro.
Send a SetNextBlendMode input with a integer parameter of 0 through 6, each produces a different effect. This sets up the blend; you next send an input of SetNextBlendTime to execute the blend, with a parameter that equals the time value that you want the blend effect to occur over, in seconds.
The blend mode will cause the camera to change effects when executed; so it will blend from one effect to the next.


Of note, the FadeTo input is used hackishly in the intro sequence to fadeout the player's view. This is because the [[env_fade]] entity can't be iterated, i.e. you can't have two env_fades, and fade from one to the other.
С этого момента вы можете вызвать инпут <code>Activate</code>, чтобы включить смешанный виддля полностью сконфигурированной энтити. Затем вы можете использовать  <code>SetNextBlendMode</code>, <code>SetNextBlendTime</code>, <code>SetNextFOV</code>, <code>SetFOVBlendTime</code> и <code>FadeTo</code> для достижения эффекта перехода.


=== Blend modes ===
<code>SetNextBlendMode</code> с параметром 6 выглядит наиболее реалистично. При завершении будет получена прямая аддитивная смесь вида двух камер. Другие режимы смешивания дадут специальные эффекты, такие как черно-белый негатив, который можно видеть в интро HL2. Инпут <code>SetNextBlendMode</code> с параметром от 0 до 9 даст различный эффект для каждого значения. Это устанавливает значение смешивания, далее вы используете инпут <code>SetNextBlendTime</code>, чтобы выполнить само смешивание с параметром, идентичным длительности эффекта перехода в секундах. Режим смешивания приведет к смене эффектов камеры одного за другим.
This is an incomplete list of the apparent function of the blend modes. These can be set in the entity by sending it a SetNextBlendMode and SetNextBlendTime or just SetBlendMode.


values:
<code>SetNextFOV</code> и <code>SetFOVBlendTime</code> нужны для сглаживания переходов FOV камеры B от одного значения (по умолчанию) к следующему, в противном случае он работают аналогично <code>SetNextBlendMode</code> и <code>SetNextBlendTime</code>.


1: Inverted Black & White with levels.
Наконец, инпуты <code>SetFadeColor</code> и <code>FadeTo</code> могут быть использованы для сглаживания смешивания цельного цвета в вид (похоже на {{L|env_fade}}). Чтобы избежать резкого изменения цвета, применяйте только<code>SetFadeColor</code> когда альфа параметра<code>FadeTo</code> установлена в 0. После того, как вы установите цвет затухания, выполните инпут <code>FadeTo</code> с желаемой величиной затухания и его длительностью. Например, установка цвета затухания в <code>"255 255 255"</code>, а затем выполнение <code>FadeTo</code> со значениями <code>"127 5"</code>  приведет к затуханию зрения игрока в молочно белый цвет за 5 секунд. Следует отметить, что инпут <code>FadeTo</code> используется хакерски в интро для затухания вида от лица игрока. Это связано с тем, что энтити {{L|env_fade}} не может быть повторена, т.е. не может быть двух энтити <code>env_fade</code> и вызывать затухание из одной в другую.
This appears to map the screenbuffer to grayscale, invert the colors, and apply some sort of posterize filter.


2: Black
После того, как Вы наиграетесь с камерой игрока, Вы можете вернуть нормальный вид для камер с помощью команды <code>Deactivate</code> , а чтобы отключить их, можно воспользоваться <code>SetOff</code>, данная команда отключает все камеры, которые используются Вами.
As far as I can tell, this blanks both primary and secondary screen buffers.


3: Black & White Blend
This maps the screenbuffers to grayscale, and blends between them.


4: A cam is normal, B is black
This appears to blank the secondary screenbuffer, and leaves the primary unaffected.


5: B cam is normal, A is black
This is the reverse of 4.


6: Normal mix, Overlay
=== Blend modes Методы смешивания===
This appears to be the most straightforward mix between the two screenbuffers, applying a straight blend.
Это перечень доступных методов смешивания. Они работают при использовании команд <code>SetNextBlendMode</code> и <code>SetNextBlendTime</code> или же просто  <code>SetBlendMode</code>.


== Keyvalues ==
* 0: Камера А в нормальном цвете, камера В в негативе серого канала. Примечание, если камера А не используется, вместо неё подразумевается камера игрока. Это значение используется по умолчанию.
* {{kv targetname}}


* '''{{ep1 add|alternatefovchange}}'''
* 1:Камера А в негативном цвете, камера В с нормальным серым оттенком.
: If set, the script will match env_zoom's FOV transition.


== Inputs ==
* 2: Камера А с нормальным серым оттенком, камера В в нормальном цвете. (нет смешивания)
* {{i targetname}}


* '''Activate'''
* 3: Камера А с нормальным серым оттенком, камера В с нормальным цветом. Камера В, говоря простым языком, выдаёт черно белую картинку и обе камеры полупрозрачны.  
: Take control of the player's view and start blending the two scenes.


* '''Deactivate'''
* 4:Обе камеры А и В в нормальном цвете, почти тоже самое что и 2 (3) методы.
: Stop controlling the view.


* '''SetCameraViewEntity <target_destination>'''
* 5: Камера А пастеризованного цвета, камера В нормального цвета, но на черном фоне камеры В будет проецироваться изображение с камеры А ( в общем, некий хромакей, только вместо зеленого фона должен использоваться  черный)
: Set the viewpoint to blend with the player's viewpoint.


* '''FadeTo <string>'''
* 6: Обе камеры в нормальном цвете аддитивное смешивание. В целом всё как в 3 методе, но картинка цветная и слегка засвечена.
: Fade to a specific alpha amount over a specified amount of time.
: Format: <code><alpha> <duration></code>


* '''SetFadeColor {{color}}'''
* 7: Камера А не рендерится, камера В нормальном цвете. Это может быть использовано как {{L|point_viewcontrol}}, когда нужно ограничить обзор игрока. (сомнительная идея)
: Set the fade color.


* '''SetBlendMode <integer>'''
* 8: Камера А в нормальном цвете, камера В пуста. Противоположность 7 методу.
: Set the blending mode to use.


* '''SetNextBlendMode <integer>'''
* {{EP2 add|9: Обе камеры А и В в нормальном цвете. Данный метод очень похож на 5, только наоборот. Плюс ко всему, полупрозрачность между обеими камерами.
: Set the blending mode to blend to over time. Follow this with a SetNextBlendTime input to start the mode blend.
.


* '''SetNextBlendTime <float>'''
{{Note|Приведенные выши опции работают только на DX9 системах и выше. На более старых DirectX могут не работать. Боже, 2020 год, о чем это я?}}
: Set the amount of time it should take to blend to the next mode, and start blending.


* '''SetFOV <integer>'''
: Set the fov for the second camera.


* '''SetNextFOV <integer>'''
===Примеры использования ===
: Set the FOV to blend to over time. Follow this with a SetFOVBlendTime input to start the fov blend.
Осмотрите карты Half-Life 2 (и эпизодов) чтобы понять принцип работы энтити:
*{{ent|d1_trainstation_01}} (Первая сцена)
*{{ent|d1_trainstation_05}} (Сцена с телепоратацией)
*{{ent|d3_breen_01}} (Финальная сцена)
*{{ent|ep1_citadel_00}} (Ep1 вступление)
*{{ent|ep2_outland_02}} (событие с G-Man от сердца к сердцу )


* '''SetFOVBlendTime <float>'''
Прямой переход от камеры игрока к обычной камере и назад в течении 10 сек (предполагается, что Вы будете использовать  <code>script_intro</code> с именем "fxintro"  на карте и камера будет носить имя "b_camera", также используется  <code>OnTrigger</code> для запуска Outputs скриптов).
: Set the amount of time it should take to blend to the next fov target, and start blending.
"OnTrigger" "fxintro,SetCameraViewEntity,b_camera,0,-1"
"OnTrigger" "fxintro,SetBlendMode,8,0.01,-1"
"OnTrigger" "fxintro,Activate,,0.02,-1"
"OnTrigger" "fxintro,SetNextBlendMode,7,0.03,-1"
"OnTrigger" "fxintro,SetNextBlendTime,5,0.04,-1"
"OnTrigger" "fxintro,SetNextBlendMode,8,5.05,-1"
"OnTrigger" "fxintro,SetNextBlendTime,5,5.06,-1"
"OnTrigger" "fxintro,Deactivate,,10.06,-1"
"OnTrigger" "b_camera,SetOff,,10.07,-1"


== Outputs ==
=== Баги ===
* {{o targetname}}
* <code>script_intro</code> Не работает полноценно на картах использующих 3D скайбоксы. В зависимости от версии движка, вылазят разные баги. Например, 2D скайбокс может казаться черным, либо вообще могут не срабатывать визуальные эффекты. Дабы избежать нежелательных последствий, не используйте <code>script_intro</code> на картах с 3D скайбоксами, либо реализуйте эффекты лишь в тех местах, где не будет видно небо.
 
* {{L|viewmodel|Viewmodels}}, если они присутствуют (в поле зрения игрока) в момент проигрывания <code>script_intro</code>, то не будут корректно отображаться (видны только 2д элементы (спрайты вспышек итд)) . Следует отнимать оружие у игрока для таких сцен или же использовать второй стороннюю камеру в игре (две камеры А и В)
 
Обе проблемы из-за скайбоксов и оружия в руках.
 
{{fix| Проблему со скайбоксом можно обойти, если передвинуть подготовку (setup) из <code>CSkyboxView</code> в <code>CViewRender::RenderView()</code>, чтобы она происходила после того, как вторая камера отрисует интро сцену. Таким образом, она будет разделена на два инстанса, первый непосредственно перед <code>CViewRender::ViewDrawScene()</code> , а другой инстанс подготовки (setup) из <code>CViewRender::ViewDrawScene_Intro()</code>, вскоре после блока <code>m_bDrawPrimary</code>. Это работает, если мы поместим ее  перед <code>g_pClientShadowMgr->PreRender()</code>.  Чистый фон будет удален, по крайней мере, пока вычисляется визуализация скайбокса.|code}}
: {{confirm|Приводит ли удаление VIEW_CLEAR_COLOR к прекращению корректной работы {{L|VortWarp}}?}}
 
{{fix|Баг с viewmodel можно обойти отключив обычный вызов <code>CViewRender::DrawViewModels()</code> в <code>CViewRender::RenderView()</code>, когда активен код intro, и добавив отдельный вызов  в  <code>CViewRender::ViewDrawScene_Intro()</code> перед составлением intro_screenspaceeffect. Это работает, если мы поместим его сразу после  main <code>DrawWorldAndEntities</code>.|code}}
 
== Keyvalues (свойства энтити) ==
{{KV|Match env_zoom's FOV transition|boolean|Использовать ли плавный зум как в env_zoom.}}
{{KV Targetname}}
 
== Inputs (Входящие команды)==
{{I|Activate|Объект готов к работе.}}
{{I|Deactivate|Объект выключен.}}
{{I|SetCameraViewEntity|Имя камеры, чья картинка будет смешиваться (камер может быть две)}}
{{I|SetBlendMode|Выбрать метод смешивания}}
{{I|SetFOV|Установить уровень FOV  (зум)}}
{{I|SetNextFOV|Установить следующий уровень FOV, используется с SetFOVBlendTime командой в паре.}}
{{I|SetFOVBlendTime|Установить время перехода от исходного значения FOV к указанному выше.}}
{{I|SetNextBlendMode|Установить следующий метод смешивания с SetNextBlendTime командой в паре}}
{{I|SetNextBlendTime|Установить время перехода между двумя методами смешивания, смотри выше}}
{{I|FadeTo|Установить прозрачность экрана <альфа> и переход<длительность>}}
{{I|SetFadeColor|указать цвет затемнения экрана <красный> <зеленый> <синий>}}
{{I Targetname}}
 
== Outputs (Исходящие команды) ==
{{O Targetname}}
 
[[Category:GUI Entities]]
[[Category:Camera]]

Latest revision as of 23:03, 20 April 2025

English (en)Русский (ru)Translate (Translate)

script_intro - это точечная энтити(en), доступно для всех игр на движке Source Source.

Описание энтити

Энтити script_intro является единственным объектом, который используется для интро-сцен только в одиночных играх Valve, таких как Half-life 2 и её эпизодах. Она использует возможности DirectX’s рендера, когда на основное изображение (камера или зрение игрока) накладывается второстепенная картинка из другого источника, с примесью различных эффектов и переходов. Очень удобно для плавной смены ракурсов.

Некоторые эффекты данной энтити можно использовать для имитирования зрительных галлюцинаций или же снов наяву. Традиционно плавные переходы от камеры А к В используются в различных машинимах(en) .

Главная проблема в понимании работы этой энтити заключается в том, что она очень зависит от таймингом выполнения различных Outputs команд. Недостаточно просто выставить нужные команды, ещё нужно подгадать интервалы времени между различными действиями, чтобы всё работало без багов. Для комфортной работы в данной энтити, нужен опыт. терпение и время.

Использование script_intro

У этой энтити есть всего один ключ, и это targetname. Как только у вас есть его имя, Вся работа с ним сводится к посылке в него инпут команд. Смешанный вид (ссо сконфигурированным к настоящему времени параметрами) включается через инпут Activate. Перед тем, как вы вызовите Activate, есть несколько вводов (инпутов), которым вам следует послать для инициализации энтити, так что переход от обычного вида игрока к смешанному происходит плавно. Этми инпутами являются: SetCameraViewEntity, SetFOV, FadeTo, SetFadeColor и SetBlendMode.

Начиная с инпута SetCameraViewEntity , с помощью имени энтити камеры (point_camera(en)), вид из которой вы собираетесь следующим, в качестве параметра. Камера автоматически активирует инпут Activate указанный в script_intro. Помните, точка зрения игрока это первая камера, так что в привычных терминах, игрок это Камера A, а point_camera, использующаяся вscript_intro это Камера. Последующий необязательный инпут SetFOV установит нужный угол обзора для камеры B. Если вы также хотите управлять углом обзора камеры A, используйте энтити env_zoom(en). Обратите внимание, вам не обязательно активироватьSetCameraViewEntity; в этом случае инпут для камеры B будет абсолютно черным и вы сможете использовать энтити для всяких пост-процессинг эффектов, применяемых к виду от лица игрока.

Далее вы можете использовать инпуты SetFadeColor и FadeTo, чтобы опционально применить дополнительное смешивание сплошного цвета к двум камерам, как только энтити активировано. SetFadeColor (по умолчанию 0 0 0) определяет цвет, который добавляется к смешиванию, а FadeTo определяет прозрачность этого цвета в смешении. Вы используете инпут для отсылки параметра с одним или двумя значениями, разделенными пробелом. Первое значение это целое число от 0 до 255, где 255 это полная непрозрачность, а 0 (по умолчанию) это полная прозрачность (то есть никакой цвет не подмешивается в вид). Второе значение это число в секундах, за которые случится затухание. При первоначальном конфигурировании энтити, используйте значение 0 для второго параметра, чтобы изменения наступали сразу.

Наконец, вы можете изменить режим смешивания по умолчанию с помощью SetBlendMode. Хорошим выбором для начала является число 8 (см. список ниже), т.к. он учитывает только Камеру A и игронирует камеру B, позволяя сделать плавный переход. Если у вас нет камеры B, то и 0 (по умолчанию) подойдет неплохо.

С этого момента вы можете вызвать инпут Activate, чтобы включить смешанный виддля полностью сконфигурированной энтити. Затем вы можете использовать SetNextBlendMode, SetNextBlendTime, SetNextFOV, SetFOVBlendTime и FadeTo для достижения эффекта перехода.

SetNextBlendMode с параметром 6 выглядит наиболее реалистично. При завершении будет получена прямая аддитивная смесь вида двух камер. Другие режимы смешивания дадут специальные эффекты, такие как черно-белый негатив, который можно видеть в интро HL2. Инпут SetNextBlendMode с параметром от 0 до 9 даст различный эффект для каждого значения. Это устанавливает значение смешивания, далее вы используете инпут SetNextBlendTime, чтобы выполнить само смешивание с параметром, идентичным длительности эффекта перехода в секундах. Режим смешивания приведет к смене эффектов камеры одного за другим.

SetNextFOV и SetFOVBlendTime нужны для сглаживания переходов FOV камеры B от одного значения (по умолчанию) к следующему, в противном случае он работают аналогично SetNextBlendMode и SetNextBlendTime.

Наконец, инпуты SetFadeColor и FadeTo могут быть использованы для сглаживания смешивания цельного цвета в вид (похоже на env_fade(en)). Чтобы избежать резкого изменения цвета, применяйте толькоSetFadeColor когда альфа параметраFadeTo установлена в 0. После того, как вы установите цвет затухания, выполните инпут FadeTo с желаемой величиной затухания и его длительностью. Например, установка цвета затухания в "255 255 255", а затем выполнение FadeTo со значениями "127 5" приведет к затуханию зрения игрока в молочно белый цвет за 5 секунд. Следует отметить, что инпут FadeTo используется хакерски в интро для затухания вида от лица игрока. Это связано с тем, что энтити env_fade(en) не может быть повторена, т.е. не может быть двух энтити env_fade и вызывать затухание из одной в другую.

После того, как Вы наиграетесь с камерой игрока, Вы можете вернуть нормальный вид для камер с помощью команды Deactivate , а чтобы отключить их, можно воспользоваться SetOff, данная команда отключает все камеры, которые используются Вами.



Blend modes Методы смешивания

Это перечень доступных методов смешивания. Они работают при использовании команд SetNextBlendMode и SetNextBlendTime или же просто SetBlendMode.

  • 0: Камера А в нормальном цвете, камера В в негативе серого канала. Примечание, если камера А не используется, вместо неё подразумевается камера игрока. Это значение используется по умолчанию.
  • 1:Камера А в негативном цвете, камера В с нормальным серым оттенком.
  • 2: Камера А с нормальным серым оттенком, камера В в нормальном цвете. (нет смешивания)
  • 3: Камера А с нормальным серым оттенком, камера В с нормальным цветом. Камера В, говоря простым языком, выдаёт черно белую картинку и обе камеры полупрозрачны.
  • 4:Обе камеры А и В в нормальном цвете, почти тоже самое что и 2 (3) методы.
  • 5: Камера А пастеризованного цвета, камера В нормального цвета, но на черном фоне камеры В будет проецироваться изображение с камеры А ( в общем, некий хромакей, только вместо зеленого фона должен использоваться черный)
  • 6: Обе камеры в нормальном цвете аддитивное смешивание. В целом всё как в 3 методе, но картинка цветная и слегка засвечена.
  • 7: Камера А не рендерится, камера В нормальном цвете. Это может быть использовано как point_viewcontrol(en), когда нужно ограничить обзор игрока. (сомнительная идея)
  • 8: Камера А в нормальном цвете, камера В пуста. Противоположность 7 методу.
  • {{EP2 add|9: Обе камеры А и В в нормальном цвете. Данный метод очень похож на 5, только наоборот. Плюс ко всему, полупрозрачность между обеими камерами.

.

Note.pngПримечание:Приведенные выши опции работают только на DX9 системах и выше. На более старых DirectX могут не работать. Боже, 2020 год, о чем это я?


Примеры использования

Осмотрите карты Half-Life 2 (и эпизодов) чтобы понять принцип работы энтити:

Прямой переход от камеры игрока к обычной камере и назад в течении 10 сек (предполагается, что Вы будете использовать script_intro с именем "fxintro" на карте и камера будет носить имя "b_camera", также используется OnTrigger для запуска Outputs скриптов).

"OnTrigger" "fxintro,SetCameraViewEntity,b_camera,0,-1"
"OnTrigger" "fxintro,SetBlendMode,8,0.01,-1"
"OnTrigger" "fxintro,Activate,,0.02,-1"
"OnTrigger" "fxintro,SetNextBlendMode,7,0.03,-1"
"OnTrigger" "fxintro,SetNextBlendTime,5,0.04,-1"
"OnTrigger" "fxintro,SetNextBlendMode,8,5.05,-1"
"OnTrigger" "fxintro,SetNextBlendTime,5,5.06,-1"
"OnTrigger" "fxintro,Deactivate,,10.06,-1"
"OnTrigger" "b_camera,SetOff,,10.07,-1"

Баги

  • script_intro Не работает полноценно на картах использующих 3D скайбоксы. В зависимости от версии движка, вылазят разные баги. Например, 2D скайбокс может казаться черным, либо вообще могут не срабатывать визуальные эффекты. Дабы избежать нежелательных последствий, не используйте script_intro на картах с 3D скайбоксами, либо реализуйте эффекты лишь в тех местах, где не будет видно небо.
  • Viewmodels(en), если они присутствуют (в поле зрения игрока) в момент проигрывания script_intro, то не будут корректно отображаться (видны только 2д элементы (спрайты вспышек итд)) . Следует отнимать оружие у игрока для таких сцен или же использовать второй стороннюю камеру в игре (две камеры А и В)

Обе проблемы из-за скайбоксов и оружия в руках.

Cpp.pngИсправление кода: Проблему со скайбоксом можно обойти, если передвинуть подготовку (setup) из CSkyboxView в CViewRender::RenderView(), чтобы она происходила после того, как вторая камера отрисует интро сцену. Таким образом, она будет разделена на два инстанса, первый непосредственно перед CViewRender::ViewDrawScene() , а другой инстанс подготовки (setup) из CViewRender::ViewDrawScene_Intro(), вскоре после блока m_bDrawPrimary. Это работает, если мы поместим ее перед g_pClientShadowMgr->PreRender(). Чистый фон будет удален, по крайней мере, пока вычисляется визуализация скайбокса.
Подтвердить:Приводит ли удаление VIEW_CLEAR_COLOR к прекращению корректной работы VortWarp(en)?
Cpp.pngИсправление кода:Баг с viewmodel можно обойти отключив обычный вызов CViewRender::DrawViewModels() в CViewRender::RenderView(), когда активен код intro, и добавив отдельный вызов в CViewRender::ViewDrawScene_Intro() перед составлением intro_screenspaceeffect. Это работает, если мы поместим его сразу после main DrawWorldAndEntities.

Keyvalues (свойства энтити)

Match env_zoom's FOV transition ([todo internal name (i)]) <булева переменная(en)>
Использовать ли плавный зум как в env_zoom.
Name(en) (targetname) <объект источник(en)>
Имя объекта, по которому другие объекты могут ссылаться на этот объект, через Входы/Выходы(en) или другие ключ-параметры(en) (например parentname или target).
Также отображаются на 2D-видах в Hammer и Отчёте об объектах (Entity Report)(en).
См. также:  Основные ключ-параметры, входы и выходы доступные для всех объектов

Inputs (Входящие команды)

Activate
Объект готов к работе.
Deactivate
Объект выключен.
SetCameraViewEntity
Имя камеры, чья картинка будет смешиваться (камер может быть две)
SetBlendMode
Выбрать метод смешивания
SetFOV
Установить уровень FOV (зум)
SetNextFOV
Установить следующий уровень FOV, используется с SetFOVBlendTime командой в паре.
SetFOVBlendTime
Установить время перехода от исходного значения FOV к указанному выше.
SetNextBlendMode
Установить следующий метод смешивания с SetNextBlendTime командой в паре
SetNextBlendTime
Установить время перехода между двумя методами смешивания, смотри выше
FadeTo
Установить прозрачность экрана <альфа> и переход<длительность>
SetFadeColor
указать цвет затемнения экрана <красный> <зеленый> <синий>


Outputs (Исходящие команды)