Benutzer-Werkzeuge

Webseiten-Werkzeuge


Dies ist eine alte Version des Dokuments!


Objekte (Vobs)

Was sind VOBs?

Ein Vob ist ein „virtuelles Objekt“. Es hat eine Position und Orientierung im Raum und kann durch ein explizit wählbares „Visual“ visualisiert werden. Die Welt wird mit Vobs bevölkert. Jedes Vob gehört einer Klasse an, die die Eigenschaften und Fähigkeiten dieses Objektes festlegt (z.B. „oCNPC“ oder „zCTrigger“). Eine genauere Auflistung bietet das Spacer-Dokument zu den Vob-Klassen.

Beispiele einiger Vobs:
*einzelne Bäume und Büsche
*Sound- und Lichteffekte
*Partikeleffekte (z.B. Feuer)
*NPCs und Monster
*Items
*Nebel- und Musikzonen
*Betten, Drehräder, Leitern
*Ereignisfelder und Ereignisfilter
Die Hauptarbeit im Spacer beschäftigt sich mit dem Einfügen, Löschen und Modizieren von Vobs in der Welt. Das Modifizieren umfasst das Positionieren in der Welt sowie die Änderung der Vob-Eigenschaften, die je nach VobKlasse unterschiedlich sind.

Die Vob-Hierarchie in der Welt

Die Objekte in der Welt werden in einer Hierarchie gespeichert. Die meisten Vobs werden wohl als einzelnes Objekt in der Welt „liegen“. Doch einige Vobs sollte man als „Kind“ anderer Vobs einfügen.

Ein gutes Beispiel hierfür ist eine Feuerstelle: Das Hauptvob stellt ein mit Steinen umrahmtes Gluthäufchen dar. An dieses Vob hängen wir nun einen Partikeleffekt (Feuer) als KindVob (ChildVob). Ein Feuer raucht in der Regel und strahlt Licht aus. Daher hängen wir zwei weitere Vobs als Kinder an das FeuerVob: Einen Rauch-Partikeleffekt und ein Licht-Vob. Insgesamt sieht die Hierarchie dann wie folgt aus (die Visualnamen sind erfunden):
*zCVob: FeuerstellenVob (Visual: „feuerstelle.3ds“)
zCVob: FeuerVob (Visual: „feuer.pfx“)
*zCVobLight: LichtVob (kein Visual)
*zCVob: RauchVob (Visual: „rauch.pfx“)
Der Vorteil einer solchen Hierarchie ist, dass die KindVobs automatisch bewegt werden, wenn man das ElternVob bewegt. Verschiebe ich also das FeuerstellenVob an eine andere Stelle, so brauche ich mich nicht um die Positionierung von Feuer, Rauch und Licht kümmern. Auf die gleiche Weise sind die Fackeln in der Welt modelliert, so dass bei der Bewegung des Fackelschafts automatisch die als KindVob angehängten Feuer- und LichtVobs mitbewegt werden.
== VOBs im Spacer ==
==== Der Objekt-Dialog ====
rightAls zentraler Dialog für (fast) alle Operationen mit Vobs dient der Objekt-Dialog. Er besitzt drei Seiten:
#
CREATE: Der Objektbaum zur Auswahl der gewünschten Vobklasse, um dann ein Objekt dieser Klasse in die Welt einzufügen.
#
MODIFY: Die Eigenschaften eines selektierten Objektes in der Welt können auf der MODIFY-Seite geändert werden.
#
: Die dritte Seite findet Verwendung, wenn die BoundingBox spezieller Vobs (Trigger, Sound) verändert werden soll. ClearAlign right
==== Die Objekt-Liste ====
rightIn der Objekt-Liste werden alle Vobs der geladenen Welt aufgelistet. Dabei bleibt die Hierarchie erhalten.

Jeder Levelbaustein (zCVobLevelCompo) wird in der Liste aufgeführt. Jeder Vob eines solchen Levelbausteins ist in speziellen Ordnern (mit dem Namen der jeweiligen Vob-Klasse) einsortiert. Besitzt der Vob weitere KindVobs, so werden diese entsprechend angezeigt (ggf. auf das Pluszeichen klicken).

Mit einem
Doppelklick auf ein Vob in der Objekt-Liste springt man im Hauptfenster zu dem gewählten Vob (diese Funktion funktioniert erst ab Spacer-Version 1.5 korrekt).

