Morphmeshes
Ein Morphmesh ist ein sich bewegendes bzw. animiertes Mesh in Gothic.
Anders als bei zCMovern bei denen die Gothic Engine ein starres Objekt bewegt oder bei Bone-Animationen bei denen Knochen/Bones und die den Knochen/Bones zugeordneten Polygone bewegt werden wird bei Morphmeshes jedes Polygon einzelnd verschoben. Wegen der Performance sollte man sich auf einfache Animationen mit wenig Poylgonen und wenig Frames beschränken. Außerdem gibts bei Morphmehes keine Kolisionserkennung. Für einige Dinge ist das ideal (Grässer, Fische im Wasser, Windmühlenräder), für andere wie Tore oder NPCs sind Morphanis aber ungeeignet. Das Beispielwindmühlrad kann man zum selber testen downloaden: http://wiki.worldofgothic.de/images/bilder/harri/Muehle.rar
Allgemeines Vorgehn:
In 3dsMax ein Morphmesh erstellen
Entsprechend exportieren
Das Script dazu schreiben
Im Spacer einfügen
Morphmesh erstellen
Ein Morphmesh wird durch eine Kopie von sich selbst gesteuert. Dazu brauch wir ein Mesh was so aussieht wie das was sich in Gothic bewegen soll. Hierbei ist es egal wie die Bewegung aussehen soll. Die Perfektion liegt an dem Geschick dessen der es animiert (Übungssache).
Ein Mesh läst sich auf verschiedene weise animieren.
z.B.: über ein Bones-Verknüpfungen
oder:
mit Space Warps (z.B: Welle)
Da ich zu ersteren die Datei mitliefere schenk ich mir die Erklärung wie man ein Mesh (hier das Windrad) baut.
Windrad (oder was auch immer) bauen - ich nenne es Rad
Dieses Kopieren und als Zm_Rad benennen (Zm_ muß auf jeden Fall voran stehen)
Zm_Rad markieren ausblenden - brauchen wir später
aus dem Menü Bones wählen
mit dem Cursor die Mitte des Rades anklicken
dann Bones in die gewünschte Richtung und Länge ziehen (Rand des Windrades)
mit der rechten Mousetaste abklicken
den „Anhängsel-Bones“ kann man weglöschen
Das auf 4 mal Komplettieren. (Bild siehe oben)
Auf Rad den Modifikator Haut anwenden
(Die Mühle kann man schließlich auch auswählen und verdecken. Ist hier eh bloß zur verbesserten Anschauung gedacht!)
Nun können die einzelnen Bones ausgewählt werden und die Querschnitte so verändert werden (durch Verschieben in einer bestimmten Achse - aus Richtung Zentrum-Bones (hier y) werden diese skaliert), das ALLE Scheitelpunkte des Rades erwischt werden (sind dann rot markiert).
Animation:
Key-Zähler zum Ende (hier 100) schieben
Und um Bones um weitere 180° drehen(natürlich in die gleich Richtung;))
Anim. wieder deaktivieren
Sollte das Rad sich nicht sauber mitdrehen (z.B. verzerren) ist bei der Operation Haut nicht das vollständige Mesh erfasst worden. Das kann man aber auch noch nachträglich ausbessern.
Ok, ist keine schwere Animation, aber den User sind hier keine Grenzen gesetzt ;)
Ausgewählte Bones gleich verdecken
Zm_Rad einblenden und auswählen
Animations-Modifikaroren: Morpher wählen
Am einfachsten mehrere Ziele laden und dann das Rad auswählen - laden
Ziele automatisch neu laden aktivieren
Morph-Facktor auf 100% einstellen
(bei anderen Animationen kann man auch unter 100 bleiben - somit kann man eventuell die Amplitute der Animation ändern. Bei einer 360°-Drehung ist aber unbedingt 100 einzustellen.)
So, nun müsste man alles außer Zm_Rad verdecken können (dürfte nur das Rad sein) und zur besseren Show die Mühle wieder einblenden und Animation abspielen lassen können.
Das Zm_Rad sollte sich nun drehen.
Export
Mesh-Export:
Zm_Rad markieren
Datei/Auswahl exportieren… anklicken
Dateityp: ZenGinASC Exporter (*.ASC) wählen (die richtigen Plugins sollte man aber schon installiert haben)
Dateiname: z.B.: RAD_MESH.ASC → Speichern
Gothic-Path: [Gothic]\_work\DATA\Anims\asc_anims\MOBS\
(es kann auch in einem anderen Unterverzeichnis als in MOBS stehen)
Ani-Export:
Zm_Rad markieren (ist ja noch)
Datei/Auswahl exportieren…
Dateityp: ZenGinASC Exporter (*.ASC) wählen (ist ja noch)
Dateiname: z.B.: RAD_MORPH.ASC → Speichern
Export Morph Animation anklicken und mit OK bestätigen
3dsMax kann man nun eigentlich schließen (Arbeit speichern versteht sich von selbst)
Script
morphMesh ("Rad_MORPH")
{
morphRef ("Rad_Mesh.ASC")
// Ani-Name / Layer Bl.in / hold /Bl.out /Flags / ASC-Name / von bis / fps
// ---------------------------------------------------------------------------------------
// Wind-Anis
morphAni ("S_WINDY" 1 1.0 -1 1.0 . "Rad_Morph.ASC" 0 99 SPD:3)
}
Hier wer ich nicht all zu viel dazu sagen
Bei anderen Scripts einfach die entsprechenden anderen Dateinamen eingeben
0 99 (von bis) ist die Anzahl der Frames die 100 wird weggelassen, da sie ja mit der 0 identisch ist
SPD:3 ist die Geschwindigkeit mit der die ani abgespielt wird - am besten testen bis die gewünschte Geschwindigkeit stimmt.
Abspeichern: z.B.: rad.mms unter: [Gothic]\_work\DATA\Anims\[belibiges Unterverzeichnis]\
Im Spacer einfügen
Ein Nachteil bei zVobAnimate ist, das diese statisch nicht fest sind. Der Player kann also durchlaufen (kann man natürlich auch als Vorteil sehen z.B.: bei einer Wiese).
Ein Anderer, sie können im Spacer nicht durch ihr Visual markieren kann sondern nur in der Vobliste und komischerweise sind sie beim einfügen nicht in der Position wie in max, aber das kann man ja mit den Steuerungstasten ausgleichen - drehen.
Meine Empfehlung ist daher ein zVobAnimate an ein kleines vob z.B.: ein Stein so anzuhängen das dieser nicht stört bzw. später zu sehen ist. Dieser läst sich wenigstens im Spacerfenster markieren und dient dazu das zVobAnimate damit in die richtige Position zu schieben - drehen.
Das zVobAnimate gleich in eine zum Träger-Vob (child) günstige Position schieben z.B.: Anfang der Radnabe = Mitte Stein
Nun kann man den Stein markieren und mit samt dem Windrad so drehen das es die gewünschte Position hat.
Der weitere Vorteil dieser Methode ist, das man nun durch den Stein ein Vobtree Speichern kann und diesen dann je nach belieben und schon in der fast richtigen Position wieder an anderer Stelle in der World einfügen kann (per Insert vobtree).
Viel Spaß beim Modden