Was nützen Knochen in einer 2D-Skelettanimation?

7

Ich versuche, einen Renderer mithilfe eines Szenendiagramms und einer Skelettanimation zu implementieren. Soweit ich weiß, stellen die Knochen in einer Skelettanimation nur eine Verbindung zwischen zwei Gelenken dar. Wenn ein Joint jedoch seine Eltern- und Kindergelenke kennt, wofür würden Sie überhaupt Knochen brauchen?

Warum benötigen Sie eine separate Klasse, Skeleton, um eine 2D-Entität (was auch immer) darzustellen, wenn das Skeleton nur eine Reihe von Gelenken ist? Ist das nicht nur eine Verschwendung von Erinnerung? Vermisse ich etwas

Belserich
quelle
3
Warum benötigen Sie Kanten in einer Diagrammstruktur, wenn Knoten ihre Verbindungen zu anderen Knoten kennen?
user253751

Antworten:

9

Ohne die Details Ihrer speziellen Implementierung zu kennen, ist es schwer zu sagen, aber im Allgemeinen ist ein "Knochen" nur ein anderer Begriff für entweder ein "Gelenk" (eine 3D-Position, die animiert wird) oder ein "Gelenk plus Verweis auf das Elterngelenk" . "

Diese

Wenn ein Joint jedoch seine Eltern- und Kindergelenke kennt, wofür würden Sie überhaupt Knochen brauchen?

impliziert für mich, dass Sie die letztere Definition in Ihrem System verwenden (Gelenke haben, die ihre Eltern kennen) und daher "Knochen" nur ein weiterer Begriff für das ist, was Sie bereits haben.

Warum benötigen Sie eine separate Klasse, Skeleton, um eine 2D-Entität (was auch immer) darzustellen, wenn das Skeleton nur eine Reihe von Gelenken ist?

Es hört sich so an, als würden Sie fragen, warum Sie es haben möchten

struct Skeleton {
  Array<Joint> bones;
};

anstatt

Array<Joint> skeleton;

Wenn dies der Fall ist, möchten Sie im Allgemeinen aus dem gleichen Grund eine Struktur für einen 3D-Vektor haben, anstatt überall drei Floats zu übergeben. Es fasst das logische Konzept zusammen, das Sie ausdrücken möchten, verbessert die Lesbarkeit bis zu einem gewissen Grad und bietet Ihnen die Möglichkeit, verschiedene verwandte Funktionen zu verknüpfen (z. B. das Aktualisieren aller Gelenke im Skelett mit neuen Positionen basierend auf einigen eingegebenen Animationsdaten). .


quelle