Hi Leute,
ich habe vor kurzem mal damit angefangen mich mit Unity3D zu beschäftigen, hauptsächlich wegen der Plattformunabhängigkeit, da es ja jetzt auch mit Windows Phone & BlackBerry gehen soll. Wie ich festgestellt hatte, gingen viele Dinge am Anfang noch recht einfach. Aber wehe man versucht mal was spezielles zu machen….
Eigentlich möchte ich nur einen einfachen Shader für einen "Geometry Explosion Effect" erstellen. Also das die Geometrie eines Models "zerspringt". Sprich die Dreiecke bewegen sich entlang ihrer Flächennormale und rotieren dabei um ihr eigenes "Zentrum". Natürlich hatte ich schon in der Unity Community gefragt.... aber die Ratschläge dort konnte ich irgendwie nicht für voll nehmen, z.B. ich solle alles per CPU machen weil sowas ginge ja nicht mit Shadern........
Dabei ist das, zumindest aus meiner Sicht, eigentlich keine große Sache, ich hatte so einen Effekt bereits damals mit meiner eigenen Engine + Model-Format gemacht. Ich hatte einfach einen eigenen Exporter für Blender geschrieben, der mir beim Export-Vorgang auch die Flächennormalen + Zentrum in die Vertex-Struktur gepackt hat.
In meinem GLSL Shader brauchte ich dann nichts weiter tun als jeden Verhex entlang der Flächenormale zu bewegen und dabei um das Zentrum des Dreiecks, zu dem der Vertex gehört, zu rotieren. Das war zumindest meine Lösung, weiß nicht ob es da noch bessere Wege gibt (?).
Jetzt sitze ich vor Unity und benutze das FBX-Format und exportiere meine Models mit Blender. Ich denke nicht das der FBX-Exporter von Blender die Flächennormalen & Zentren berechnet. Bleibt also nur noch der Import-Vorgang in Unity, da kann man sich ja einklinken (AssetPostProcessor). Sprich ich könnte dort die Vertex-Struktur nachträglich bearbeiten und die Werte berechnen die mir fehlen, wenn das alles mit Unity denn überhaupt so einfach geht. Da sitze ich dann aber bestimmt wieder einige Stunden dran.
Habt ihr ne andere Idee? Was wäre das beste? Gehe ich eventuell falsch an das Problem ran? (Aber ich schätze mal ich werde wohl nicht drum herum kommen.)
EDIT:
Hier auch mal ein youtube video:
http://www.youtube.com/watch?v=4UbJ6YPDP4Q
Das ist der Effekt den ich meine, nur das in dem Video die Rotation fehlt.