- Düzenlendi
Spine Editor Feature ideas/requests
Hey guys, been loving working in Spine and while it's one of the best art tools I've worked with in terms of how laser focused and clearly made WITH artists in mind it is, there are a few things I'd still love to see. Below is a list of a couple of ideas I have. Please let me know what you think!
Folders/Groups in the Animation Timeline:
I would love a way to organize groups of keyed bones/meshes/etc in my animations. When things start getting complex it becomes difficult to make minor edits to things such as timings of small elements that have multiple bones. This currently means manually selecting the set of bones you need to edit before editing on the timeline. As a result I find myself making a ton of default isolated animations and then copy pasting them over to the more robust animation sets. This is an okay solution but sucks for iterative purposes. It would be much more convenient if we had a way to organize groups of keys (or rather groups of bones/meshes) in the timeline for easier selection and easier viewing.
Default Curve Options:
I've found that when keying animations w/ curves on (rather than linear or stepped) you get auto interpreted curves between each key. It would be great to have an option to turn this off and instead make all keys default to a single curve type (either one defined by us, or the actual default setting you get when double clicking curves).
Bone Naming Conventions:
When creating bones that are children of other bones we currently have them inherit the color of the bone. However, they are always named bone#, regardless of what they're inheriting from. I would prefer to have an option to have them be named whatever the parent bone is + a number. For instance, the root bone Hair would create children Hair1 Hair2 Hair3 etc down the line (which would mean ignoring the #s, so assuming Hair2 is the child of Hair1, it wouldn't actually be named Hair11 (hair1child1 essentially)). I may be phrasing this in an incredibly convoluted way, and I see why at its core this seems like a meaningless request (since most animations would just have like, leftArmTop -> leftArmBottom -> Hand) but for more complex forms like tails, or anything that would ultimately employ a path, I think this would be helpful in shaving some time off of renaming bones. I think basically that most people need to rename the bones ANYWAYS, so it may be helpful to at least know what the bone's parent was to make it easier to find in case you for some reason don't.
PS JSON Exporter: Allow for the Folder export option w/ Skins to be used WITHOUT Skins:
From an organizational standpoint I'd love to be able to keep different pieces of the art organized in folders in my explorer. As it stands the only way to do this is by using those folders as Skins. However, there are times I'd like to be able to separate things out in folders without using any Skins. Would love to see an option to export with these folders without having to then manually remove every slot from the skins afterwards.
Masks (Admittedly a Pipe Dream):
I know this is a bit of a none starter, but I'd still love to see it. This is easy enough to achieve currently within Unity by using the separator as it currently is, but animating around this is obviously very messy since no masks exist currently in Spine. I doubt this is the case, but if it would somehow be easier to just emulate masks (ie: not having to export with them - similar to how we don't actually export things like Blending styles) that would actually work incredibly well since the exported file can easily then be masked in Unity just using 2 fairly simple shaders.
Thanks for taking the time to read this if you got this far! Feel free to critique or add to any of these if you see problems with my thoughts on these. Thanks again to everyone at Esoteric for such a good program to begin with (and also for how quick and helpful you've been at responding to every bug report I've filed in the past) and also to anyone who's read this!
Cheers!
Default Curve Options
You can actually already do this. How to do it is unfortunately currently not very obvious and kinda weird, (and I think currently a bit too easy to accidentally change).
If you open the Graph view and open the Presets sidebar, you'll see a preset named "Default".
This is the preset used whenever you create a new key.
Currently, at minimum, you need to have an animation, and two keys for a property.
Then select the first key, so that you can select graphs in the presets sidebar.
Then you can select the preset, and change the graph, which will edit that preset.
If you edit the "Default" graph, it will apply this graph to any new keys you create.
Note that the graph between two keys "belongs" to the earlier key. So adding a key to an existing one will not apply the default graph preset. It will only apply to the one after that new one.
Opened an issue for improving this: [UI] Fix editing key Interpolation Graph presets. · #250 · EsotericSoftware/spine-editor
You can add to the discussion there too if you want.
I'm heading out for a bit so I'll leave the rest to the others. But some of these are already in the list. Thanks for the feedback.
Nate's actually working on the PS export script right now so that input is good timing too.
I will say that raster masking is a tricky subject since it's not only runtime specific but also setup specific. It need to be set up in a way that respects the way you're using your stencil buffers, which may interfere with existing things that use it.
Thanks for taking the time to provide your feedback!
SoulKarl yazdıFolders/Groups in the Animation Timeline:
If I understand, you'd like something that is a list of named items, where when you click an item it shows specific bones in the dopesheet?
SoulKarl yazdıBone Naming Conventions:
Makes sense, we'll do this! We should probably also inherit the parent bone's icon.
PS JSON Exporter: Allow for the Folder export option w/ Skins to be used WITHOUT Skins:
We've been working on improving the PS script and will have something for this in a couple days. Likely you can put [folder] in a group name and images will be output to a subfolder named after the group. We'll also have [skin] and [slot] to allow groups to put attachments in a skin or slot, and [merge] merges the groups layers when the script is run, so you can have multiple layers in PS for a single attachment in Spine.
Following the script update, we'll have improved ways to import attachments into an existing project. [slot] will be useful for this.
Masks (Admittedly a Pipe Dream):
Do you mean an image mask? Ie, a texture which defines which pixels are drawn. Did you see Spine has polygonal clipping?
SoulKarl yazdıwhat you think!
Folders/Groups in the Animation Timeline:
Storing your selections might help out here. You can store selections using Ctrl+0-9
and then get the selection back with 0-9
Nate covered the rest
We have just put up the latest PS export script here:
spine-scripts/PhotoshopToSpine.jsx at master · EsotericSoftware/spine-scripts
It's still early, but it has the [folder] tag (as well as all the other tags listed above).
Thanks so much for all the replies!
In regards to the timeline folders it's more along the lines of what Shiu recommended. I made a visual example so you could see what I had in mind. (ignore the keys on there, they're just whatever was there before editing the image )
Also on the same subject of the timeline, I'm not a huge fan of the reorganizing the timeline does (most recently selected bones/iks/etc get put on top of the list). Would be great to have an option to just have this be alphabetical like in the tree window, or manually reorderable like in the draworder. This would also make it a lot easier to make broad selections of similar keys without having to manually select them or make selection groups. It has the added benefit of helping w/ memorization of where your stuff is laid out in your file, where as bringing the most recent to top means the order is always in flux.
Another potential option (may be useful as an alt-click or right click): when selecting a bone/ik/whatever in the timeline currently it becomes the ONLY thing visible. While this is often ideal, there are times I'd love to be able to see everything else while fine tuning keys, or just as a general way of working (not having to realign myself every time I press space to deselect).
Cheers guys and thanks again
Nate yazdıDo you mean an image mask? Ie, a texture which defines which pixels are drawn. Did you see Spine has polygonal clipping?
Is this a new feature with 3.6? If there's documentation up on it could you link me? (Tried using the clipping tool I saw and it immediately crashed the program when I tried pressing new lol).
If this is basically a manual way of creating masks (similar to how we construct meshes) is there any chance we could get some kinda automated version of this where we could select a png and just have it trace the exterior of that to use as the mask (which is to say I want that selected area to be the only place images are displayed - for instance making the whites of the eye, or the inside of a mouth a mask that everything underneath could never be drawn outside of would cut my work down considerably - as currently I'm making solid colored blocks that I'm then meshing and animating in order to cover everything exposed by blinks or talking or etc. (I attached an image to show what I'm currently using as a mask alternative ))
Is this exportable also or is it planned more as a tool for inside spine specifically? If it is exportable is there any hope of it being able to be tied to a mesh?
Thanks again!
SoulKarl yazdıI'm not a huge fan of the reorganizing the timeline does (most recently selected bones/iks/etc get put on top of the list). Would be great to have an option to just have this be alphabetical like in the tree window, or manually reorderable like in the draworder. This would also make it a lot easier to make broad selections of similar keys without having to manually select them or make selection groups. It has the added benefit of helping w/ memorization of where your stuff is laid out in your file, where as bringing the most recent to top means the order is always in flux.
We've considered manual order changes and will likely do that. It is more convenient than using selection order to get the dopesheet order like you want, but both ways still require you to manual order them.
SoulKarl yazdıAnother potential option (may be useful as an alt-click or right click): when selecting a bone/ik/whatever in the timeline currently it becomes the ONLY thing visible. While this is often ideal, there are times I'd love to be able to see everything else while fine tuning keys, or just as a general way of working (not having to realign myself every time I press space to deselect).
Sounds like you aren't using the Lock
dopesheet button, see here:
Dopesheet - Spine User Guide: Contents
Give that a whirl and then I'd be curious if your dopesheet contents opinions have changed.
Once you have the dopesheet like you want, you can use selection groups as Shiu mentioned.
Tools - Spine User Guide: Selection groups
SoulKarl yazdıIs this a new feature with 3.6? If there's documentation up on it could you link me? (Tried using the clipping tool I saw and it immediately crashed the program when I tried pressing new lol).
Yep, it is new in 3.6. We don't have proper docs I'm afraid, we need to get on that! You may find this interesting:
Blog: Spine 3.6 - Tint black, clipping, weight painting, and more!
It shouldn't crash. :sweat: Can you reproduce the crash every time? Does it happen with an empty project? Can you provide the steps you take to see the crash?
SoulKarl yazdıIf this is basically a manual way of creating masks (similar to how we construct meshes) is there any chance we could get some kinda automated version of this where we could select a png and just have it trace the exterior of that to use as the mask
It is similar to mesh editing, almost exactly like bounding box editing. Every vertex used has a CPU cost, so it is important not to over use clipping when exporting JSON or binary. If exporting images or video, you can go nuts with clipping. Placing vertices manually is pretty easy and will result in fewer vertices than an automatic process. The only reason I see for automating it is if you have a large number to create, and even then it's unlikely you want clipping to match the pixels in an image exactly.
Is this exportable also or is it planned more as a tool for inside spine specifically? If it is exportable is there any hope of it being able to be tied to a mesh?
What do you mean by exportable? It gets exported to JSON/binary and all the runtimes work with it. Also not sure what you mean by tying it to a mesh, but you can weight the clipping polygon vertices, just like a mesh or bounding box or path.
Ooh ya that Lock on the dopesheet helps a TON. I'd still love to see some kind of folder groups (just easier to keep track of than selection groups - especially between sessions) but this is far better than I realized I had it
I doubt the crash is repeatable but I'll file a report if I'm able to reproduce it or if it ends up happening repeatedly.
What I meant by exportable was if the clipping mask comes along in the unity JSON and atlas. Like, for instance, the blending modes currently don't export (but the alternative to it in unity, ie: finding the right slot + separating it + changing its blending mode in unity, works fine). The reason I'd want a way to automate the creation of the bounding box to follow an image is, especially if it's expensive to run tons of them, is because you could use them exclusively within spine as a means of visualizing what the masked animations would look like (and deleting them all before exporting the JSON if they do export). Then within Unity, it's dirt cheap to just separate the mesh, attach a shader to the area acting as the mask, and then a 2nd shader on every object you want contained within that mask, for pixel perfect masking.
That said I just have to rethink how I'm building these files to make use of the current clipping mask you guys have implemented. I think this is more just me trying to work within the old confines of the program prior to 3.6 still. The current way you have it is actually much more efficient assuming the clipping masks aren't somehow wildly expensive at run time. I doubt this is the case however, as whatever wizardry you guys have in the Unity JSON/atlas exporter that drops the filesize by like 90% is a godsend. I wish all my 1gig folders of pngs paired down to 500kb-1mb of data
Thanks again for all your help and for taking my ideas under consideration
I'd love to have something that works like PS groups, basically being able to save bone selections, IK's allow you to control 2 bones only,
Hello, I might have a small input
I have 4 people working on the same rig. We each have a separate spine file and as animations get ready I import them on a master file.
In the rig I had a few meshes that had more than a copy. For example in some cases I need the same mesh to have different weighing. I had left the meshes with the same names and only renamed the skin attachments, so I could keep track of what meshes were duplicates.
Turns out that if I import animations from another file and one of these meshes, which have duplicates, has some deformation in the timeline, spine turns up an error (it says something about the number of vertices, took us a while to figure out the issue was in the names)
Long story short: maybe it'd be helpful if spine wouldn't allow meshes with duplicate names to exist, like it happens with slots and skin placeholders. Any reason why it works like it does at the moment?
tnx!
@Fainder, Spine should be clear about why an animation can't be imported. Can you send the Spine files so we can see the problem?
Spine only enforces name uniqueness where required. Eg, attachments within a slot must have the same name, but under a placeholder they don't. It isn't clear what you mean by "duplicate names". Maybe you can point out what you mean in your project?
Hi Nate, unfortunately I'm working for a studio and they don't allow me to send any file (asked in the past for bigger issues)
I fixed those already anyways, but I dug out some screenshots I took to share with my collegues.
Here's an example of what it says when I import animations. It imports everything fine but removes mesh deformations in the timeline for said animation
Loading Image
The fix (other meshes, I didn't have the corresponding screenshot):
Loading Image
Loading Image
What I mean by duplicate mesh: I create a mesh under a skin placeholder and bind it to some bones and fix weights on it. Then I duplicate it and bind it to different bones or weigh it differently while keeping the same shape and vertices.
If I duplicate a skin placeholder, the mesh in it keeps the original name. It's fine in a single spine file even if I apply deformations when animating, in fact it made perfect sense to me to keep the same name on the same meshes (I might even have manually renamed a few to be the same actually. I just checked and if I duplicate the mesh and not the skin placeholder, it gets a different name)
Thanks for the screenshots. It's still not super clear what the problem is. The "deform keys with wrong vertex count" happens when deform keys don't have the same number of vertices as the mesh they are deforming. This could happen from a bug in an older version of Spine, or maybe a problem with the import allowing import of keys that don't match the mesh. To really understand, I'm afraid I would need project(s) showing the problem. Maybe you can create the same situation without using your real projects?
I tried editing the raptor example body mesh, adding one vertex. I then imported the walk animation into the edited project and I get the "deform keys with wrong vertex count" warning. This is correct, it can't import the deform keys because the animation's keys have one too few vertices.
I'm working at very large image sizes, and exporting gifs takes forever and creates these huge monster files. There is no easy solution for creating a small sized gif to share with the rest of my team like there is in Adobe Animate. If I could just export a gif at 25% it would do so much to speed up my work flow
Nate, I tried reproducing it with the raptor. It doesn't give me the warning and it's not exactly the same behaviour but close enough to explain my point
I created a duplicate of the jaw mesh and edited its weights but not the vertices http://prntscr.com/gkz5dx
I then made two copies of the file. In file2 I deformed one of the jaw meshes in the walk animation. Then I imported this animation into file1, it's called walk2. You see the mesh is no longer deformed
If I rename the second mesh http://prntscr.com/gkz7cr and do the same process, the deformation is kept when I import the animation (file3, file4)
Deformations are kept within a file so I didn't have any issue while I was working in my own copy of the file. But then I had someone else deform a mesh in their file and when I tried importing all animations into a single spine file, the deformation in their animation is lost
Recapping:
- file1 and file2 are the same rig in which the jaw mesh has two instances with the same name. In file2 I deformed this mesh and when I import the animation back into file1 there's some conflict and the deform information is lost.
- file3 and file4 are the same rig in which the jaw mesh has two instances with different names. In file4 I deformed this mesh and when I import the animation back into file3 the deform information is kept.
This is really a minor issue to be honest and it happened only because we're few people working on the same rig at the same time. None of us is a spine veteran either so it just might be us missing out something
Thanks though!
That was very helpful, thanks! It may seem like a minor issue, but it's actually pretty serious since Spine is not using the data correctly. We've fixed this in 3.6.40. Cheers! :happy: :beer:
Great, thanks!