• RuntimesGodot
  • [Feature Request] Skeleton Render Separator for Godot

I need to plug the same head on several dozen body skeletons in very different poses that can't be expressed by the same skeleton. Also, there will potentially be 50-100 different heads and I don't want to set them up for each of the body skeletons individually.

Problem is, some of the head meshes should render in front of the body, and other meshes of the head should render behind the body skeleton such as longer hair. Currently, this is not possible as far as I'm aware, hence feature request. Presumably this could be achieved via Z index property of Node2D.

See Unity docs for an example: https://esotericsoftware.com/spine-unity#SkeletonRenderSeparator

Related Discussions
...

Did you check our SpineSlotNode? Because that does exactly what you want. You can create "empty" slots for places in your skeleton's draw order, where you want to place your meshes.

https://esotericsoftware.com/spine-godot#SpineSlotNode

As shown in the examples, you can even "slot in" other skeletons that way 🙂

    Mario Sounds like I'd still have to split long hair from head project so I can place it at the bottom of the draw order while face remains on the top of the draw order.

    This feature request aims to a avoid splitting the head project into two or more parts since syncing animation becomes an issue, as well as project management in general. Hair being split is 50x2 at least.

    But I'll see what I can do with SpineSlotNode.

    Similarly, the linked Unity example would not be realistic with SpineSlotNode since you wouldn't cut your skeletons in half and then re-link in Godot.

    You could customize rendering to be able to render part of the draw order for a skeleton. Eg, render part of a skeleton (hair in the head skeleton), then another (body skeleton), then another (face in the head skeleton). Maybe this makes sense to have as functionality in the Godot SpineSlotNode and Unity equivalent.

    • T.Fly() ответили на это сообщение.

      Nate graphics engineering is, unfortunately, outside my current skillset if I understand your correctly that this would involve changing the Godot C++ module rendering code or even Spine runtimes code.

      Yeah, customizing the spine-godot renderer is definitely not what I would want to wish on any of our users.

      Can you open an issue on GitHub? I can't promise that I'll get to this anytime soon. Please provide as many examples as you can.

        10 дней спустя
        12 дней спустя

        From what I understand, using SpineSlotNode doesn't alter the draworder list.

        • T.Fly() ответили на это сообщение.

          SilverStraw Yes, you enter something into an existing draw order with SpineSlotNode.

          To clarify: spine::Skeleton private data Vector<Slot *> _drawOrder