Nicht eingeloggt
Registrieren

Erstellen einer Überwachungskamera

1. Grundlagen
1.1. Erstellen der Monitortextur
1.2. Setzten der Kamera
1.3. Der CameraTextureClient
1.4. Verwendung der Textur
1.4.1 Die Auflösung verÀndern
1.4.2 Benutzung der Texturen in einem Monitor



2. Extras
2.1 Bewegte Kamera
2.2 Automatisch durchschaltender Bildschirm
 

1.1. Erstellen der Monitortextur


Als erstes brauchst du eine neue Textur, auf welcher das Bild der Kamera angezeigt wird. Gehe dazu im Texture-Browser auf "File" und dann auf "New".


Mache dort folgende Einstellungen:



Durch das Speichern in dem Package "myLevel" wird diese Textur direkt in der Map gespeichert. Somit muss keine neue Datei angelegt werden. Unter "Name" kann auch ein beliebiger anderer Name stehen. Es muss dann aber auch in den weiteren Schritten der andere Name benutzt werden.

Es öffnet sich ein neues Fenster dort gibst du folgendes ein:




Die restlichen Einstellungen bleiben unverÀndert.



Nun kannst du das Properties-Fenster schießen und die Textur auswĂ€hlen.


1.2. Setzten der Kamera

Als Kamera nimmt man einen Emitter. WĂ€hle also einen Emitter im ActorClass-Browser aus.



Klicke nun mit der rechten Maustaste auf die Stelle, wo die Überwachungskamera sitzen soll, und wĂ€hle ?Add Emitter here?. Schiebe, fall es nötig ist, das Symbol in den 2D-Ansichten an die passende Stelle. Der Emitter sollte frei im Raum schweben und keine Wand berĂŒhren.



Advanced: bDirectional = wahr
Events -> Tag = Kamera1

In den Eigenschaften des Emitters (Rechtsklick auf das Symbol mit den 5 Punkten, dann auf ?Emitter Properties?) stellst du folgendes ein:


(Dem Tag kann auch ein beliebiger anderer Wert zugewiesen werden. Es muss dann aber auch in den weiteren Schritten der andere Tag benutzt werden.)




Nun ist bei dem Emitter ein roter Pfeil zu sehen.




Drehe den Emitter in den 2D-Ansichten (mit STRG und rechter Maustaste) so lange, bis er in die Richtung zeigt, in die auch gefilmt werden soll. Um die Blickrichtung besser anzupassen, kann man in der 3D-Ansicht an die Stelle gehen, an der der Emitter ist und die Sicht passend ausrichten. Danach kann man in den 2D Fenstern den Pfeil des Emitters an den Pfeil des Auges angleichen.



(Wenn das Auge ab einer bestimmten VergrĂ¶ĂŸerung verschwindet, muss man es einfach markieren solange es noch sichtbar ist. Wenn man es dann um ein kleines StĂŒck verschiebt, blendet es sich nicht mehr aus.)


1.3. Der CameraTextureClient


Als nĂ€chstes muss ein ?CameraTextureClient? eingefĂŒgt werden. Dieser ist fĂŒr die Verbindung von Textur und Emitter zustĂ€ndig. Der ?CameraTextureClient? ist im ActorClass-Browser unter der Kategorie ?Info? zu finden.

Um die Textur der Kamera auch im Netzwerk oder Online fĂŒr den Clienten sichtbar zu machen muss man einen "NetCameraTextureClient" nehmen. Zuerst muss man den ActorClass-Brwoser öffnen und dann das Package "NetCameraTexture.u" öffnen. Nun ist der CameraTextureClient unter der Kategorie "Info"-"CameraTextureClient".

Nun muss man nur mehr die "NetCameraTexture.u" auf dem Server unter dem "System" Verzeichnis installieren.
Dieser ist in bei dem Anhang dieses Tutorials dabei.




An welcher Stelle dieser platziert wird ist fĂŒr die Funktion nicht von Bedeutung. Der Übersicht halber sollte er aber in NĂ€he der Kamera sein. So erkennt man auf den ersten Blick, dass diese beiden Objekte zusammengehören. Mache also einen Rechtsklick in der nĂ€he des Emitters und wĂ€hle ?Add CameraTextureClient Here?.




In den Eigenschaften des CameraTextureClients (Rechtsklick auf das Adlerkopfsymbol -> ?Properties?) mĂŒssen in der Kategorie ?CameraTextureClient? noch folgende Einstellungen getroffen werden:


