Анализа система камера УЕ4

Ue4 Camera System Analysis



Један. Како ради камера

У игри, камера је очи играча, и он контролира гледиште играча (ПОВНаиме, ПоинтОфВиев, у даљем тексту ПОВ) положај и величина видног поља играчаФОВНаиме ФиелдОфВиев, у даљем тексту ФОВ). Једном речју, камера нас одређује да посматрамо свет игре.

Постоји много врста игара, укључујући ФПС игре у првом лицу, акционе игре у трећем лицу и РТС игре које треба гледати у целини. Једноставно речено, прва особа треба да постави ПОВ у положај ока, трећа особа да постави ПОВ на одређено растојање иза особе, а РТС да ПОВ постави на високи положај од земље. Овде је ПОВ тачнији од фотоапарата, јер је понекад камера само целина коју сви могу разумети и посматрати. Заправо, његов положај може бити произвољан, али да бисмо олакшали свима разумевање и употребу, обично користимо положај камере и положај тачке гледишта. Синхронизуј. Положај камере на доњој слици је положај ПОВ, а љубичасти оквир је ФОВ.






Слика 1-1 ФОВ са вредношћу 90



Слика 1-2 ФОВ са вредношћу 40

Будући да се ПОВ мења било када у игри, морамо да ажурирамо његову позицију у Тику. Дакле, у основи је прилагођавање камере стално ажурирање положаја ПОВ-а, тако да такође можемо несметано посматрати свет игре. Ако желимо да променимо другу перспективу, онда промените наш ПОВ. Ако желите да направите неке специјалне ефекте за кретање фотоапарата, можете користити неку интерполацију алгоритам Да се ​​позабави локацијом ПОВ-а. Ако желите да направите неке визуелне специјалне ефекте, можете директно додати неке ефекте накнадне обраде на камеру. Укратко, опет, камера одређује како посматрате свет игре.



два. УЕ4 Чешљање односа камере


Прво ставите дијаграм класа везаних за камеру,


Слика 2-1 Дијаграм класе везан за камеру

Хајде сада да анализирамо однос између сваког одељења један по један.

Будући да обично прво идете до званичних докумената, ево објашњења по редоследу званичних докумената.

2.1 Компонента камере И ЦамераАцтор

Компоненте ЦамераЦомпонент се обично постављају на коријенски чвор контролне улоге и у њему се могу поставити редовна понашања и атрибути, укључујући положај ПОВ (тј. Положај компоненте), ФОВ, режим посматрања (подељен у орто режим и режим перспективе), однос ширине и висине , ефекти накнадне обраде итд.

Улога ЦамераАцтор-а је једноставнија, то јест да енкапсулира компоненту ЦамераЦомпонент у Ацтор тако да се може директно сместити у ниво.

Слика 2-2 Камера се може поставити у модове

ЦамераЦомпонент такође укључује још две компоненте, једну је УДравФрустумЦомпонент, другу УСтатицМесхЦомпонент. УСтатицМесхЦомпонент сви добро разумеју. Користи се за приказ објектног модела Ацтор-а, а УДравФрустумЦомпонент за приказ прозора камере. (Љубичасти оквир на слици 1-1 доступан је само у едитору).

2.2 ПлаиерЦамераМангер

Од имена га можемо назвати менаџером камере, па чиме он управља? Одговор је ПОВ. Овде се спроводи стварни поступак израчунавања положаја ПОВ. Можете да обрађујете поступак израчунавања ПОВ различитих перспектива особе, да се бавите вибрацијама и сударима камере, а такође можете да додате специјалне ефекте честица сочива (ефекти прскања итд.) У камеру.

2.1.1 ВиевТаргет

Као што и само име говори, циљ посматрања је објекат који желимо да камера прати. За опште игре у трећем лицу, наша камера је увек усмерена на лик којим управљамо. Овај лик се може сматрати ВиевТаргет (али ВиевТаргет није само глумац). ВиевТаргет је дефинисан у ПлаиерЦамераМанагер-у и одговоран је за пружање идеалног ПОВ-а менаџеру. Структура ВиевТаргет садржи објект глумца, информације о ПОВ-у које одговарају глумцу и тренутну државу играча. Другим речима, генерално израчунавамо положај ПОВ-а камере према положају глумца који се налази у ВиевТаргет-у, а израчунати резултат чувамо у ПОВ-у у ВиевТаргет-у.

Слика 2-3 Интерна структура ВиевТаргет

2.3 Компонента камере , ЦамераАцтор и ПлаиерЦамераМангер

