Eisflamme hat geschrieben:Also zur Zeit erstelle ich einen Bounding-Sphere-Tree entsprechend dem obigen Paper für alle Vertices. D.h. ich bilde erst eine Bounding-Sphere, die alle Vertices abdeckt. Dann mache ich je nachdem, wie ich die Vertices mit bester Gleichverteilung hinbekomme, entlang einer der drei Achsenflächen (xy, yz, xz). Die darunter liegenden Vertices umfasse ich mit wiederum einer Sphäre.
Da ich leider obiges Paper nicht öffnen kann (offensichtlich Anmeldung erforderlich), habe ich noch eine kurze Frage dazu: Ich gehe davon aus, dass die gewählte Schnittebene neue Vertices erzeugt, die für die nächste Stufe an BoundingSpheres mit einbezogen werden? Denn sonst endet ja jeder Vertex einzeln mit einer 0-Sphere... Oder wird das anders getrickst?
Und noch was zu deinem Problem:
Eisflamme hat geschrieben:Na ja, schon klar, dass ich bei Animationen einfach Bones update und die Spheres irgendwie an Bones hefte. Aber ich habe ja nur ein Mapping von Spheres zu Vertices. Die Überlappungen von Bones zu Spheres können ja in allen möglichen Formen vorliegen. Wie löse ich das? Wenn eine Sphere von Vertices so beeinflusst wird, dass vier Bone beeinflussend wirken, ist es nicht so einfach, die Sphere an die Bones anzupassen, da die Vertexpositionen ja auch von der Ausgangsposition abhängt...
Kurz: Ich weiß nicht, wo ich da das Aktualisieren aller einzelnen Vertices "rauskürzen" kann in meiner Aktualisierung, wenn ich mich nur auf die Bones fokussiere.
Für die Positionen der Spheres müsstest du es so lösen, dass du Gewichte für mehrere Bones benutzt, genauso wie du einen einzelnen Vertex transformierst. Beim Erstellen kannst du ja für jeden enthaltenen Vertex aufsummieren, welcher Bone mit wieviel % einwirkt und so einen Gewichtungs-Durchschnitt für den Kugelmittelpunkt berechnen. Was allerdings die evtl. erforderliche dynamische Größe angeht versagt gerade meine Vorstellungskraft ob man das ähnlich lösen könnte...
Ein weiterer Ansatz wäre evtl., die Matrizen bzw. Quaternions n-mal zufällig zu belegen (im Bereich der erlaubten Bewegung) und die verschiedenen BoundingSpheres zu mitteln oder gar irgendwie zu klassifizieren... (mein Urin sagt mir, Spherical Harmonics als interpolierter Richtungs-Lookup könnten ein potentieller Klassifizierungskandidat sein, auch wenn ich noch nicht weiß wie) - hört sich außerdem nach längerer Vorberechnung an und ist vom Prinzip her vielleicht vergleichbar mit vorberechneter globale Beleuchtung u.ä.
Ansonsten denke auch ich, der bisher genannte Ansatz sollte in den üblichen Fällen reichen.
Außerdem ist es durchaus legitim (egal auf welchem Gebiet), nur eine grobe automatische Lösung anzubieten und dem Designer (bzw. dir selbst - sei nicht zu verwöhnt ;-)) einen Weg offenzulassen, etwas manuell zu ändern: Quick Prototyping mit möglichem manuellem Finetuning ist durchaus akzeptabel.