|
| |||
|
| |||
| |
Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология. |
|
Camera Technical Guide
автор: FACH | 17 Августа 2010 | Просмотров: 8863
Автор: Джефф Уилсон Перевод: FACH, H2O Оригинал: UDN
Система камер для игроков в Unreal Engine 3 состоит из трех основных классов: Camera (Камера), Pawn (пешка) и PlayerController. Все эти классы взаимодействуют при контроле положения, вращения и других специальных эффектов, которые должны применяться к камере игрока во время игры.
PlayerController содержит ссылку на используемую камеру, также как на контролируемую Пешку. PlayerController принимает управление от игрока и использует для обновления позиции и вращения Пешки, которую контролирует. По умолчанию, Камера выдает свое обновление Пешке, которая, в свою очередь, обновляет положение и вращения Камеры.
Изменением одного или нескольких этих классов и путей их взаимодействия, камера игрока может быть настроена показывать мир игроку с любой перспективы (вида), подходящей под Ваш тип игры, что Вы делаете. По умолчанию, камера использует вид «от первого лица» игрока с возможностью переключения на «третье лицо» из-за плеча. Это может быть легко изменено для показа вида «сверху», изометрическую проекцию, скролинговую камеру, или любой другой вид для игры, который потребуется.
Камера
Класс Камеры представляет зрение игрока в игре. Положение и вращение камеры игрока отображает сцену на экране с его точки зрения. Класс Камеры содержит управляемые свойства, такие, как отрисовка объектов в поле зрения, формат изображения и т.п. На камеры есть специальные эффекты, которые могут быть применены к ним, в том числе такие вещи, как пост-обработка, эффект линз (lens), модификаторы, анимации и т.д.
Помните, что все переменные FOV (field of view — зона обзора) целые углы в градусах, обозначающие область, попавшую в поле зрения объектива или виртуальной камеры. Свойства Камеры
Общие *PCOwner - ссылка на PlayerController, который владеет этой камерой. *CameraStyle - текущий режим для этой камеры. Используется для определения стиля камеры (например, от первого лица, от третьего лица, свободный, т.п.), когда точка зрения не определена относительно цели (target). *ViewTarget - текущие данные, определяющие вид цели. Тип TViewTarget. *TViewTarget **Target - целевой актер, за которым следит камера. **Controller - Контролер Target, если это пешка (Pawn). **POV – «идеальная» точка зрения на цель. Тип TPOV. ***TPOV ****Location - место «точки зрения». ****Rotation - вращение относительно точки зрения. ****FOV – угол поля зрения из точки зрения. ***AspectRatio - формат изображения на цель. ***PRI – (Player replication info) информация, используемая для отслеживания игрока через переходы пешки. FOV (углы обзора) *DefaultFOV - по умолчанию поле зрения камеры. *bLockedFOV - если True, поля зрения (FOV) камеры будет заблокировано значением LockedFOV. *LockedFOV - поле зрения при заблокированном FOV. Aspect Ratio (Соотношение сторон) *DefaultAspectRatio - пропорции камеры по умолчанию. *bConstrainAspectRatio - если True, пропорции камеры будут ограничены значением ConstrainedAspectRatio. *ConstrainedAspectRatio - формат изображения при ограниченных пропорциях камеры.
Функции камеры
Общие *UpdateCamera [DeltaTime] - вызывается один раз в кадр, чтобы выполнить обновление камеры. **DeltaTime - время с момента последнего обновления. *GetCameraViewPoint [OutCamLoc] [OutCamRot] – получение (возврат) данных о позиции и ротации камеры. Эта функция не должна вызываться непосредственно. Вместо нее - GetPlayerViewPoint () функции PCOwner. **OutCamLoc – выводит местоположение камеры в пространстве. **OutCamRot - выводит поворот камеры в пространстве. *ProcessViewRotation [DeltaTime] [OutViewRotation] [OutDeltaRot] – Вызывается PCOwner, дав камере возможность повернуться в кадре. **DeltaTime - время с момента последнего обновления. **OutViewRotation - выводит определенный поворот камеры. **OutDeltaRot - выводит определенный дельта поворот камеры. FOV *GetFOVAngle - возврат камеры в текущей угол обзора. *SetFOV [NewFOV] – установить угол обзора камеры по значению NewFOV. **NewFOV – новый угол обзора. View Target *SetViewTarget [NewViewTarget] [TransitionParams] - устанавливает цель камере. **NewViewTarget – актер, устанавливаемый в качестве новой цели для камеры. **TransitionParams - смесь параметров, используемых при переходе к новой цели. *UpdateViewTarget [OutVT] [DeltaTime] – вызывается в каждом кадре, чтобы обновить вид на цель, при новом положении, угле поворота и FOV. При использовании пользовательских камер (в отличие от основной CalcCamera () в актере целевого вида), это ключевая функция для переопределения для осуществления желаемого поведения. **OutVT - структура данных, о цели и точки зрения камеры. **DeltaTime - время с момента последнего обновления.
Эффекты пост-обработки
Эффекты пост-обработки, применяются к сцене, до показа игроку. Каждая камера может применить свой собственный набор настроек пост-обработки, который может перекрыть мировую пост-обработку, объемную и настройки по умолчанию.
Более подробно об эффектах пост-обработки, смотреть PostProcessEditorUserGuide и PostProcessTechnicalGuide и PostProcessMaterials .
Свойства пост-обработки
*CameOverridePostProcessAlpha - устанавливает влияние камеры на настройки пост-обработки мира, объема и настройки по умолчанию. Значение 0,0 приоритет мировых, объемных, или пост-обработки, по умолчанию. Значение 1,0 приоритет пост-обработки камеры. *CamPostProcessSettings – настройки пост-обработки, для камера. *bEnableColorScaling - Если True, цветовые каналы окончательного изображения будет увеличены на значения ColorScale. *ColorScale - Вектор для увеличения отдельных цветовых каналов в окончательном изображении. *bEnableColorScaleInterp - Если True, масштабирование значений интерполяция цвета камеры, новые значения масштабирования цвета задается через SetDesiredColorScale () функцию. *bEnableFading - Если True, камера будет использовать FadeAmount по значениям FadeColor на экране. *FadeColor - Цвет, применяемый к экрану, когда изображение от камеры исчезнет.
Функции пост-обработки
*SetDesiredColorScale [NewColorScale] [InterpTime] - устанавливает новые значения масштабирования цвета и, возможной, интерполяции в зависимости от значений bEnableColorScaleInterp. **NewColorScale - новые значения масштабирования цвета. **InterpTime - количество времени, принятия интерполиляции на новые значения масштабирования цвета.
Эффекты линзы (Lens Effects)
Эффекты линзы - эффекты, которые применяются на линзу камеры игрока. Эти эффекты могут быть использованы для создания эффектов, такие как скатывание капель дождя вниз по линзе, брызги крови, грязи или пыли и т.п. Класса камеры содержит функции, чтобы применять эти типы эффектов. Более подробно о системе частиц и эффектов, смотреть ParticleSystemReference .
Свойства эффекта линз
*CameraLensEffects - массив всех эффектов частиц, в настоящее время применяемых к камере.
Функции эффекта линз
*FindCameraLensEffect [LensEffectEmitterClass] - поиск эффекта, применяемого к камере и возвращает любой тип из совпадающих типов. **LensEffectEmitterType - класс эффекта линз для поиска. *AddCameraLensEffect [LensEffectEmitterClass] - применение нового эффекта линзы данного типа к камере. **LensEffectEmitterClass - класс эффект линзы, применяемый к камере. *RemoveCameraLensEffect [Emitter] - удаляет эффект линзы камеры. **Emitter - эффект линзы для удаления. *ClearCameraLensEffects - Снимает все эффекты, имеющиеся на камере.
Анимации камеры (Camera Animations) Анимации камер - анимации, которые могут быть созданы в Matinee (или во внешнем редакторе анимации и импортированы), которые используют информацию перемещения и вращения, чтобы манипулировать камерой во время игры. Также дают возможность манипулировать любыми другими свойствами камеры, которые могут быть анимированы в Matinee, такие, как FOV или эффекты пост-обработки. Это может быть весьма полезно для создания эффектов, таких как дрожь камеры, удара или любой другой анимированный эффект.
Для получения дополнительной информации о настройке анимации камеры, смотреть SettingUpCameras .
Функции анимации камеры
*PlayCameraAnim [CameraAnim] [Rate] [Scale] [BlendInTime] [BlendOutTime] [bLoop] [bRandomStartTime] [Duration] [bSingleInstance] - воспроизведение анимации камеры на данную камеру. **CameraAnim – анимации камеры для воспроизведения. **Rate - необязательно. Скорость, с которой воспроизводится анимация камеры. **Scale - необязательно. Множитель интенсивности, применяемый к преобразованиям анимации камеры. **BlendInTime - необязательно. Количество времени, чтобы начать смешивать анимации камеры. **BlendOutTime - необязательно. Количество времени, выйти на смесь из камеры анимации. **bLoop - необязательно. Если это True, анимации камеры будет зациклена, пока не будет остановлена. **bRandomStartTime - необязательно. Если это True, анимация камеры начнет воспроизведение в любой момент времени, в течение срока анимации. **Duration - необязательно. Продолжительность анимации. Если не установлена, вся анимация будет воспроизведена. **bSingleInstance - необязательно. Если это True, только один раз дрожание камеры будут воспроизведено в любой момент времени. *StopAllCameraAnims [bImmediate] - останавливает все анимации камеры, проигрывающиеся в данный момент. **bImmediate - необязательно. Если это True, анимации сразу же остановятся, игнорируя любое установленное время на смешивание. *StopAllCameraAnimsByType [Anim] [bImmediate] - остановка всех экземпляров определенного типа анимации камеры. **Anim - тип анимации камеры для остановки. **bImmediate - необязательно. Если это True, анимации сразу же остановятся, игнорируя любое установленное время на смешивание. *StopCameraAnim [AnimInst] [bImmediate] - Остановки конкретного экземпляра анимации камеры. **AnimInst – определенная анимация камеры для остановки. **bImmediate - необязательно. Если это True, анимации сразу же остановятся, игнорируя любое установленное время на смешивание.
Модификаторы камеры
Модификаторы камеры - объекты, применяемые к камере, изменяющие свойства камеры. Класс CameraModifier является базовым классом для этих эффектов. Подклассы этого класса и основные его функции, можно полностью перенастроить. Класс CameraModifier_CameraShake - хороший пример того, чего можно достичь с помощью модификаторов камеры.
Модификаторы свойств камеры
*ModifierList - массив всех модификаторов камеры, примененных на камеру. *CameraShakeModClass - класс, использования коническо-управляемой встряски камеры, то есть анимации не камеры изображения а тряску из Кисмета.
Модификаторы Функций камеры
*PlayCameraShake [Shake] [Scale] [PlaySpace] [UserPlaySpaceRot] - проигрывание эффекта дрожания камеры. **Shake - использования эффекта дрожания камеры. **Scale – умножение интенсивности дрожания камеры. **PlaySpace - необязательно. Пространство для проигрывания тряски камеры. **UserPlaySpaceRot - необязательно. Поворот, используется в определенных местах установленных пользователем. *StopCameraShake [Shake] - остановка воспроизведения эффекта дрожания камеры. **Shake - тряска камеры, для остановки воспроизведения. *CalcRadialCameraShake [Cam] [Epicenter] [InnerRadius] [OuterRadius] [Falloff] - Вычисляет и возвращает интенсивность для конкретной модели радиальной тряски. **Cam - камера для расчета интенсивности. ** Epicenter - место, от которого происходит дрожание камеры. **InnerRadius - расстояние от эпицентра, до начала спада. **OuterRadius - расстояние от эпицентра, до конца дрожания камеры. **Falloff – экспонента, используемая для расчета интенсивности спада. *PlayWorldCameraShake [Shake] [ShakeInstigator] [Epicenter] [InnerRadius] [OuterRadius] [Falloff] [bTrForceFeedback] [bOrientShakeTowardEpicenter] – проигрывание тряски камеры в конкретном месте на карте, которая влияет на все соседние камеры. **Shake –воспроизведение тряски камеры. **ShakeInstigator - актер, который спровоцировал тряску камеры. ** Epicenter - место, от которого идет дрожания камер. **InnerRadius - расстояние от эпицентра, до спада. **OuterRadius - расстояние от эпицентра, до конца дрожания камеры. ** Falloff - экспонента, используемая для расчета интенсивности спада. **bTryForceFeedback - Если это True, сила обратной связи будет применена к любому затронутому контроллеру. **bOrientShakeTowardEpicenter - необязательно. Если это True, любое смещения во встряске камеры будут применено относительно направления к эпицентру с положительной Осью X, проходящей через эпицентр. *ClearAllCameraShakes - удаляет все тряски, примененных к камерам.
Контроллер игрока (Player Controller)
PlayerController отвечает за перевод действий играющего в действия в игре, такие как перемещение пешки или управление камерой. Это типично для поворотов PlayerController на поворот камеры, хотя это и не обязательно. При создании новых перспектив камеры, может быть необходимо, обновлять или переопределять некоторые функции в классе PlayerController, такое как управление, переведенное в перемещение и повороты Пешки, которые могут различаться по каждому типу камер. Некоторые свойства функций, связанные с движением и камер, описаны ниже.
Свойства контроллера игрока
*PlayerCamera - ссылка на камеру игрока. *CameraClass - класс камеры для использования игроком. *ViewTarget – текущая ориентация на цель камеры игрока. *RealViewTarget - информация репликации игрока о цели, видимой камерой игрока. *FOVangle – угол поля зрения камеры игрока. *DefaultFOV - угол по умолчанию поля зрения камеры игрока.
Функции контроллера игрока
*GetPlayerViewPoint [out_Location] [out_Rotation] - возвращает точку зрения Контролера пешки. Для игрока, это точка зрения камеры. Для АИ-контроллера, это точка зрения, глаз пешки. Это реализация места и вращения контроллера вокруг себя. **out_Location - выводит расположение точки зрения игрока. **out_Rotation – выводит вращения точки зрения. *GetActorEyesViewPoint [out_Location] [out_Rotation] - возвращает точку зрения Контроллера или Пешки, если она существует. По существу это возвращение, откуда куда смотрит игрок. **out_Location – выводит расположение глаз игрока. **out_Rotation – выводит поворот глаз игрока. *UpdateRotation [DeltaTime] - обновляет вращение Контроллера, и его Пешки, основываясь на вводе игрока. **DeltaTime - количество времени с момента последнего обновления. *ProcessViewRotation [DeltaTime] [out_ViewRotation] [DeltaRot] - вызывается, чтобы внести какие-либо изменения по вращению зрения контроллера (например, зафиксировать). Вызывается из UpdateRotation (). **DeltaTime - количество времени с момента последнего обновления. **out_ViewRotation - вывод вращение глаз игрока. **DeltaRot – изменение поворота из-за действий игрока.
*PlayerMove [DeltaTime] - Это вычисляет значения ускорения и вращения для текущего перемещения, а затем также вызывает ProcessMove () (для одиночной игры или listen серверов) или ReplicateMove () (для сетевых клиентов). Это просто заглушка в основном классе PlayerController, но она переопределена в определенных состояниях, которые включают перемещения, такие, как PlayerWalking состояние. Эта функция вызывается из функции PlayerTick в каждом цикле (наверное имеется ввиду кадре). *ProcessMove [DeltaTime] [newAccel] [DoubleClickMove] [DeltaRot] - Это обработка текущего перемещения клиента. Эта функция переопределяется внутри отдельных состояний, которые требуют специальные функции для движения.
Пешка (Pawn)
Пешка не только физическое представление игрока в мире, но также может быть ответственной за контроль положения и вращения камеры игрока. Она содержит функции, которые могут быть изменены, чтобы задать совершенно новые перспективы камеры. Некоторые функции связанные с камерами, описаны ниже.
Функции Пешки
*CalcCamera [DeltaTime] [out_CamLoc] [out_CamRot] [out_FOV] - Это вычисляет точку зрения камеры при просмотре от Пешки. Это основной расчет камеры для игрока. **DeltaTime - количество времени с момента последнего обновления. **out_CamLoc – вывод позиции камеры. **out_CamRot - вывод поворота камеры. **out_FOV – вывод угла поля зрения камеры. *GetDefaultCameraMode [RequestedBy] - возвращает камеру в режим по умолчанию, типа "имя", которое должно использоваться для этой Пешки. Это обычно вызывает контроллер, при обладании Пешкой. **RequestedBy - контроллер, запрашивающий режим камеры по умолчанию. *ProcessViewRotation [deltaTime] [out_ViewRotation] [out_DeltaRot] - Это дает Пешке возможность влиять на поворот зрения игрока и возвращает окончательный поворот зрения в out_ViewRotation параметр. Это вызывается из UpdateRotation () функции PlayerController. **deltaTime - количество времени с момента последнего обновления. **out_ViewRotation – вывод поворота точки зрения Пешки. **out_DeltaRot - вывод дельта ротации. *SetViewRotation [NewRotation] - устанавливает вращения Контроллера, если таковой существует, или Пешки, если никакого Контроллера не существует. **NewRotation - установка нового поворота взгляда Пешка на что-то. *GetActorEyesViewPoint [out_Location] [out_Rotation] - возвращает расположение и ориентацию глаз Пешки, или точки зрения игрока. Для первого лица в перспективе это идентичные положения камеры и ее ориентация. Это - также точка наблюдения, от которой будет выполняться большинство трассировок. **out_Location - вывод расположение глаз Пешки. **out_Rotation - вывод поворота глаз Пешки.
Настройка поведения камеры
Есть два основных способа реализации пользовательской камеры. Зрение целевой Пешки может осуществлять CalcCamera (), или же Вы можете создать собственный класс от камеры.
Реализация Pawn.CalcCamera () используется для простых и прямых режимов камеры. Практика показывает, что некоторые функции не могут быть полностью функциональными в этом методе, в том числе эффекты пост-обработки и анимации камеры.
Создание пользовательского класса камеры может занять немного больше настроек в создании, но быть полнофункциональным. GameFramework.GamePlayerCamera пример такого подхода.
Примеры
Ниже есть некоторые основные примеры изменения перспективы камеры игрока, а в некоторых случаях рассмотрено, как сделать лучшее управление игроком. Это не значит, что все уже написано и просто «подключи и играй», и у Вас будут все нужные Вам потребности камеры. Это все просто - мы просто даем Вам отправную точку и показываем, с чего начать создавать собственные настройки на камеры.
Есть, очевидно, много других настроек, которые могут и должны сделать, типы камеры который нужен именно Вам. Возможно, Вы захотите реализовать возможность регулировки расстояние от камеры до игрока в любом режиме, не в режимах «от первого лица», с помощью прокрутки колесика мыши. Добавление кода, для избегания «проваливания» камеры в геометрию, в некоторых режимах это может быть хорошей идеей, если Вы не планируете создавать свои уровни специально, для избегания таких вещей. Кроме того, изменить и метод отрисовки перекрестия, вместо того, чтобы полностью отключать его, что было бы хорошим дополнением в некоторых режимах.
Пример камеры вида «от первого лица» (First Person Camera)
Перспектива «от первого лица» - тип камеры по умолчанию для всех пешек, основанных от класса UTPawn (UDKPawn). Этот пример наследует основные части, которые составляют тот тип камеры от каждого включенного класса, и разместит их в новые подклассы, чтобы лучше продемонстрировать процесс, включения в создание простой камеры «от первого лица».
UDNPawn.uc
class UDNPawn extends UTPawn;
simulated function bool CalcCamera( float fDeltaTime, out vector out_CamLoc, out rotator out_CamRot, out float out_FOV ) { // Вычисление позиции и поворота камеры «от первого лица» GetActorEyesViewPoint( out_CamLoc, out_CamRot );
return true; }
defaultproperties { } UDNPlayerController.uc
Class UDNPlayerController extends UTPlayerController;
state PlayerWalking { ignores SeePlayer, HearNoise, Bump;
function ProcessMove(float DeltaTime, vector NewAccel, eDoubleClickDir DoubleClickMove, rotator DeltaRot) { if( Pawn == None ) { return; }
if (Role == ROLE_Authority) { // Обновляем ViewPitch для удаленных клиентов Pawn.SetRemoteViewPitch( Rotation.Pitch ); }
Pawn.Acceleration = NewAccel; } }
function UpdateRotation( float DeltaTime ) { local Rotator DeltaRot, newRotation, ViewRotation;
ViewRotation = Rotation; if (Pawn!=none) { Pawn.SetDesiredRotation(ViewRotation); }
// Вычисляем Delta для применения на ViewRotation DeltaRot.Yaw = PlayerInput.aTurn; DeltaRot.Pitch = PlayerInput.aLookUp;
ProcessViewRotation( DeltaTime, ViewRotation, DeltaRot ); SetRotation(ViewRotation);
NewRotation = ViewRotation; NewRotation.Roll = Rotation.Roll;
if ( Pawn != None ) Pawn.FaceRotation(NewRotation, deltatime); }
defaultproperties { } #1 написал: Artmancarver 18 Августа 2010 07:57 | ICQ: Не Указано |
#2 написал: BLooD-AIR 20 Августа 2010 02:50 | ICQ: 454178911 |
#3 написал: hD 20 Августа 2010 12:09 | ICQ: Не Указано |
#4 написал: alexut 25 Августа 2010 17:23 | ICQ: Не Указано |
#5 написал: Alex-Strelok 16 Сентября 2010 14:57 | ICQ: 7 |
#6 написал: Caspermaks 5 Ноября 2010 07:34 | ICQ: Не Указано |
#7 написал: Artmancarver 6 Ноября 2010 12:37 | ICQ: Не Указано |
#8 написал: DeviLlundead 2 Марта 2011 17:27 | ICQ: Не Указано |
#9 написал: FACH 2 Марта 2011 18:57 | ICQ: 562039160 |
#10 написал: dragonvad 29 Июня 2011 20:17 | ICQ: Не Указано |
#11 написал: FACH 29 Июня 2011 20:20 | ICQ: 562039160 |
#12 написал: dragonvad 30 Июня 2011 17:17 | ICQ: Не Указано |
#13 написал: FACH 30 Июня 2011 17:24 | ICQ: 562039160 |
#14 написал: bayah 13 Июля 2011 18:35 | ICQ: Не Указано |
#15 написал: FACH 13 Июля 2011 20:09 | ICQ: 562039160 |
#16 написал: bayah 20 Июля 2011 11:19 | ICQ: Не Указано |
#17 написал: Fitil_san 27 Марта 2012 01:08 | ICQ: 412082434 |
#18 написал: FACH 27 Марта 2012 08:22 | ICQ: 562039160 |
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...
|
|
|
При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна! © 2008—2012, UNREAL-LEVEL.RU. Все права защищены. |