• Editor
  • [Request] SEMI-linked meshes.

(This may be something already possible, if so, my request is silly.)

I am working on a project with different characters all with the same animations.
I am using skins to switch between them. Say, switch the face mesh for a different skin colour.

  • So all my face shapes are the exact same dimensions just with different colours. This means it is very easy to make new colours and swap out the attachment path per skin.
  • To change the face shape of one person I manually deform the mesh in SETUP mode with their skin active. This is to save importing a pre-shaped image and remeshing and reweighting everything (which would be insanity).
  • I can't use linked meshes, because deforming one mesh would deform it for all linked meshes, defeating the purpose.
  • So I duplicate the attachment for each new skin. This works absolutely great
  • Only the meshes are duplicated, so when I animate using bones and constraints and all that fun stuff, all the animations work for every skin/face shape. I don't have to recreate animations etc. But it is cumbersome to update any weights, or anything related to weights (for instance if I add a new bone/control/constraint or improve my weighting) because the mesh weight was 'snapshotted' when it was duplicated and became it's own mesh.
  • I can copy and paste mass weights (which is awesome by the way), and it's not so bad right now with two skins, but Once I have many characters, with a dozen different attachments each (face, upper lip, lower lip, ear x 2, eyebrows x 2, eyelash x 2, nose, nose shadow etc etc, that's just for the face)...

My proposal would be a sort of "semi linked mesh". The original mesh and weights would all be linked. It'd just be a skin based deformation.
Essentially a granular linked mesh that would be able to toggle the linking of:

  • 'original mesh' (this would be mandatory in a linked mesh anyway or nothing else would follow)
  • 'weighting' (or not)
  • 'setup deformation' (or not)
    Or the request could also be for "skin-based deformations". 😛

I can think of many really good uses for a semi-linked mesh in this way (some others within my same project, ie pseudo outlining using a slightly scaled duplicate mesh behind the main mesh).

For now I'm still happy it worked so well and that I can copy and paste bulk weights 🙂