[table 1 4 1]Option|Wert|Allgemein
Camera|TagKamera1|Der Name, der bei dem Emitter unter "Events"-->"Tag" angegeben wurde.

DestTexture|ScriptedTexture'myLevel.KameraTex1'|Di e dazugehörige ScriptedTexture. Die Textur im Texture-Browser anwÀhlen und dann hier auf "Benutzen" klicken.

FOV|60|Der Blickwinkel. Ein kleinerer Wert hat einen Ă€hnlichen Effekt wie Zoom, ein GrĂ¶ĂŸerer Wert hat einen Effekt Ă€hnlich eines Fischaugenobjektives.

RefreshRate|60|Die Bildwiederholfrequenz. In der Standarteinstellung werden also 60 Bilder/sec. erstellt.[/table]



1.4. Verwendung der Textur



Jetzt ist die Kamera fertig. Die Textur kann wie eine ganz normale Textur behandelt und auf jede beliebige FlÀche gelegt werden. Im Spiel wird dann immer das Bild der Kamera angezeigt.



Die Textur kann auch beliebig oft und in verschiedenen GrĂ¶ĂŸen verwendet werden:



1.4.1 Die Auflösung verÀndern



Will man allerdings eine grĂ¶ĂŸere FlĂ€che mit dem Kamerabild belegen, empfiehlt es sich, die Auflösung des Bildes zu erhöhen. Dazu wĂ€hlt man im Texture-Browser die Kameratextur aus. Nach einem Rechtsklick und einem Klick auf ?Properties? öffnet sich das Eigenschaften-Fenster. VerĂ€ndere nun diese Einstellungen:



Damit ist die Auflösung von 256*256 auf 1024*1024 heraufgesetzt worden. Den Unterschied kann man sofort sehen: (oben mit der Auflösung 256*256, unten mit der Auflösung 1024*1024)



Aus PerformancegrĂŒnden sollte die höhere Auflösung aber nur verwendet werden, wenn es auch nötig ist.


1.4.2 Benutzung der Texturen in einem Monitor


Die Bilder lassen sich aber nicht nur auf normalen FlĂ€chen legen, man kann sie auch auf StaticMesh-Monitoren anzeigen. So sind z.B. in dem StaticMesh-Package "XGame_StaticMeshes" die Monitore, auf denen sonst das Teamsymbol angezeigt wird. Um jetzt das Kamerabild auf den Monitor zu bekommen, muss der Monitor erst mal gesetzt werden. Öffne dazu den StaticMesh-Browser und wĂ€hle "XGame_StaticMeshes" aus. Such dir dann einen der drei Monitore (A, B oder C) aus.



Setze diesen nun an der passenden Stelle in die Map (Rechtsklick -> Add StaticMesh). Falls er nicht richtig sitzt, kannst du ihn in den 2D-Ansichten noch verschieben. Wenn der Bildschirm die falsche GrĂ¶ĂŸe hat, kannst du ihn noch ĂŒber "DrawScale 3D" skalieren.



Am besten skaliert man gleichmĂ€ĂŸig, also so, dass in allen drei Feldern der gleiche Wert steht.

Damit ist der Monitor platziert. Fehlt nur noch die Kameratextur. Öffne dazu die Eigenschaften des Monitors (Rechtsklick auf den StaticMesh -> "Properties"). Dort gehst du auf "Display" und dann auf "Skins" Nach einem Klick auf "HinzufĂŒgen". Es erscheint der Skin "[0]". Da die Kameratextur noch markiert sein mĂŒsste, reicht ein Klick auf "Benutzen" um die Textur als Skin zu wĂ€hlen.




Wenn man jetzt in der 3D-Ansicht auf den Monitor blickt, kann man die VerĂ€nderung sehen (evtl. muss man sich in der Ansicht ein kleines StĂŒck bewegen, um die Änderungen sichtbar zu machen.). Es wurde hier eindeutig die falsche Textur verĂ€ndert.




Also muss der nĂ€chste Skin ausprobiert werden. Dazu geht man bei dem Skin ?[0]? einfach auf ?EinfĂŒgen?. Es wird ein neuer Skin ?[0]? erstellt, der alte Skin ?[0]? wird zu Skin ?[1]?. Jetzt ist anscheinend der richtige Skin geĂ€ndert worden.




Allerdings haben diese Monitore noch ein extra: Das Bildrauschen. Will man nun noch Bildrauschen hinzufĂŒgen, muss man einfach noch mal auf ?EinfĂŒgen? gehen. Damit sitzt die Kameratextur an Position ?[2]?.




