Wozu benötigen wir eine Kamerafahrt?
Im Normalfalle, um dem Protagonisten Dinge zu zeigen wie bspw. Items, Npcs, Gefahrenherde, Änderungen von Spielsituationen, zum Bsp. das öffnen eines Tores, ausgelöst durch entfernten Schalter, das der Spieler von seiner momentanen Position nicht einsehen kann.
Und genau da setzen wir an. Du stellst dir vor, du bist in einem Tempel auf der 2ten Ebene, wo du in einem Raum einen Schalter entdeckt hast, aber leider hast du keine Info, was dieser Schalter bewegt oder auslöst.
Nach dem betätigen des Schalters, soll die Kamerafahrt starten und zeigt dir, wie sich auf der 1.Ebene ein Tor öffnet, das dir zuvor den Weg versperrt und ein Weiterkommen unmöglich gemacht hat. - Player Info -
Das ist die einfachste Form einer Kamerafahrt. Wir benötigen dazu nur:
Ja… wozu benötigen wir denn die Hauptcamera, wenn selbige doch gar keine Camera ist?
- Die Hauptcamera erscheint, wenn wir uns entschlossen haben eine Cam-Fahrt im Spacer zu setzen und das entsprechende Symbol betätigt und die Camerafahrt geinsertet haben.
- Die Hauptcamera ist bei jeder angelegten Cam-Fahrt das Parent, dem die Childs (Camerasplines und Targetsplines untergeordnet sind)
Diese Hauptkamera könnte sich auch 50m links neben dem zu filmenden Objekt befinden und in die entgegengesetzte Richtung zeigen, die Kamerafahrt würde trotzdem funktionieren.
- Verschieben wir die Hauptcamera im Spacer, so verschieben wir auch alle zugehörigen Camerasplines und Targetsplines
- Bitte die Hauptcamera nicht verdrehen, selbst wenn die symbolisierte Linse in eine ganz andere Richtung zeigt, als auf das zu filmende Objekt, sie ist nur ein Symbol und das verdrehen kann zu Irritationen bei der Wiedergabe des Filmes führen.
- Die Camerasplines (die aussehen wie kleine Cams) legen die Stecke fest, entlang der, wärend der Cam-Fahrt gefilmt wird. Das ist in diesem Falle die Strecke zwischen Cameraspline 1 und Cameraspline 2. Die eigentliche Camera, die auf der Fahrt zwischen den Camsplines das Objekt filmt, ist imaginär, wird weder eingesetzt, noch ist sie im Spacer zu sehen.
- Egal wie viele Camerasplines ihr gesetzt habt, man kann auch Fahrten mit vielen Camerasplines machen (dazu später mehr) ….alle filmen den selben Punkt, wenn man denen gemeinsam nur einen einzigen Targetspline zuweist.
2.1.0 - Wir überprüfen ob im Objekt_Pages_Fenster der „cam spline“ Button aktiviert ist. Das sollte der eigentlich standardmässig sein, wenn nicht, dann bitte mit der Maus (Linksklick) aktivieren. Er erscheint, wenn aktiviert, „weiss“ unterlegt.
2.2.0 - Um den ersten Camspline zu setzen, klicken wir mit der Maus (Rechtsklick) auf eine freie Stelle im Spacerfenster und schon öffnet sich das „VOB-Fenster“ Darauf achten, dass man dabei kein VobMob… anklickt, denn sonst bringt ihr einen CamSpline als Child von einem Busch oder Truhe… oder sonst was ins Game.
2.2.1 - Wir klicken auf die Zeile Insert (camera/keyframe) mit der linken Maustaste. Jetzt sollte der erste Camspline in eurer Welt erscheinen.
2.3.0 - Das Objekt_List_Fenster hat jetzt wieder seine Bezeichnung in der Titelleiste geändert. Dort ist jetzt eingetragen zCVobLevelCompo (zCMesh) → „LEVEL-VOB“ (zCVobLevelCompo) und unser CamSpline ist dort im Ordner zCCSCamera als Child der Hauptcamera, die ebenfalls dort eingetragen ist „CAMERASTART“(zCCSCamera) untergeordnet. Die Hauptcamera ist das Parent.
Die vormals grünen Punkte im Fenster, sind jetzt rot gefärbt, da man so ein Wiki nicht an einem Tage machen kann und ich die Spacer-Zen speichern musste. Siehe auch 1.7.2
2.4.0 - Leider lässt sich optisch der CamSpline von einem TargetSpline nicht unterscheiden und unsinnigerweise haben beide Elemente die selbe Bezeichnung. Alle Splines heissen „zCCCamTrj_Keyframe“. Man kann auch den zweiten Camspline nicht vom ersten unterscheiden, was ja enorm wichtig ist, da ja die Filmcamera zwischen den beiden ihre Bewegung macht, und zwar von CamSpline 1 nach CamSpline 2.
Wenn ihr also eine Fahrt wollt von links nach rechts, muss CamSpline 1 links sitzen und CamSpline 2 rechts. Wenn ihr aber nicht wisst, welcher war der erste oder der zweite, dann habt ihr eben eine Fahrt von rechts nach links anstatt von links nach rechts, wenn das verwechselt wird. Singemäss wird dann auch eine geplante Fahrt von vorne nach hinten, zu einer Fahrt von hinten nach vorne.
Aus diesem Grunde geben wir dem ersten CamSpline den Vobnamen CM_SPLINE_01 und jedem weiteren denselben Namen mit aufsteigender Endzahl. CM_SPLINE_01, CM_SPLINE_02 und bei Fahrten mit noch mehr CamSplines eben sinngemaäss weiterführen…_03, …_04….
Ich nenne ihn CM_SPLINE_01. Die Abkürzungen bedeutet CAMERA-SPLINE-Nr.1 So kann ich in den Fenstern sehen, welcher Spline, welche Nummer hat und muss nicht in der Welt abzählen, was besonders mühsam ist, wenn man zehn oder mehr Splines hat und kann im Fenster den ausgesuchten Spline direkt anwählen.
Wir wählen unseren Spline im Objekt_List_Fenster an…. und der Camspline ist farblich unterlegt.
Im 2.ten grossen Spacerfenster, dem Objectfenster ist unser CamSpline jetzt aufgerufen….
wir benennen ganz oben den „vobName“ um in CM_SPLINE_01 und betätigen den Button „apply“ und wieder ändert sich das Object_List_Fenster.
Unser Spline Kontrollname ist jetzt dort eingetragen.
Auf die gleiche Art und Weise, incl. Namensumbenennung setzen wir unseren 2.ten CamSpline
2.4.1 - Sowie wir den 2.ten Camspline gesetzt haben bildet sich zwischen den beiden Camsplines eine „weisse“ Linie. Das ist der Weg, der von der Spacerkamera in der Reihenfolge von 1 hochgezählt, in unserem Fall nach 2 zurückgelegt wird.
Da der Spacer eine „Diva“ ist, kommt es ab und zu vor, dass die „weisse“ Linie nicht erscheint. Ich habe getestet dass das unabhängig von der Umbenennung der vobNames ist. Wenn das passiert, dann hilft nur, die Camsplines wieder zu löschen und neue zu setzen. Unter Umständen muss man das 2-3 mal wiederholen. Einen Grund dafür habe ich bis jetzt noch nicht gefunden. Wenn ihr eine Fahrt mit vielen Cam-Splines macht, dann gibt es keine Probleme mehr, wenn die weisse Lienie zwischen der ersten beiden Camsplines erzeugt wurde. Alle nachfolgenden werden in die Linie mit eingebunden. Wenn gar nichts geht, dann die Hauptcamera löschen und neu setzen!
2.4.2 - Die Camerasplines bitte ebenfalls nicht verdrehen. Das führt zu Chaos beim filmen, eventuell so, als würde die Camera von einem Betrunkenen gehalten, der um seine eigene Achse torkelt.
3.0.0 - Wir setzen einen Target-Spline. Für unser Modell benötigen wir nur einen einzigen Target-Spline, da wir ja lediglich einen einzigen Fixpunkt benötigen auf den die beiden Cameras gerichtet sind. Hätten wir mehr, als einen Target-Spline, solche Camerafahrten gibt es auch, so würden sich die Target-Splines mit einer „grünen Linie verbinden. Dazu benötigen wir als erstes, das Objekt_Pages_Fenster und aktivieren den Button „target spline“ indem wir mit der Maus, (linke Taste) draufklicken.)
Ansonsten ist es der gleiche Vorgang wie unter 2.2.0 (setzen eines Cam-Splines) beschriben, nur dass wir jetzt einen Target-Spline erhalten, der unglücklicherweise auch noch genau so benannt ist, wie normalerweise ein Cam-Spline. Aus diesem Grunde benenne ich den Target-Spline jetzt sofort um und weise ihm den „vobname“ -TG_SPLINE_01“ zu. Das sieht im Objektfenster dann so aus…
Der umbenannte Target-Spline….
….und der dann automatisch übernommene Eintrag im Objekt_List-Fenster
3.1.0 - Die Targetsplines bitte ebenfalls nicht verdrehen.
4.0.0 Zum positionieren von Splines benutzen wir nur die Tasten auf/ab[a/y], rechts/links[Pfeiltasten], und vorwärts/rückwärts[Pfeiltasten] - nicht die Tasten zum drehen „einfg, pos1, bild-auf, bild-ab, ende, entf.“ . egal wo die Objektive von Cameras oder Splines hinzeigen.
4.1.0 - Wir sollten zuerst überlegen, was für unsere Spielsituation wohl die beste Art und Weise der Camerafahrt ist. Meines Erachtens kommen für unsere angestrebte Camerafahrt….
…. folgende Modelle in Betracht.
4.1.0.1 - Diese Querfahrten filmen nicht gradlinig von rechts nach links, als würde man eine Camera auf Schienen bewegen, sondern im leichten Bogen um das Tor von a nach b
4.1.1 - QUERFAHRT VON RECHTS NACH LINKS
Camsplines nebeneinander positionieren,
an der gegenüberliegenden Wand des Gittertores, CM_SPLINE_01 rechts vom Tor, CM_SPLINE_02 links vom Tor, von der gegenüberliegenden Seite des Tores gesehen
Targetspline
4.1.2 - QUERFAHRT VON LINKS NACH RECHTS
Camsplines nebeneinander positionieren,
an der gegenüberliegenden Wand des Gittertores, CM_SPLINE_02 rechts vom Tor, CM_SPLINE_01 links vom Tor, von der gegenüberliegenden Seite des Tores gesehen
Targetspline
Beispielanordnung der Komponenten für Querfahrt/Leichter Bogen um das Tor (Camerabedingt)
4.2.0 - LÄNGSFAHRT VON VORNE NACH HINTEN (ZOOM)
Camsplines hintereinander positionieren,
an der gegenüberliegenden Wand des Gittertores,
ca 2m vor dem Tor (nicht zu nahe drangehen, sonst filmt die Camera nicht das Tor, sondern den Raum dahinter)
Targetspline positionieren,
Beispielanordnung der Komponenten für Längsfahrt/Zoomfahrt
5.0.0 - Jetzt sind wir so weit, dass wir unsere Camera im Spacer Testen können. Unsere Beispielfahrt besteht ja aus 3 Hauptkomponenten:
Wir klicken auf das Movergatter mit der linken Maustaste worauf die Boundingbox des Movers sichtbar wird und im Objekt_Pages_Fenster als selected Vob der Mover angezeigt wird, den ich GATTER benannt habe. Der Vobname des Movers muss in Grossbuchstaben geschrieben sein. Wenn ihr mit der linken Maustaste auf Trigger klickt, wird der Eintrag farblich unterlegt. Wenn ihr jetzt im Objekt_Pages_Fenster auf „Send“ klickt (linke Maustaste), dann bewegt sich das Movergatter nach oben. Zählt bitte die Sekunden… 21…. 22… 23… usw. bis der Mover seine obere Stellung, (Durchgang geöffnet), erreicht hat. Wer das ganz genau will, so wie ich, der benutze eine Uhr mit Sekundenzeiger. Der Mover in unserem Camerbeispiel bewegt sich 5 sec. Danach den Mover wieder resetten, einfach im Objectfenster, wo der Mover momentan angezeigt wird den Button „Apply“ drücken und er schnappt in seine Ausgangsstellung (Durchgang geschlossen).
Wir klicken jetzt auf die Hauptcamera. Darauf erscheint im Objekt_Pages_Fenster wieder die Camera. Da unser Mover 5 sec läuft, geben wir noch 1 sec dazu. Das ändern wir im Objekt_Pages_Fenster, rechts unten, neben dem Button „Stop“, im Fensterchen, unterhalb von „Duration in seconds“ und tragen dort eine 6 ein. Alsdann klicken wir mit der linken Maustaste auf „PLAY“. Jetzt sollte die Camerafahrt starten und das Gatter, das sich noch nicht bewegt filmen. Wenn ihr mehr Sekunden gebt, wird die Camerafahrt langsamer, wenn ihr weniger SeKunden gebt wird sie schneller, da ja die Camera in der Zeit „X“ den Weg „Y“ zurücklegen muss. Wenn ihr den Abstand zwischen den Cam-Splines verkürzt, wird die Fahrt ebenfalls langsamer, da die zur verfügung stehende Zeit gleich geblieben ist, aber der Weg der Camera kürzer geworden. Wenn ihr die Strecke zwischen den Cam-Splines verlängert, bei gleichbleibender Zeit, so wird die Camerafahrt schneller, da ja jetzt die grössere Strecke in der selben, der eingestellten Zeit zurückgelegt werden muss. Aus diesem Zusammenspiel aus eingestellter Zeit und der Wegstrecke der Camera, müsst ihr die für eure Situation richtige Mischung ermitteln.
Wenn ihr einmal eine Probefahrt gemacht habt, ist danach der Spacer blockiert. Das könnt ihr wieder entsperren, indem ihr im Objektpagesfenster unten rechts auf „STOP“ klickt, oder ihr könnt gleich noch mal eine Fahrt machen und nochmals auf „PLAY“ klicken.
Die „STOP“-TASTE
Jetzt wäre es an der Zeit unsere Camera umzubenennen, von „CAMERASTART“ nach „WIKI_CAM_01“. Ihr könnt eure Camera nennen wie ihr wollt, aber es können nicht alle Cameras den selben Namen tragen, da sie sonst beim Aufruf alle miteinander aktiviert werden. Nehmt einen aussagekräftigen Namen, damit ihr später nicht in den Spacerfenstern herumsuchen müsst, bis ihr die von euch zur Bearbeitung ausgesuchte gefunden habt. CAMERA_01…. CAMERA_02… wenn ihr mehrere Fahrten habt hilft da nicht viel, obwohl das funktionieren würde. Besser wäre ein Name der Bezug zur Situation hat. Zum Beispiel CAMERA_WAFFENKAMMER.
Dazu überschreiben wir lediglich den vobName der Camera im Objektfenster des Spacers und klicken auf „Apply“ und auch das Objekt_List_Fenster übernimmt den neuen Namen der Kamera.
Als nächstes machen wir einen Doppelklick auf den neuen Namen der Camera im Objekt_List_Fenster und schon übernimmt auch das Objekt_Page_Fenster den neuen Namen der Camera. Anstatt CAMERASTART steht dort jetzt WIKI_CAM_01.
Den Schalter müssen wir lediglich im Spacer setzen. Entweder als MobInter oder als MobSwitch. (beides möglich) Wir geben auch dem Schalter einen aussagekräftigen Namen. Ich habe SW_WIKI_01 gewählt. SW = Switch!
Wenn man die Camera zum Beispiel CAMERA_WAFFENKAMMER benannt hat, dann sollte man den Schalter SWITCH_WAFFENKAMMER nennen oder SW_WAFFENKAMMER und schon hat man die optische Zugehörigkeit.
Wenn ihr den Schalter gesetzt und benannt habt, wiederum auf „Apply“ klicken und schon ist der neue Name sichtbar im Objektfenster und im Objekt_List_Fenster, das auch jetzt wiederum seinen Titelleiste geändert hat nach oCMobInter…. Voreinstellung beim Schalter „rewind:TRUE“ Sonst löst der nur bei jeder 2ten Betätigung aus.
6.0.0 - Die Camera ist standardmässig so eingestellt, dass sie nach einer Camerafahrt das Game komplett blockiert und man nicht mehr weiterspielen kann. Warum das so ist, das sollte man die Programmierer fragen, deren Hobby es zu sein scheint, egal in welchem Programm, meistens das als Standard zu setzen, was man nicht, oder äusserst selten benötigt.
Wir benötigen die Einstellung, dass sich der Protagonist während der Camerafahrt nicht bewegen kann, und wenn die Camerafahrt beendet ist, die Camera zum Hero zurückkehrt und ihm seine Bewegungsfreiheit zurück gegeben wird. Ich sehe keinen Sinn darin, dass der Hero, den man ja in unserem Falle, während der Fahrt nicht sehen kann, blind gesteuert umherläuft, eventuell in eine Spalte fällt, oder über ein Skelett stolpert .
6.1.0 - Wir klicken im Spacer auf unsere Camera welche sofort im Objektfenster erscheint.
7.0.0 - Eine Camerafahrt wird, wenn sie per Script gestartet wird, grundsätzlich mit der Zeile
Wld_SendTrigger("NAME_MEINER_CAMERA_IN GROSSBUCHSTABEN");
gestartet.
7.0.1 - Für unsere Beispielfahrt, müsst ihr selbstverständlich den Mover ebenfalls starten
Wld_SendTrigger("NAME_MEINER_CAMERA_IN GROSSBUCHSTABEN"); Wld_SendTrigger("NAME_MEINES MOVERS_IN GROSSBUCHSTABEN");
7.0.2 - Wenn ihr das wie hier im Beispiel mit einem Schalter startet (Mobsi generell) müsst ihr im Scriptfunc Eintrag des Schalters/Mobsis in GROSSBUCHSTABEN (Beispiel) WIKI_CAM_01 (ohne den Zusatz _S1) eintragen, wohingegen im Script hinter den Aufruf noch ein _S1 gestellt wird
func foid wiki_cam_01_S1() // Beispiel_Name mit dem Zusatz _S1 { Wld_SendTrigger("NAME_MEINER_CAMERA_IN GROSSBUCHSTABEN"); Wld_SendTrigger("NAME_MEINES MOVERS_IN GROSSBUCHSTABEN"); };
Im Aufruffalle (NICHT MOBSI), also alle anderen Möglichkeiten von Aufrufen, wie TriggerScript, Dialog, was immer ihr wollt, wird die Aufrufzeile im Script ohne den Zusatz _S1 geschrieben.
7.1.0 - Wer nicht scripten will, der kann im Spacer einen Triggerlist setzen. Das ist sozusagen eine Weiche,1. Eingang, das wäre der Aufruf Schalter → Triggerlist, die in der Lage ist, den Eingangsimpuls in bis zu 6 Ausgangsimpulse zu splitten.
7.1.1 - Besonderheiten: Leider geht die Camerafahrt etwas anders mit dem Schaltermobsi um, als wir das im Normalfalle gewohnt sind.
Bsp.
func void open_camgatter01_S1() //Scriptfunc des Schalters { var int open_gatter01; //variable setzen if (open_gatter01 == 0) // variable abfragen { Wld_SendTrigger("NAME_MEINER_CAMERA_IN GROSSBUCHSTABEN"); Wld_SendTrigger("NAME_MEINES MOVERS_IN GROSSBUCHSTABEN"); open_gatter01 = 1; // sperrt die Betätigung nach dem ersten Auslösen } else { Print("Du hast die Waffenkammer bereits geöffnet"); }; };
+++ ENDE CAMERA_ABC_1. HIER WIRD EIN LINK STEHEN, WENN CAMERA_ABC_2 (FORTGESCHRITTENE) FERTIGGESTELLT IST +++
20160206dlz