Neu eingefügte Vobs haben anfangs ein grünes Icon (Kreis) vorangestellt, alle anderen haben ein rotes Icon.ClearAlign right
==== Spezielle Objekt-Dialoge ====
Bild toolbar_objects.jpg
Für einige VobKlassen gibt es spezielle Dialoge, die man über die Objekt-Toolbar aktivieren kann. Dies sind vor allem die vier Buttons, die mit einem roten Pfeil in der rechten oberen Ecke markiert sind:
*Bild icon_sound.gifSoundobjekte (zCVobSound)
*Bild icon_light.gifLichtobjekte (zCVobLight)
*Bild icon_special.gifSpezielle Vobs: Wegpunkte, FreePoints, Partikeleffekte und Decals
*Bild icon_cam.gifKamerafahrten
Die weiteren Dialoge bieten folgende Möglichkeit:
*Bild icon_zones.gifZonen (eher unwichtig)
*Bild icon_events.gifEreignis-Trigger
*Bild icon_replace.gifSuchen & Ersetzen
== Sichtbare und unsichtbare Vobs ==
Eine wichtige Eigenschaft von Vobs ist sein „Visual“. Ein Visual regelt die Darstellung des Vobs. Dabei gibt es verschiedene Arten von Visuals:
*Meshes
*Partikeleffekt
*Textur (Decal)
==== Das Mesh ====
Besitzt ein Vob als Visual ein Mesh (3ds), so wird es als das dreidimensionales Objekt dargestellt, das durch das Mesh beschrieben wird. Ein Mesh besteht aus aneinander gereihten Polygonen, die wiederum durch Vertices (ihre Eckpunkte) definiert sind.

Wichtig!** Bei Meshes gibt es eine Einschränkung: Maximal darf ein „normales“ Mesh 2048 Verteces besitzen. Eine Ausnahme spielt das Visual einer Levelkomponente (zCVobLevelCompo), das keiner solchen Beschränkung unterliegt. Allerdings können Levelkomponenten nur am Ursprung der Welt eingefügt und auch nicht bewegt oder rotiert werden. Deshalb muss das Mesh einer Levelkomponente (z.B. der Turm von Xardas) bereits an den korrekten Koordinaten im 3D-Editor positioniert werden.

Die zSpy-Meldung 'Degenerated Polygon' ist übrigens nicht tragisch, da diese autom. aus den Vob-Meshes entfernt werden, sollte aber vom Ersteller des Meshes beachtet werden: Ein 'Degenerate Polygon' ist ein Polygon/Triangle, das den Flächeninhalt 0 besitzt (beispielsweise durch kolineare Vertices).

Partikeleffekte

Partikeleffekt-Vobs werden über Scripte erzeugt. Die entsprechenden Datei befinden sich im Ordner _work\\data\\scripts\\system\\pfx. Der Name einer PFX-Instanz kann als Visual angegeben werden, wobei ein „.pfx“ angehängt werden muss.

DECALs

DECALs sind zweidimensionale Meshes, zur Darstellung von zweidimensionalen Strukturen. Beispiele hierfür sind Spinnenweben, Vorhänge, Bilder an der Wand und mehr. Die Meshes werden automatisch erzeugt und die als Visual angegebene Textur darauf gemappt.

Unsichtbare Vobs

Es gibt neben all den offensichtlichen Vobs auch eine Reihe unsichtbarer Objekte. Dabei treten diese durch Effekte oder Ereignisse in Erscheinung. Ein LichtObjekt ist nicht direkt sichtbar, sondern macht sich nur durch die Beleuchtung seiner Umgebung bemerkbar. Ähnlich verhält es sich mit Soundobjekten. Musikzonen bestimmen, welche Hintergrundmusik in einem Levelbereich gespielt wird und Triggerfelder reagieren auf Berührung mit NPCs. Ein bekanntes Beispiel sind auch die Wegpunkte, die miteinander verknüpft das Wegenetz erzeugen.

rightAll diese Objekte sind im Spacer sichtbar, wenn man die sogenannten „HelperVobs“ anzeigen läßt. Dies geschieht über die Objekt-Toolbar: Bild icon_helper.gif.

Diese Helpervobs für Lichter, Sounds, Wegpunkte und mehr sind Meshes, die im Ordner _work\\data\\meshes\\_intern zu finden sind und den Namen der entsprechenden Vobklasse tragen (mit vorangestelltem „invisible_“):
*invisible_zCVobSpot.3ds (im Bild: a)
*invisible_zCVobLight.3ds (b)
*invisible_zCVobStartpoint.3ds ©
*invisible_zCWaypoint.3ds (d)
*invisible_zCVobSound.3ds (e)
*…ClearAlign right

Eigene Vobs

Man kann auch im Spacer eigene Vobs einfügen.

Damit dies möglich ist, muss man eine neu erstellte .3ds Datei Texturiert haben (siehe Spacer-Texturieren) und diese Datei dann in den Ordner : Gothic II\\_work\\data\\Meshes\\Items\\(z.b.: Neue Vobs, wobei es auch geht wenn man es einfach nur in den Ordner Items speichert) speichern.

So nun muss man nur noch im Spacer die entsprechende Visual des entsprechenden Vobs in einem zVob eingeben (z.b.: visuale: neues vob.3ds) und schon ist das neue Vob in der Welt.
Am Ende platziert man das Vob noch an der Stelle wo man es haben will und speichert die Welt ab.

Anmerkung:

Wenn man eine neue .3DS Datei hat muss man diese dem Empfänger zukommen lassen, da sie sonst, trotz des Einfügens in der .Zen, nicht bei dem Empfänger angezeigt werden kann.

spacer/vobs.1439928969.txt.gz · Zuletzt geändert: 2016/02/09 00:36 (Externe Bearbeitung)