Kiedy już nauczycie się podstaw w Unity, naturalną rzeczą jest korzystanie ze sprawdzonych i przećwiczonych rozwiązań aby nic Was nie zaskoczyło. Nie wychodząc zatem zbyt daleko poza tą strefę komfortu w Unity, chciałbym wam pokazać dzisiaj ciekawe zastosowanie rodzaju assetu o nazwie RenderTexture. Oto jak, bez choćby jednej linii kodu wykonać kamerę monitoringu (CCTV) w waszej grze.

Czym właściwie jest RenderTexture (RT)


Zakładam, że potraficie tworzyć materiały, które następnie przypisujecie do obiektów. W waszych materiałach do slotu Base Map przypisujecie teksturę drewna, metalu czy innej faktury. RenderTexture to w pewnym sensie nic innego jak taka właśnie tekstura. Jednak powstaje ona dynamicznie w trakcie działania gry. Renderowany może być do niej np. obraz z kamery – i to właśnie wykorzystamy co naszego monitoringu.

Tworzymy RT


Podobniej jak inne assety, w panelu Project w edytorze Unity, RT znajdziemy w grupie Create.
 

 

Po stworzeniu RT np. o nazwie CCTV, będziemy widzieć w panelu Project jako czarny kwadrat. To dlatego, że jeszcze nic nie zostało do tej tekstury wyrenderowane.
Po zaznaczeniu assetu RT, w panelu Inspector zobaczycie kilka dość oczywistych opcji do przełączenia, ale na tą chwilę niczego nie trzeba przestawiać.

 

Teraz stwórzcie w scenie kamerę monitoringu oraz ekran na którym pojawi się obraz z kamery.
Menu > GameObject > Camera  - aby stworzyć kamerę.

Menu > GameObject > 3D Object > Quad – aby stworzyć imitację ekranu LCD.

Moja scena wygląda mniej więcej tak jak poniżej. Ciemno-szary kwadrat to ekran. Kamera to zaznaczony obiekt, a białe elementy to przykładowe obiekty obserwowane przez kamerę.
 

Obraz zawierający zrzut ekranu, modelowanie 3D, Oprogramowanie multimedialne, Oprogramowanie graficzneOpis wygenerowany automatycznie
 

Następnie w zaznaczonym obiekcie kamery, w panelu Inspector rozwijamy sekcję Output. Zobaczymy tam pozycję Output Texture i do tego pola przeciągamy naszą czarną teksturę z panelu Project.

 

Obraz zawierający zrzut ekranu, tekst, Oprogramowanie multimedialne, oprogramowanieOpis wygenerowany automatycznie
 

Od tego momentu to co zobaczy nasza nowa kamera będzie w trybie ciągłym przepisywane do tekstury RT. A skoro mamy już teksturę z tym co widzi kamera, to wystarczy już tylko użyć naszego assetu RT jako tekstury na materiale dla ekranu LCD. Można też na skróty – jeżeli po prostu przeciągnę teksturę na obiekt ekranu, Unity samo stworzy materiał i przypnie teksturę do materiału a materiały do obiektu. Spróbujcie.

Scena powinna wyglądać teraz mniej więcej tak:
 

Obraz zawierający zrzut ekranu, modelowanie 3D, w pomieszczeniuOpis wygenerowany automatycznie

 

a materiał dla ekranu LCD tak jak poniżej w naszym assetem RT w slocie Base Map:
 

Obraz zawierający tekst, zrzut ekranu, Oprogramowanie multimedialne, oprogramowanieOpis wygenerowany automatycznie
 

To wszystko! 😊

Oczywiście kamera i obiekty w trakcie gry mogą się poruszać a ten ruch będzie aktualizowany na RT.

Ot, taki prosty i szybki patent. Jeden z wielu, więc wypatrujcie kolejnych!