Ohne Bildrauschen, Textur auf Skin ?[1]?.




Mit Bildrauschen, Textur auf Skin ?[2]?.







Der Player kann sich in der Kamera nicht selber sehen, er ist in der Kamera unsichtbar. Deshalb sollte eine Kamera nie eine Stelle erfassen, von der aus man die dazugehörige Anzeige sehen kann. Andere Player können aber gesehen werden.




Eine Kamera kann nicht ihr eigenes Bild aufnehmen. Der Monitor bleibt in dem Bild dann einfach weiß. Außerdem kann auch der eigentliche Monitor Darstellungsprobleme bekommen.





2.1 Bewegte Kamera



Bis jetzt bewegen sich nur Objekte. Echte Überwachungskameras schwenken aber auch schon mal hin und her. Aber das ist relativ einfach zu realisieren.




Wenn eine Überwachungskamera vorhanden ist, braucht man nur noch einen Mover um diese auch zu bewegen. Wenn man einen StaticMesh zur Hand hat, mit dem man die Kamera machen will, kann man diesen als Mover benutzen. Wenn nicht, kann man einen beliebigen anderen StaticMesh als Mover nehmen. Allerdings sollte der StaticMesh nicht zu viele Triangels haben. Man wĂ€hlt also im StaticMesh-Browser einen StaticMesh aus.




Dann geht man auf das Symbol ?Add Mover Brush?. An der Stelle des roten BuilderBrushes ist nun auch der lilafarbene Moverbrush.

?Add Mover Brush?




Diesen schiebt man in den 2D- Ansichten so, dass dessen Pivot (das kleine rote Kreuzchen) in allen 2D-Ansichten auf dem Zentrum des Emitters liegt (auf dem Gelben Punkt). Falls der Mover im Spiel aber sichtbar sein soll, muss der Emitter ein StĂŒck unter (oder ĂŒber) dem Mover platziert werden, damit man diesen spĂ€ter auf dem Bild nicht sieht.

Der Pivot



Der nÀchste Abschnitt wird nur benötigt, wenn man einen unsichtbaren Mover haben will.


Um den Mover handlicher zu bekommen, kann man ihn mit DrawScale 3D verkleinern.



Um den Mover nun auch noch unsichtbar zu machen, muss man lediglich eine Einstellung in den Eigenschaften des Movers verĂ€ndern. Öffne also die Eigenschaften des Movers und Ă€ndere folgendes:

[table 1 4 1]Advanced |bHidden |Wahr[/table]



Der Mover ist jetzt zwar nicht mehr sichtbar, aber er ist physikalisch immer noch vorhanden. Man kann also noch dagegen rennen und Geschosse prallen von ihm ab. Um das zu Ă€ndern, mĂŒssen alle Werte in unter ?Collision? auf ?Falsch? gestellt werden. Damit ist die Collision ausgeschaltet, der Mover ist im Spiel nicht mehr Wahrnehmbar.




FĂŒr eine bewegte Überwachungskamera ist eine konstante Bewegung ohne Pausen am besten. Also stellt man auch den Mover so ein, dass er sich immer bewegt. Außerdem muss der Mover noch einen eindeutigen Namen bekommen, um den Emitter spĂ€ter anzuhĂ€ngen. Dazu sind diese Einstellungen nötig:


[table 1 4 1]Kategorie|Option|Wert|Allgemein
Events|Tag|KameraBewegung|Ein eindeutiger Name
Object|InitialState|ConstantLoop|Wenn der Kameraschwenk getriggert werden soll, muss hier ?TriggerOpenTimed? stehen.[/table]

Jetzt muss nur noch die eigentliche Bewegung erstellt werden. Mache dazu einen Rechtsklick auf den Mover und wÀhle ?Mover? -> ?Key 1? aus. Nun drehst du in den 2D-Ansichten den Mover so, wie sich auch die Kamera drehen soll. Wenn du z.B. in der Top-Ansicht den Mover um 90° drehst, wird sich im Spiel auch die Kamera um 90° drehen.

Wenn du den Mover in die entsprechende Position gedreht hast, mache wieder einen Rechtsklick auf den Mover und wĂ€hle ?Mover? -> ?Key 0 (Base)?. Der Mover springt zurĂŒck in seine Ausgangsposition. Im Spiel wird sich der Mover immer zwischen diesen beiden Positionen hin und her drehen. Im Normalfall wird er dieses allerdings zu schnell machen. In den Eigenschaften des Movers kann man die Geschwindigkeit aber einstellen:



[table 1 4 1]Kategorie|Option|Wert|Allgemein
Mover|MoveTime|10|Zeit in Sekunden, die die Kamera braucht um sich einmal vor und wieder zurĂŒck zu bewegen.[/table]

Nun muss nur noch dem Emitter gesagt werden, dass er dem Mover folgen soll. DafĂŒr muss in den Emittereigenschaften nur eine Einstellung verĂ€ndert werden:


[table 1 4 1]Kategorie|Option|Wert|Allgemein
Movement|AttachTag|KameraBewegung|Der Name, der bei dem Mover unter ?Events? -> ?Tag? eingetragen wurde.[/table]

Damit ist die bewegte Kamera fertig.


2.2 Automatisch durchschaltender

Bildschirm

Wenn man sich mal im Kaufhaus, etc. den Monitor einer Überwachungskamera sieht, wird man bemerkt haben, dass einige Monitore automatisch durch die verschiedenen Überwachungskameras schalten. Auch dieser Effekt lĂ€sst sich in UT2003 umsetzten.




Voraussetzungen:

In einer Map sind mehrere Überwachungskameras vorhanden, z.B. 5. Dann hat man auch 5 verschiedene ScriptedTextures, Emitter und CameraTerxtureClients.

Hier ein Beispiel fĂŒr die verĂ€nderten Benennungen:




[table 1 4 1]ScriptedTextures|Emitter
FĂŒr KameraNr.|Name der Textur||FĂŒr Kamera Nr.|Wert unter ?Events? -> ?Tag?
1|KameraTex1||1|Kamera1
2|KameraTex2||2|Kamera2
3|KameraTex3||3|Kamera3
4|KameraTex4||4|Kamera4
5|KameraTex5||5|Kamera5[/table]



[table 1 4 1]CameraTextureClients
FĂŒr Kamera Nr.|Wert unter ?CameraTextureClient? ->
|KameraTag|DestTexture
1|Kamera1|KameraTex1
2|Kamera2|KameraTex2
3|Kamera3|KameraTex3
4|Kamera4|KameraTex4
5|Kamera5|KameraTex5[/table]


Die ScriptedTextures mĂŒssen fĂŒr das durchschalten alle die gleiche Auflösung haben, also z.B. alle 256*256.





Als erstes muss wieder eine neue Textur erstellt werden. Gehe dazu noch mal im Texture-Browser auf ?File? und dann auf ?New?.

Mach dort folgende Einstellungen:


[table 1 4 1]Info|Package|myLevel
|Group|Leer
|Name|Wechsel
|Class|RawMaterial
Properties|MaterialClass|MaterialSequence[/table]



Nach dem Klick auf ?New? öffnet sich ein neues Fenster. In diesem muss man unten in den ?Properties? bei ?SequenceItems? fĂŒr jedes Kamerabild das erscheinen soll einmal auf ?HinzufĂŒgen? gehen. Da 5 Kamerabilder durchgeschaltet werden sollen, klickst du 5mal auf ?HinzufĂŒgen?. WĂ€hle nun im Texture-Browser die erste Kameratextur (?KameraTex1?) aus. Lass das Eigenschaften-Fenster aber geöffnet. Klicke dann bei dem Punkt [0] auf ?Material? und dann auf &bdquo Benutzen?.


Achtung!

Wurde vor dem Klick auf ?Benutzen? keine andere Textur ausgewĂ€hlt, kann der Editor abstĂŒrzen.


Unter ?Time? kann man dann einstellen, wie viele Sekunden dieses Bild sichtbar sein soll bevor zum nĂ€chsten Bild gewechselt wird. Die Standarteinstellung ist ?0?, was heißt, dass dieses Bild nicht angezeigt wird. FĂŒr ein schnelles durchschalten sind 3 Sekunden, fĂŒr ein langsames durchschalten 10 Sekunden ganz gut geeignet. Am besten ist es, wenn alle Bilder gleich lang zu sehen sin.

Wiederhole den letzten Absatz ab der Texturauswahl auch fĂŒr die anderen Punkte mit den anderen Bildern.


Diese MaterialSequence kann genauso wie die ScriptedTextures verwendet werden. Man kann sie also auf jede beliebige FlÀche legen oder sie in Monitoren verwenden.


Diese Beispiele sind alle in der Beispielmap umgesetzt worden, die weiter unter heruntergeladenwerden kann.






So, das wars!

hier noch eine testmap, mit .u Datei damit es auch im net spielbar ist.
NetCameraTestMap.zip