Након претходног увода, знамо да ПлаиерЦамераМанагер израчунава положај ПОВ-а везујући ВиевТаргет. Уопштено говорећи, глумац у којег смо ставили ЦамераЦомпонент наш је идеални ВиевТаргет. На исти начин, ЦамераАцтор који поседује ЦамераЦомпонент је такође ВиевТаргет.

ПлаиерЦамераМанагер обично има неколико режима камере (ЦамераСтиле), као што је приказано доле


а његов подразумевани режим је други

У подразумеваном режиму, ПлаиерЦамераМанагер ће позвати глумачку ЦалцЦамера приликом ажурирања ПОВ-а. ЦалцЦамера прво одређује да ли постоји ЦамераЦомпонент и да ли је бФиндЦамераЦомпонентВхенВиевТаргет тачно, ако је одговор да, добиће положај и оријентацију ЦамераЦомпонент, у супротном ће добити координате и оријентацију Глумца ВИевТаргет за ажурирање ПОВ података тачке гледишта .

Остали режими захтевају од играча да изврше даље детаљне прорачуне.

Ако је тренутни ВиевТаргет ЦамераАцтор, ПлаиерЦамераМанагер ће директно добити положај и оријентацију ЦамераЦомпонента да би ажурирао ПОВ.

2.4 ПлаиерЦонтроллер Са ПлаиерЦамераМангер

Знамо да ће у УЕ4 сваки Пешак имати одговарајућег контролера. Ми природно желимо да контролер има функцију управљања ротацијом (зашто не би контролисао локацију? Јер локација следи Виевтаргет. У реду). Дакле, овде је функција УпдатеРотатион за контролу оријентације. Па како то утиче на израчунавање становишта у ПлаиерЦамераМанагер?

Можемо се осврнути на слику 2-1. Посматрањем можемо видети да у ПлаиерЦонтроллер постоји својство ПлаиерЦамераМанагер. Када окренемо миша, ово померање ће се пренети на РотатионИнпут преко АддЦонтроллерИавИнпут и АддЦонтроллерПитцхИнпут. Када ПлаиерЦонтроллер изврши УпдатеРотатион, он ће добити ПлаиерЦамераМанагер и израчунати ротацију након кретања (то јест, израчунати РотатионИнпут) путем ПроцессВиевРотатион и доделити ову ротацију ЦонтролРотатион-у и Павн-у којим управља Цонтроллер (укључујући компоненту ЦамераЦомпонент на његовом тело).

Слика 2-4 Контролер који прима поступак ротације миша

Коначно, након горе наведеног поступка, оријентација наше ЦамераЦомпонент је измењена. ПлаиерЦамераМанагер може добити оријентацију ЦамераЦомпонента приликом ажурирања ротације ПОВ-а. (Ово је подразумевано ток обраде камере УЕ4)

Претпоставимо да немамо ниједну компоненту ЦамераЦомпонент? Ово је заправо врло једноставно. На слици 2-1 можете видети да класа ПлаиерЦамераМанагер има својство ПлаиерЦонтроллер, тако да ПлаиерЦамераМанагер може у било ком тренутку добити ПлаиерЦонтроллер који одговара тренутном ВиевТаргету. А ми смо заправо добили израчунату оријентацију тренутне камере путем СерЦонтролРотатион у процесу са слике 2-4, тако да када ПлаиерЦамераМанагер ажурира ПОВ оријентацију, можемо добити ЦонтролРотатион контролера. На тај начин, када ажурирамо ПОВ оријентацију, не треба да добијемо оријентацију ЦамераЦомпонент-а, без употребе ЦамераЦомпонент-а или ЦамераАцтор-а.

Напомена: видимо слику2.4Последња два корака су бављење оријентацијом лика. Након обраде на овој слици, плејер ће се окретати док се камера окреће. Међутим, многе популарне игре тренутно користе играчеве тастере са стрелицама за контролу смера.

три. Резиме и чешљање

Кроз горњи увод, у основи разумемо однос између класа повезаних са камерама. Преуредимо га овде,

Ако желимо да контролишемо камеру, постоје два основна решења.

Опција 1, званични водич за УЕ4, ставите ЦамераЦомпонент на тело којим желимо да контролишемо циљ. Затим ажурирајте ПОВ добијањем положаја и оријентације компоненте камере.

Друга опција, контролни циљ може бити произвољан, на Виевтаргет-у нема ЦамераЦомпонент. ПлаиерцамераМанагер одређује положај ПОВ-а добивањем позиције ВиевТаргет + одређеног одступања (ПлаиерЦамераМанагер има ТПВЦамераОффсет и ФрееЦамОффсет). За оријентацију, ПлаиерЦамераМанагер може добити ЦонтролРотатион програма ПлаиерЦонтроллер.

