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