• RuntimesGodot
  • Is it possible to use Spine2D in the Godot 3D scene?

Is it possible to use Spine2D in the Godot 3D scene whose effect looking like in UE5?
Or or omething like sprite3D?
Tks, guys~~~

Related Discussions
...

That's currently not possible. We have an open issue for it here:
EsotericSoftware/spine-runtimes2135

There's a fork of the runtime that has a proof of concept for a 3D capable SpineSprite. It's incomplete and likely has a bunch of bugs:
julhe/spine-runtimes56a9d6a

It's quite a bit of work getting this to work in 3D, and I'm afraid I have a bunch of other stuff that needs to get done before I can get to this.

As of Godot 3.5 :
The way to do it is Sprite3D node > Viewport node > SpineSprite node.

The SpineSprite node(s) have to be a child of Viewport node. Viewport will render stuff upside down so you either enable "Flip V" ( vertical ) in Sprite3D properties ( under SpriteBase3D classs ) or use negative Y scale in SpineSprite properties ( under Node2D class ). The Viewport has a default size of ( 0, 0 ) so you have to resize it. Enable "Transparent BG" in Viewport properties. On the SpineSprite properties, transform (x, y) position ( under Node2D class ) to be visible in the Viewport.

You can set a Texture2D texture property on the Sprite3D node.
https://docs.godotengine.org/en/3.5/classes/class_sprite3d.html#class-sprite3d-property-texture

Texture2D data can be a texture resource created from the Viewport node as ViewportTexture data.
https://docs.godotengine.org/en/3.5/classes/class_viewporttexture.html#class-viewporttexture

Check out the flags under SpriteBase3D class on the Sprite3D node properties. Enable "Billboard" flag if you want the sprite to always face camera. Enable "Transparent" flag. Enable "Double Sided" flag to allow the texture on the backside of the Sprite3D node.

You can do the same thing similarly with SpatialMaterial resource as well.

You have to test the performance and limitations yourself to see if it is acceptable to your requirements.

    That's an interesting solution, albeit, as you said, possible not great performance wise. Each SpineSprite would be rendered to an off-screen render target, which would stall the GPU pipeline quite a bit. Probably fine if you only have a few dozen skeletons on screen.

      6 months later