Морамо знати да су прорачуни ПлаиерЦамераМанагер овде заправо нижи. Понекад овде не треба да модификујемо прорачун, али такође можемо да се носимо са неким подешавањима камере, као што су ограничење угла ротације, прилагођени прорачун оријентације ПОВ, који се могу записати у ЦалцЦамера програма ПлаиерЦонтроллер и позвати у УпдатеЦамераРотатион. Све у свему, оно што треба да схватимо је како се израчунавају положај и оријентација тачке гледишта ПОВ.

На крају, да резимирамо, постоје две главне тачке израчуна ПОВ камере

1. Морате осигурати да се поступак израчуна врши у Ажурирању

2. Морате добити ажурирану позицију и ротацију када ПлаиерцамераМанагер израчуна ПОВ

Са горе наведена два услова можете глатко ажурирати положај и оријентацију ПОВ-а.

Напомена: У овом тренутку пронашли смо двеЦалцЦамера, Један уГлумацУнутра се користи за добијањеГлумацИли на његаКомпонента камереПоложај и оријентација компонената. друга јеПлаиерЦонтроллерУнутрашњост, користи се за прилагођавање камереПОВИзрачун обраде се подразумевано не позива.

Слика 3-1 ПОВ процес гледишта за ажурирање камере


Четири детаља о употреби камере

.

4.1 Обрада положаја камере

У одељку 2.4 укратко смо споменули поступак употребе фотоапарата. Након што се игра покрене, ПлаиерЦамераМанагер ће поставити Павн-а лика играча на ВиевТаргет, а затим ће добити координате ВиевТаргет-а као основну вредност. Основна вредност додаје се ЦамераОффсет на плејеру да би се добио положај ПОВ тачке гледишта. Међутим, ЦамераОффсет овде је одмак у односу на локални координатни систем ВиевТаргет-а, а даља обрада треба да се обави у складу са тренутном оријентацијом лика и Мутиплиер-ом.

Ако желите да плејер подеси различите перспективе у различитим стањима, можете додати више ЦамераОффсетс (ако снимате ЦамераОффсет). Затим пређите на различите ЦамераОффсет у различитим стањима.

4.1 Обрада ФОВ камере

У многим играма, ако користите оружје као што су лук и стреле, можете циљати. Метода циљања је модификација ФОВ-а камере. Атрибут ОверридеФОВ може се поставити на оружје, а ефекат нишанирања може се постићи ажурирањем тренутног ФОВ приликом циљања.

5. Посебна обрада камере




5.1 Дрхтај камере

Слика 5-1 Дијаграм класе везан за подешавање камере

Овде извадимо дијаграм наставе везан за камеру и бацимо поглед. Приметите да постоји класа УЦамераМодифер наслеђена од УОбјецт. Његова улога је подешавање камере. Овде дефинишемо било који Модифи тип за наслеђивање од УЦамераМодифер, али у ствари најчешће коришћени је УЦамераМодифиер_ЦамераСхаке (подрхтавање камере). Класа је заиста одговорна за подешавање камере.

Када ПлаиерЦамераМанагер ажурира ПОВ информације или просуди да ли да позове ЦамраМодифиер у складу са условима, постоји један у овој класиТАрраи<класаУЦамераМодифиер*>МодифиерЛистДа бисте сачували све тренутне Модификаторе. Приликом преласка, ако се пронађе Модификатор, извршиће се одговарајућа модификација.

Истовремено, можемо видети и класу УЦамераСхаке, која се користи за подешавање параметара вибрације камере, укључујући време и амплитуду вибрација. На пример, уУГамеплаиСтатицс::ПлаиВорлдЦамераСхакеу. Морамо проћи у једномТСубцлассОф<класаУЦамераСхаке>Мућкатипараметар. У програму ПлаиерЦонтроллер постоји и ЦлиентПлаиЦамераСхаке метода коју клијент може да позове, а која такође треба да пређе у УЦамераСхаке тип. У ствари, основни принцип извођења подрхтавања камере је додавање једног према долазном параметру УЦамераСхакеУЦамераМодифиер_ЦамераСхаке

У игри можемо назвати ситуацију подрхтавања камере (и начин примене):

1. Близу великог НПЦ-а (додајте Нотифи у анимацијски нацрт НПЦ-а да обавестите клијента да изврши)

2. Пуцај (вежи УЦамераСхаке за оружје)

