2d Skeletons with polygons vs cutout animation with skeletons?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By funkyfresh

Hi folks, I’m making a 2.5 D brawler (2d characters, 3d environment)

I had been using sprite3d, but find it too limiting with only sprite sheets. So instead, I’ll use a 2D structure and a viewport to bring it into 3D space and move it around.

I read these two different approaches to creating a 2d skeleton, and want to know the substantial differences and pros and cons?

First, cutout animations (the 2d skeletons tutorial even suggest you learn this first)

“Traditionally, cutout animation is a type of stop motion animation in which pieces of paper (or other thin material) are cut into special shapes and arranged in two-dimensional representations of characters and objects. Characters’ bodies are usually made out of several pieces. The pieces are arranged and photographed once for each frame of the film. The animator moves and rotates the parts in small increments between each shot to create the illusion of movement when the images are played back quickly in sequence.”

This tutorial has you import body parts, create pivot points, and reverse kinetic pivot points, automatically generate bones, and animate it.

Second, 2d skeletons with polygons

"Create a new scene for your model (if it’s going to be an animated character, you may want to use a KinematicBody2D). For ease of use, an empty 2D node is created as a root for the polygons.

Begin with a Polygon2D node. There is no need to place it anywhere in the scene for now, so simply create it like this:

Drawing a polygon directly is not advised. Instead, open the “UV” dialog for the polygon:"


So my biggest questions, what are the drawbacks to the different approaches?

I see that the second method, you can “bend” the joints. They put in the whole arm, rather than fore-arm and lower-arm with a pivot.

Is this just a style choice? Could I make a bend joint using the first method, and pivot points instead using the second method?

Can kinetic bodies be applied easily to either method? I want to have 2d animated fighters with some rag-doll physics, and then I’ll use the viewport to bring that to the 3D environment.

One other factor, is that I intend to have swappable body parts, using different textures or images.

Examples:
You upgrade the arms of a fighter, wearing spiked sleeves, and upgrade the hand, wearing brass knuckles, etc
in this example, different body parts could simply have different textures to load, and keep everything else the same
One the impact of a punch animation, I can increase the hand size for effect if it’s a separate object, on either method?
What about, however, swapping the entire body part for during frames of the animation?
for example, when going for a strong punch, the body turns into it. With 3d, you rotate the chest and hips.
in 2d, however, you need to either manipulate the image (rotate, squish, etc)
what would look better, however, would be to have another sprite of the hips and chest where the character is “facing right” more, and only use this for key frames, or during the whole animation.

Which method would make it easier to swap out textures / sprites on the fly?

Any other major pros and cons I’m not seeing?

Or are these two tutorials REALLY just doing the same thing but in a slightly different manner, and I can choose whether to “bend” joints or “pivot” joints, can get kenetic bodies and ragdoll and animations either way, and it’s just a personal preference?

Is there a big difference with loading each body part in a separate file (example 1) vs having them in a single file and outlining them (example 2) - other than that swapping individual parts may be easier with example 1? Or would it be just as easy with example 2, I simply have a huge texture with ALL the arms on it, and tell it which arm, and a texture with ALL the heads on it, and tell it which head, etc etc?

Thanks in advance!

Oh, and found a few examples of bringing 2d objects into 3d with viewports:

this guy used viewports and cutouts in a 3d space, his biggest issue was that he’s using bilboarding though, which is something I prob will only use for the UI and not the sprites. He tried both planes and quads, and found planes better for the 2d?

And godot has a “2d in 3d” example where you make a viewport that shows pong on a 2d plane:

Similarly, a view shows a 2d plane, which contains the whole pong game.