ps. I know you can have skin based constraints (as seen in Erika's awesome video about them), which would work for very simple skin changes like 'scaling' or slightly different skeleton sizes (although IK breaks a lot of this awesome functionality in my opinion due to forced scale inheritance) but it doesn't work for manually deforming to any detail.

Related Discussions
...

Your request for "semi-linked meshes" is indeed an interesting idea and addresses a common challenge when working with multiple characters sharing the same animations but requiring unique deformations. Currently, Spine does not support semi-linked meshes as you described, where you can selectively link certain properties like weights or setup deformations while allowing others to be independent. The current workaround involves duplicating meshes for each skin, which, as you noted, can become cumbersome when updating weights or other properties across multiple characters. While linked meshes in Spine allow for shared deformations, they do not support the selective linking of properties, which would be beneficial in your use case. Your suggestion could potentially streamline workflows by allowing more granular control over which aspects of a mesh are shared or independent across skins.

Thanks Spinebot. Someone asked something very similar in the linked discussion (although it was talking about linking in multiple slots)!

  • Misaki님이 이에 답장했습니다.

    JayW Thanks for the suggestion! I see you are already using the copy and paste functionality for meshes and weights, but perhaps you haven't tried using Weld yet? The following short video by Erika gives a good overview of this feature:

    Weld can be used even when no vertices are selected, and it can be used more efficiently by assigning keys to hotkeys for welding.

    If you haven't tried it, please give it a try.

    As you say, it would be very useful if we could achieve a linked mesh where we could specify which one to link with fine options. However, since this appears to affect runtime, I personally think it might be better in the short term to allow the Weld tool to be used for multiple meshes.

    I use weld a lot! I can't see how it applies here though. The meshes are resized and on different skins and so don't exist on the screen at the same time so the weld can't target them. I just tried it and I can't seem to weld to a mesh on another skin 🙁

    Copy and paste all a million times is my best solution for now!

    • Misaki님이 이에 답장했습니다.

      JayW Ah, sorry I certainly missed that point. You cannot use Weld if the mesh is already inside another skin. I assume you're already aware of this if you've used Weld before, but I wanted to mention that Weld is particularly useful when adjusting the weights of facial parts like the eyes, eyebrows, and mouth to the base face (skin). It can be especially helpful when the face is divided into many small parts.

      That said, I still believe that avoiding the concept of semi-linked meshes, if possible, would be preferable. The reason is that while certain editor-side improvements might not affect runtime, changes that require modifying the exported skeleton data format would be significant. For example, modifying Weld to allow referencing a mesh from another skin would only affect the weighting process, without altering the final vertex or weight information in the exported skeleton. In my view, improvements that do not impact runtime would be more desirable, as they can be implemented more quickly.
      We’ll be discussing with the Spine Team how we can improve the workflow for cases like yours.

      Yes makes total sense actually, good perspective. At the moment I am using spine as an animation exporter (I would kill to be able to export the preview layered animations) so I'm biased towards super cool editor features without thinking how runtime would be affected.

      I use layered clipping masks and multiple physics constraints and mesh deforms all over the place! I was wanting to eventually use unity for dynamic animation and skins so I'll probably have to completely overhaul everything anyway.

      I do use weld a lot for exactly the facial elements. Insanely handy, but of course if I add a control bone etc I still have to manually bind it to every instance of the mesh on each skin and then re update all the weights as well.

      It's ok. Honestly ctrl c v the weights is pretty reasonable. It's not impossible at least! I just have to really solidify my rig before getting into skin creation, but sometimes it's fun to do the fun stuff and try out things.

      Thanks so much for such a fun tool.

      • Misaki님이 이에 답장했습니다.

        Having them editor-linked only could also be a option? Ie they are only linked in the editor with another data layer that is ignored at actual runtime in a other program (runtime would use the same data as now, treating them as separate meshes with their own skeleton data). Basically a ui layer that fakes the link but is actually baking everything into the separate meshes as normal, just doing it on multiple meshes at once. It would still need to be tagged in the skeleton data for reading in the spine editor so I dont know if that makes sense at all.

        I'll leave programming to the programmers and keep drawing things...

        I was experimenting with various workflows to find a viable solution for this. So far I think a good workflow can be something like this:

        • First you make your changes on a mesh
        • Next you duplicate said mesh and move it in a new slot
        • Now you can weld it, copy-paste the weights, and have fun
        • Once you're done across all skins you can delete the slot with the duplicate mesh

        I don't think deformations would work well with something linked, especially due to the nature of calibrating each mesh differently.
        The ideal workflow would of course be as you described, so you first finalize your starting skin, then apply to all others. Changes or enhancements of a skeleton are a normal part of the workflow, so finding alternative solutions that can scale to bigger projects may be worth the time if you find yourself tweaking them a lot.
        If you want to get creative, you could deform some skins using transform constraints that displace some bones slightly to achieve this displacement and still be able to edit the weights.

        • JayW 님이 이 게시물을 좋아합니다..

        JayW Thank you for your understanding! Yes, when we think about new features in Spine, we always take their impact on the runtime into account. Of course, some improvements are worth implementing even if they require changes to the runtime or code, but such features often take a long time to develop. That's why we also explore ways to achieve improvements in the short term.

        I would kill to be able to export the preview layered animations

        This is actually a feature we’d like to implement in a future version. Ideally, we want to allow users to define an animation sequence in the preview view and export it. However, we don’t yet have a timeline for when this will be available. You can track the progress of this feature in the issue ticket here:
        EsotericSoftware/spine-editor371

        Having them editor-linked only could also be a option?

        I think it is possible, but as you mentioned, we would need to add some kind of tagging information to the skeleton data. Otherwise, if the exported data is later re-imported into Spine, all links would be lost. Ideally, we’d like to avoid making changes to the skeleton data format.

        One common issue with skins is that reconfiguring them can be tedious. For example, we’ve received feedback that merging multiple skins back into a single skin is a hassle. We recognize this as an area for improvement, and we have an issue ticket for it here:
        EsotericSoftware/spine-editor771

        One reason Spine needs a skin merge feature is that if you delete attachments and re-import the PSD to add a skin, all mesh settings, weight settings and animation keys associated with those attachments are lost. This was a commonly reported issue, and we're considering adding a special copy function for mesh attachments to make it easier to reuse settings and keys:
        EsotericSoftware/spine-editor551

        I know I’m mostly mentioning long-standing issues, but the copy/paste weights feature that you use so much was actually added in 4.2.45-beta, released on March 21st of last year, so even that was not available before then. We are constantly working to improve Spine, and we appreciate your continued support!

        • JayW 님이 이 게시물을 좋아합니다..