3. Играч је повређен

4. Када замахујете оружјем да бисте погодили мету (везати УЦамераСхаке за оружје)

Постоје многе ситуације, у складу са захтевима пројекта


5.2 Ефекти честица сочива камере

У дефиницији класе ПлаиерЦамераМанагер можемо видети такав атрибут који постиже капање крви и друге ефекте везивањем посебног ефекта честица испред камере. Може се користити путем ЦлиентСпавнЦамераЛенсЕффецт_Имплементатион. Ефекат је следећи

Слика 5-3 Ефекат имплементације ЦамераЛенсЕффецт-а

5.3 Судар камере

Логика судара камере може се записати у УпдатеВиевТаргет програма ПлаиерЦамераМанагер (то јест, место на којем се ажурирају информације о ПОВ тачке гледишта) и на крају треба да изврши детекцију судара типа бокс. Ако испуни Објекте са условима канала, ажурираће координате тачке гледишта.


5.4 Прекидач режима рада камере

Као што је раније поменуто, УЕ4 подразумевано нуди неколико режима камере које програмери могу да користе. Најчешће коришћени су бесплатна камера, прво лице, треће лице итд. Начин посматрача је сличан режиму бесплатне камере.

ПлаиерЦамераМанагер ће просуђивати тренутни ЦамераСтиле приликом ажурирања ПОВ-а и вршити различите прорачуне. На пример, када се пребацимо са перспективе трећег лица на перспективу првог лица, положај ПОВ-а у односу на играча ће се променити („Иза леђа постаје близу очију“).

Треба напоменути да се канали за откривање судара различитих камера могу разликовати.


5.5 Пост-обрада камере

Накнадна обрада у УЕ4 може се обавити на два начина (други блог укратко представља накнадну обраду Кратак опис накнадне обраде УЕ4 . ). Прво је додати ПостПроцессВолуме на сцену, а затим је камера у овој запремини да произведе ефекат. Друга је додавање и подешавање компоненте камере, тако да камеру не треба постављати у посебан положај. Прва слика на слици 4-3 горе је ефекат накнадне обраде након Гауссовог замућења и мешања боја.

5.6 Заглађивање и закашњење камере

У већини игара, како би се постигло боље играчко искуство, камера се глатко креће. Будући да се камера ажурира сваки кадар, можемо постићи гладак ефекат све док се држимо фиксне удаљености од наше ВиевТаргет.

Али ако желимо одмах да се пребацимо са тренутне камере на другу позицију камере или се наша ВиевТаргет телепортује, ако у овом тренутку ништа не предузмемо, камера ће се изненада пребацити (са . Ако осетимо да је овај преокрет помало изненадан, само треба да се на кратко позабавимо њиме. Поставите интерполацију за постепену интерполацију тренутне позиције у циљну позицију. (ФМатх :: ВИнтерпТо (Тренутна позиција,циљна локација, ДелтаТиме,брзина)

Слично томе, ако желите да направите ефекат кашњења камере (то јест, играч може изненада да искористи вештину да се помери са велике удаљености, како би одразио ефекат, желите да камера полако сустиже играча), такође може да користи сличан метод за постизање.

Ако сте заинтересовани, можете се обратити службеној рутини УЕ4 за треће лице, затим пронаћи опружну компоненту, потражити својство ЕнаблеЦамераЛаг и испробати ефекат. Наравно, можете и да одете на код да бисте видели детаље његове примене.


Шест. Остало

1. ДоУпдатеЦамера у УЕ4 ће управљати пребацивањем камере виевТаргет. Ако тренутна камера жели да се пребаци на другу, овде ће се бавити интерполацијом и мешањем. Тренутно се не сме позивати УпдатеВиевТаргет. Објект који треба пребацити је ПендингВиевТаргет, а параметар бленда је БлендПарамс.

2. ПлаиерЦамераМанагер генерише воид АПлаиерЦонтроллер :: СпавнПлаиерЦамераМанагер ()

3. Синхронизујте положај и ротацију ЦамераМанагер-а са тачком гледишта. На овај начин можемо такође добити информације о тачки гледишта путем менаџера камере. На исти начин, синхронизацијом оријентације ПлаиерЦонтроллер-а са тачком гледишта, такође можемо добити оријентацију ПлаиерЦонтроллер-а да бисмо добили оријентацију гледишта.

4. Следећи дијаграм тока описује како је лик ПлаиерЦамераМангер поставио ВиевТаргет.

Слика 6-1 Дијаграм тока постављања Павн-а којим управља играч као ВиевТаргет