So I have been breaking my brain about this question for months now.
Background
In my plugin you can draw scalable vector graphics as native Godot nodes:
- Line2D
- Polygon2D
- CollisionPolygon2D
I built a custom node for that using the@tool annotation called ScalableVectorShape2D, which uses a Curve2D to calculate shapes via Bézier curves.
This makes it super user friendly to draw and animate scalable 2D images + pixel perfect collision polygons in engine.
The Dilemma
People want to use Skeleton2D and Bone2D to animate their 2D characters, for which I currently have nothing, except well-intentioned advice:
- One could use the
Polygon2Dnodes one drew with the plugin in a standalone fashion. - One could do it ‘my way’, using the
position,rotationandscaleproperty tracks.
I cannot integrate the 2, because deforming a Bézier curve would be way too heavy on the CPU’s… And without raster textures would make little sense anyway (although you can use those with my plugin too of course).
My idea
So would it help if I made it possible to assign one Bone2D to a ScalableVectorShape2D that would then act sort of like a RemoteTransform2D?
So, not deforming the shape but only overriding it’s transform?
So if the bone rotates, the ScalableVectorShape2D rotates too.
It sounds like faking it…
It feels like it would add little value (except having a reusable armature, maybe
)
Honest Answer
Would you feel betrayed and over-promised if I had built it like this and it did not work exactly like you’d expected?
No deforming, just …erm… tracking the motions?
For more context see:
Or watch here:
https://youtube.com/playlist?list=PL5lf_BvgORcg1YndZOi9wR_GaAbxqsujh&si=I2fbLuNw61NjxJ8M
