Nicht eingeloggt
Registrieren

ProcMesh als Alternative zum FluidSurfaceInfo

Jeder redet davon, die hälfte weiß wo es zu finden ist, ein Viertel weiß wozu sie da sind und keiner weiß wie sie gemacht werden.
Da mich das schon interessiert hat, habe ich mich mal damit befasst.
ProcMeshs sind von der Funktionalität her auch viel umfangreicher, hier werd ich aber nur das wesentliche erklären.


I. Was sind überhaupt ProcMeshes!?

Eine berechtigte Frage, da der Name schon mal überhaupt nichts aussagt, außer dass es was mit Mesh zu tun hat, was ja auch stimmt.
Analysieren wir mal den Begriff. Er setzt sich aus Proc und Mesh zusammen. Proc sagt uns erst mal überhaupt nichts, Mesh schon.
Das Mesh kennen wir in Verbindung mit "StaticMesh" mit dem Unterschied, dass hier das Static fehlt. Aber das ist doch schon mal was! Wir können also daraus lesen, dass der Mesh, in Verbindung mit dem ProcMesh-Actor nicht mehr statisch, also fest ist. Proc steht für Procedural, ist aber auch nicht wahnsinnig wichtig das zu wissen, fahren wir also fort.


II. Wozu brauche ich ein ProcMesh?

Dazu erkläre ich kurz, was ein ProcMesh macht.
Jeder StaticMesh hat ja eine gewisse Anzahl an Polygonen, die verbunden miteinander ein Objekt, also einen Mesh ergeben. Der ProcMesh-Actor versetzt jetzt die ganzen Polygonen in Schwingung, er bewegt sie also beliebig. Eingesetzt wird er fast ausschließlich als Wasser und für Flaggen oder Banner.

Im Prinzip ist der ProcMesh eine Erweiterte Form des FluidSurfaceInfo, welches auf die Einsatzweise als Wasser im Grunde beschränkt ist. Allerdings hat das FSI den Vorteil, dass man es schneller machen kann. Ein ProcMesh braucht einen StaticMesh den es bewegt und diesen muss man erst erstellen. Auch ist das ProcMesh etwas (leicht) performance-lastiger als das FluidSurfaceInfo. Außerdem bietet das FluidSurfaceInfo mehr Einstellungsmöglichkeiten, die Flüssigkeitsspezifisch vorteilhafter werden.
Also einfach mal selbst auswägen, wann man was braucht.

Hier sieht man z.B. eine optimale Anwendung:

woolfxxximage393.jpg

In dieser Map ist das so gemacht, dass man in ein Watervolume gelangt. Natürlich nicht auf dem üblichen Weg von oben hineinspringen, sondern von der Seite.
Finde ich eine geniale Idee, allerdings wurde dazu ein FluidSurfaceInfo verwendet, welches dazu etwas unvorteilhaft ist. Das sieht man auch daran, dass es sich in-game nicht bewegt.

Unser erstes Ziel wird daher sein, ein ProcMesh für diese Öffnung zu machen um das F.S.I. zu ersetzen.


III. Der StaticMesh

Da ein ProcMesh einen StaticMesh braucht, werden wir den nun machen.

woolfxxximage394.jpg

Den Builderbrush habe ich jetzt als Sheet angepasst, aber er ist in dieser Form noch ungeeignet als ProcMesh.

Warum? Weil er momentan nur die 4 Ecken als Polygone hat. Und das ProcMesh bewegt Polygone, was hinterher sehr seltsam aussehen wird.
Zum glück bietet der UEd eine fantastische Möglichkeit, und zwar sogenannte Brakes in ein Sheet einzubauen.
Also Rechtsklick auf das Sheet-Tool und die Brakes anpassen. Je mehr Breaks, umso weniger Performance, also mit Bedacht einsetzen.


woolfxxximage395.jpg

Ich habe 16 Breaks genommen. D.h. 16 Breaks Horizontal und 16 vertikal.
Natürlich kann man das beliebig variieren, besser wäre es allerdings, dass die Breaks auf dem Grid bleiben.

Nun adden wir das Sheet irgendwo in die Welt, wo es nichts anderes berührt. Als Textur empfehle ich die AWGlobal->Shader->OceanGlass, jede andere tuts natürlich auch.

Nachdem endlich fertig Rebuildet wurde und wir den daraus resultierenden Brush durch Rechtsklick->Convert->to StaticMesh zu einem StaticMesh konvertiert haben, wurde er freundlicherweise auch optimiert, was uns auch nur entgegenkommt.


woolfxxximage396.jpg


IV. Der ProcMesh

Nun kommen wir zum interessanterem Teil. Wir holen uns einen xProcMesh-Actor aus dem ACB.




Den markieren und in die Welt adden.
Sieht ja mal so etwas unspektakulär aus, allerdings hat er nichts mit einem Emitter zu tun.

In den Einstellungen des ProcMeshs gibt es jetzt erst mal zwei wichtige Einstellungen zu tätigen.

Unter Display->StaticMesh kommt jetzt der StaticMesh rein. Also das Sheet welches wir gerade zum Mesh konvertiert haben. Dazu muss noch die Glastextur unter Display->Skin eingetragen werden. Und nun ist unser Mesh samt Textur ein ProcMesh!

Doch nach einem Rebuild tut sich ein Problem auf, denn ProcMeshs beleuchten sich nicht selbstständig.


woolfxxximage399.jpg

Man sieht, der ProcMesh ist schwarz.
Diesem Problem kann man meines Wissens nach eigentlich nur mit AmbientGlow (unter Display zu finden) entgegenwirken.

woolfxxximage400.jpg

So kann man die Beleuchtung schön anpassen und solange es bei einer simpleren Wassertextur oder solchen bleibt, die wenige Farben hat, werdet ihr keine Probleme damit bekommen.



Um jetzt auch den ProcMesh etwas anzupassen, können wir nun an den Werten rumspielen.
Die meisten Einstellungen kann man sich ableiten und andere sind schon bekannt aus den Einstellungen des FluidSurfaceInfos.
Leider kann ich jetzt auch nicht viel dazu sagen, die Startwerte sind ja schonmal relativ gut.

Um dem ProcMesh noch den letzten Schliff zu verpassen empfehle ich, eine Textur zu nehmen und eine eigene Cubemap dafür zu verwenden. Die wird allerdings in anderen Tutorials erklärt.

Jedenfalls, am Ende sieht mein Wasser ProcMesh so aus. Mit Cubemap.


woolfxxximage401.jpg



Hier kam auch eine gute Einstellung zum Einsatz. Und zwar kann man entweder das komplette ProcMesh sich bewegen lassen, oder nur das Innere. Wenn man ein ProcMesh wo wie ich einsetzt, dann empfiehlt sich die Einstellung unter xProcMesh->bRigidEdges. Diese Einstellung bewirkt, dass alle Polygone am Rand sich nicht bewegen, sondern nur die inneren. So ist eine Art Rahmen gewährleistet, der so stehenbleibt.

---------------------------------------------------------



Ich hoffe, dieses Tutorial hat euch etwas geholfen. Aufgrund meines begrenzten Wissens darüber kann ich nicht so ins Detail gehn, aber das sollte schonmal den alltäglichen Gebrauch abdecken.

Die Map die hier als Beispiel diente ist von Stryke und heißt CTF-_Battleship-SL725. Ich bedanke mich herzlich dass ich sie für das Tutorial benutzen durfte, im Gegenzug hat er ja auch die ProcMeshs von mir bekommen.

Tutorial by RAD0N

Feedback an: Radon [at] uneraled.de