- تم التحرير
Ease of Use UI Proposals - Improved Tree & Animation
I've been working with a much more complex set of skeletons recently, and I have a few suggestions for how the UI might be improved in the Tree and Animation views:
Animations Folders -
In our game, we are trending toward over 100 animation states for some skeletons. It would be really nice if the animation panel had folders, purely for organizational purposes. This way I could put all of the attack animations into a single collapsible folder, separate from all of the movement (walk, run, jump) animations. These would not need to export, they would only be for organization while working.
Tree Organization -
User Can Change order of Heirarchy -
My first suggestion was originally to put constraints directly underneath the bones in the Hierarchy, since they relate so strongly to bones... it makes less sense to put them at the end of the list, below draw order and images, etc.
But even better - if I could simply change the order that items appear in the hierarchy (along with hiding/showing), this would also improve this issue.
Hide & Show Elements in Heirarchy -
I would like to be able to turn off or collapse all of one type of item in the entire hierarchy (so turn bones or images on/off), like how you can turn these items on/off in the viewport (hiding/showing bones, etc). As a use case, I typically do not use skins or events, so I'd like to be able to hide these elements completely. Or if I'm working only on the skeleton for a bit, I could hide all of the images folders, just to get them out of the way, and then turn them back - ideally re-expanding them back to how I had them expanded before I hid them. Just to be clear, I only want to hide these things in the Tree panel - NOT in the viewport editing area.
Scrolling Shortcuts -
I also think that the Tree view's scrolling length could be improved through another feature. I have to scroll a LOT in some files (or collapse and expand a lot) to go back and forth between 1) different skeletons, 2) bones and their constraints, images, draw order, etc... but mainly between bones and constraints.
To solve all of these issues, it would be nice if there were almost a window inside of the tree window, at top and bottom. These inner windows could be collapsed and expanded if you do/don't want to see them. The top view would be a list of all skeletons, with the ability to 1) jump to a skeleton in the Tree list, and 2) turn on/off an entire skeleton.
The bottom mini-window would be a shortcut list to view the bones, draw order, images, skins, etc. within the skeleton. This way I could also jump to the images without having to collapse the bone list, or scroll through a set of lists to get to the constraints, for instance. This would also be an ideal place to turn on/off a certain element (turn off all skins).
ryancbaker wroteAnimations Folders -
This is planned:
https://waffle.io/EsotericSoftware/spine/cards/580bacfc29fef328007f9dd5
ryancbaker wroteTree Organization -
User Can Change order of Heirarchy -
My first suggestion was originally to put constraints directly underneath the bones in the Hierarchy, since they relate so strongly to bones... it makes less sense to put them at the end of the list, below draw order and images, etc.
We added annotations on the right edge of the tree in 3.4. Not all constraints make sense under something in the tree. Also, do they go under the constrained bones? Which one when there are many? Under the target bone? We ended up with them at the bottom.
Manual order in the tree might end up being a pain for users. Will give it some thought.
ryancbaker wroteHide & Show Elements in Heirarchy -
I would like to be able to turn off or collapse all of one type of item in the entire hierarchy
We have a tree filter: Image removed due to the lack of support for HTTPS. | Show Anyway
The 3 buttons left of the filter button are shortcuts. You can't hide the images, skins, animations, events, constraints nodes under the skeleton though.
Scrolling Shortcuts -
To solve all of these issues, it would be nice if there were almost a window inside of the tree window, at top and bottom. These inner windows could be collapsed and expanded if you do/don't want to see them. The top view would be a list of all skeletons, with the ability to 1) jump to a skeleton in the Tree list, and 2) turn on/off an entire skeleton.
Annotations in the tree should help jumping to constraints. We added the Animations
view some time ago as an easier way to access animations. We could do a similar thing with separate views for skeletons, skins, constraints, and maybe draw order. This may be simpler than your proposal and seems like it would address the problem about as well?
Thanks for the feedback! Keep it coming.
Hello,
sorry to intrude, but if you are talking about some ui improvements i would like to add my idea too.
i think it would be much better to have ability to name/rename objects directly in tree without popping up whole dialog box.
thanks!
All feedback is welcome!
iraklisan wrotei think it would be much better to have ability to name/rename objects directly in tree without popping up whole dialog box.
Can you explain why this would be better?
- تم التحرير
Nate wroteThis is planned:
https://waffle.io/EsotericSoftware/spine/cards/580bacfc29fef328007f9dd5
Great, thanks for the heads up! This will be a huge help.
User Can Change order of Heirarchy -
My first suggestion was originally to put constraints directly underneath the bones in the Hierarchy, since they relate so strongly to bones... it makes less sense to put them at the end of the list, below draw order and images, etc.
We added annotations on the right edge of the tree in 3.4. Not all constraints make sense under something in the tree. Also, do they go under the constrained bones? Which one when there are many? Under the target bone? We ended up with them at the bottom.
Sorry, I think my comment was confusing. I would not want each constraint to appear below the bones associated with it - that is already achieved through the icons to the right of the bone. What I would want is for the Constraints group (the little dropdown w/ all constraints) to be below the Bones group, not at the bottom of the list below Draw order, Images, Skins, etc. Or allow the user to define the order on a universal level (see below):
Manual order in the tree might end up being a pain for users. Will give it some thought.
The 3 buttons left of the filter button are shortcuts. You can't hide the images, skins, animations, events, constraints nodes under the skeleton though.
I usually work on multiple skeletons in a single file, and I start with the bones and constraints only (with a guide image turned on), so having dropdown nodes visible for animations, draw order, etc. while I'm working only on bones and constraints clogs up the tree for me.
I would not suggest allowing users to re-order the dropdown nodes (bones, images, skins, animations, etc) on a per-skeleton basis, but rather be able to re-order them universally.
The filters help, don't get me wrong... but honestly I would prefer a button or something to jump directly down to a constraints section (or view it simultaneously), rather than selectively hiding/showing other elements to get to what I want. In my suggestions, I was trying to kill two birds with one stone by suggesting a way to simultaneously filter, re-order, and jump to any node within a selected skeleton, without any scrolling, and by using only one panel.
But I think that this issue would become moot if you implemented something like idea below:
Annotations in the tree should help jumping to constraints. We added the
Animations
view some time ago as an easier way to access animations. We could do a similar thing with separate views for skeletons, skins, constraints, and maybe draw order. This may be simpler than your proposal and seems like it would address the problem about as well?
Yes, that would be a simpler solution. You basically read my mind as I was considering a response to this topic. In thinking about it further, the problem I would like to circumvent is the constant scrolling up and down in the Hierarchy to switch from editing bones to constraints, to other things. Even filters do not help this, because I'd like to view my constraints and my bones at the same time, rather than use filters to turn one off in order to view the other.
To explain my issue more... I just have so many bones, attachments, constraints, etc. that I spend a lot of time scrolling up and down, or collapsing / un-collapsing.
So yes, what I truly prefer is the ability to have at least one other panel to view some of these elements - possibly just a second tree panel. For instance, one panel that views the skeleton only (with its actual bones, attachments, etc), then a separate window (or column) that displays its constraints, and a separate window/column for its images, skins, and so on. In an ideal world the user could define what is shown in panel 1 versus panel 2 (possibly through filters?). This way if you wanted your bones and constraints in a single panel, it would be possible, but I could view only images and skins in the second panel.
This would require the filters to completely hide the dropdowns for images, skins, events, etc if you turned them off through filters... which I would prefer anyway.
Somewhat separate topic, but also related to the tree:
Locking Individual Bones:
I would like to be able to lock editing on individual bones, attachments, etc. I realize you can lock editing (or rather prevent the selection) of all bones or all attachments in the main viewing and editing window. But I have some bones that I set up as a "go between" to indirectly scale other bones, etc. that I do not want to edit at all. I'm always accidentally selecting these bones when I try to edit another bone. So being able to just click a little lock/unlock in the tree to prevent or allow editing would be great. Maybe CTRL-clicking or right-clicking the lock on a bone would also lock its children?
ryancbaker wroteWhat I would want is for the Constraints group (the little dropdown w/ all constraints) to be below the Bones group, not at the bottom of the list below Draw order, Images, Skins, etc. Or allow the user to define the order on a universal level
Ahhh, gotcha. Changing the order is going to confuse all the people who are used to it! Image removed due to the lack of support for HTTPS. | Show Anyway What does everyone think of this order:
A user defined order is possible, but one of our design guidelines is to not make things configurable whenever possible. Doing that is important because it simplifies the app. Many apps have so many knobs, they are overwhelming and it's unnecessary. The guideline only works if we also put a lot of effort into finding the best ways for things to work, which we try to do. For the tree nodes I think I want to see how adding more views plays out.
having dropdown nodes visible for animations, draw order, etc. while I'm working only on bones and constraints clogs up the tree for me.
Nooooo calling them dropdown nodes is confusing! They are just tree nodes like any other. Maybe "top level nodes" under a skeleton? At any rate, I hear you. Having more views might eliminate some or all of your pain.
the problem I would like to circumvent is the constant scrolling up and down in the Hierarchy to switch from editing bones to constraints
Understood. One trick that can come in handy is to turn off auto scrolling in the tree (the button right of the filter). In some cases turning it off can leave you where you want to be in the tree while you edit other objects. Eg, scroll the tree to view your bones, then when you click various constraint buttons at the right edge of the tree you can edit the constraints without being scrolled away from the bones.
ryancbaker wroteI would like to be able to lock editing on individual bones, attachments, etc.
This has been discussed before and is something we've been meaning to do for a long time. I'm not a big fan of adding more columns to the tree, as it adds clutter and it's questionable how prominent locking/unlocking needs to be, ie how often locking/unlocking objects needs to be accessed. At the very least, a checkbox like Background
is relatively easy to add. I moved the issue to 3.6:
https://waffle.io/EsotericSoftware/spine/cards/580bacfc29fef328007f9ddc
Nate wroteryancbaker wroteWhat I would want is for the Constraints group (the little dropdown w/ all constraints) to be below the Bones group, not at the bottom of the list below Draw order, Images, Skins, etc. Or allow the user to define the order on a universal level
Ahhh, gotcha. Changing the order is going to confuse all the people who are used to it!
What does everyone think of this order:
Image removed due to the lack of support for HTTPS. | Show Anyway
Well I wouldn't want you to confuse everyone for my sake. But I would suggest:
- Bones
- Constraints (relate to bones)
- Draw Order (they are the "next descendent" of bones, so I'd put them next)
- Skins (make sense between Draw Order and Images, though I could see this after images)
- Images (I only open this up when I need to add an image to a slot... so this gets used <1% of the time I'm in the app)
- Animations (very little use in Setup)
- Events (completely unrelated to Setup)
Images being in the middle is a right pain in the ass (for me), we have hundreds of image, if that has been left open, and you enter animate mode you have to spend approximately 10 years scrolling up to the skeleton :s
Also, would it be possible for if you hold shift when clicking new>bone
it creates it to the parent of the selected bone. we work with a large hierarchy, and its annoying to re-order in the alphabetical order
I vote we move the image node's tree to its own view. The node itself can stay as the place where you specify the base path, and to give a shortcut to that new view.
Reasons:
- easier dragging from the folder/image list to the skeleton hierarchy regardless of skeleton complexity.
- the images view can eventually have a different UI. Big thumbnails? custom ordering? search box?
- images node is useless in Animate mode.
- not an actual node in the skeleton object model
@bcats
You're aware of the Create
tool's shift
+click
behavior, right?
Just checking. I know it's not the same.
Pharan wrote@bcatsYou're aware of the create tool's shift+click behavior, right?
I wasn't aware that that was a thing, also note that it doesn't work if you use the new button.
Image removed due to the lack of support for HTTPS. | Show Anyway
This is the struggle I have - the horror
I agree there should be an easier way to move a bone 1 level up.
Currently, the easiest seems to be to select it, press P
(or the Set Parent
button), then click on the parent in the viewport or the tree, wherever it's easier.
The easy way to select the current bone's parent though is to press CTRL
+up arrow
I just realized the following are unbound by default:
New Bone:
New Slot:
New Skin Placeholder:
New Bounding Box:
New Path:
I'm rebinding CTRL
+N
to New Bone. 'cause who needs a shortcut to make a new skeleton?
BinaryCats wroteImages being in the middle is a right pain in the ass (for me), we have hundreds of image, if that has been left open, and you enter animate mode you have to spend approximately 10 years scrolling up to the skeleton :s
You could double click the collapse button in the upper right of the tree.
BinaryCats wroteAlso, would it be possible for if you hold shift when clicking new>bone it creates it to the parent of the selected bone. we work with a large hierarchy, and its annoying to re-order in the alphabetical order
This is bad communication, we don't want to guess at what you mean. I assume you mean "it's annoying to parent the bones to a single bone". Bones are automatically shown alphabetically. As Pharan mentioned, the create tool has a
shift
option. We could add that to clicking new bone. Also note you can select many bones, then Set Parent
, and chose the parent for them all in one operation.
Pharan wrote- images node is useless in Animate mode.
Agreed, it's a good idea to hide it in animate mode. As for a separate view, it's not a bad idea. Having it only as a separate view will confuse people. Having it in two places is a bit unfortunate too, as there can be thousands of nodes.
Nate wroteThis is bad communication, we don't want to guess at what you mean
See the gif, newly create bone
goes all the way to the top of the hierarchy (which is fine) because bone
< bonen
, what is annoying is having to scroll up, find the bone, when parenting what was the child. (i.e. in the gif, I make a new bone, which is the child. drag it out to the root, then parent the old parent to the child. I'm not making myself any less clear). :wonder:
Nate wroteYou could double click the collapse button in the upper right of the tree.
But then the skeleton also collapses, and I loose the bones I'm working with
Ah, that makes more sense. Maybe the new bone button should prompt for a name? Thoughts?
BinaryCats wroteBut then the skeleton also collapses, and I loose the bones I'm working with
True. You could click a bone to have the tree expand again, but it's still disorienting.
Reasons:
- easier dragging from the folder/image list to the skeleton hierarchy regardless of skeleton complexity.
- the images view can eventually have a different UI. Big thumbnails? custom ordering? search box?
- images node is useless in Animate mode.
- not an actual node in the skeleton object model
Agreed on all fronts. I would encourage you to extend this reasoning to any/all other types of nodes, especially the last 2 points. In the tree, I would prefer that any node which is not used in a respective mode (Setup or Animate) is not visible at all. So no Events in Setup, no Images in Animate, and so on. And since Animations now have their own panel (view) in Animate, why not remove their node under the skeleton?
I would also very much like a separate window for images, AND for constraints. I realize there is less of a case for constraints... It is just my current pet peeve. But I will say that if you are adjusting constraints, there is far more scrolling that you will have to do, compared to adding images - especially when bones have more than one constraint.
Whether or not you make Constraints a separate window, I would like some kind of highlighting system in bones and constraints. I know you can use the little constraint icons next to bones to jump to their constraint, but that doesn't help much when I'm trying to re-prioritize the constraints. So my suggestion would be that when a bone is selected, any of its constraints are automatically highlighted. And the reverse could be true — if you select a constraint, the bones that it refers to are highlighted. This would make a bit more sense if they were separate windows, but I think it could be helpful regardless.
To give a little background, I currently have 45 constraints in the file I'm working on, but expect to have over 100 by the time I'm done.
I am also feeling like I need a way to view which constraints are breaking each other, and producing unexpected results (or rendering other constraints useless). Currently I have to do some trial and error to get my constraints into the right order so that they don't cause conflicts... and I suspect that I may have created some circular logic that means one set of constraints will simply never work, regardless of what order I put them in. I haven't fully tested this theory yet, and don't have any good suggestions yet — the only thing I could think of would be a little icon like and exclamation mark (!) next to any constraints that may conflict with the current constraint. I'm still trying to determine best practices for layering constraints, so my thoughts are probably premature, but I thought it was worth mentioning.
One final thought — I wish that when a transform constraint was added, it defaulted to 0% transform on all properties, with "=MATCH" automatically applied. I understand that this might confuse some people, but I believe the the typical use case for a transform constraint will not be to immediately snap to the target bone... but rather to apply only a partial transform, or a transform adjustment over time (tossing a weapon from one hand to the other). So in Setup mode, when you create a constraint, you typically won't want the object to snap to its target's position, etc. — rather, you will have it move toward the target bone in Animate mode when needed.
All of this to say, it would save a lot of time if the constraint defaulted the bone in question to its original (=MATCH) position, with 0% transform on all properties, and "link sliders" unchecked, and let the user adjust from there.
ryancbaker wroteI would like to be able to lock editing on individual bones, attachments, etc.
On second thought, isn't it enough to just hide the bone in the tree? I don't think there is every a time where you want to see a bone, but not be able to select it. In 3.5.34, the Background
checkbox for region and mesh attachments has become separate Select
and Export
checkboxes.
So no Events in Setup
Events can be useful in setup. Not all events need to be customized when they are keyed. I'm mostly with you on hiding some of what is in the tree and using views, though I'm not fully convinced about moving completely to views. It's just a few tree nodes, and collapsed it doesn't seem that they hurt anything.
One consideration is that the properties are shown in the bottom of the tree. With separate views, I'd guess you'd want them to show the properties in the bottom of each view? This could increase the minimum usable width and height for each view by quite a bit.
I would like some kind of highlighting system in bones and constraints
FWIW, when you hover over a constraint in the tree, arrows are drown for the constrained bones. For a bone, the only way to see its constraints is to hover over the annotation buttons at the right edge of the tree, which have tooltips in the latest.
I am also feeling like I need a way to view which constraints are breaking each other, and producing unexpected results (or rendering other constraints useless).
This is interesting, issue added:
https://waffle.io/EsotericSoftware/spine/cards/583cdbff25714e1e00d4dab5
ryancbaker wroteI wish that when a transform constraint was added, it defaulted to 0% transform on all properties, with "=MATCH" automatically applied
I'm with you on the 0%, but I'm not sure about automatically applying match because it's a bit of a pain to zero the offsets.
Nate wroteryancbaker wroteI would like to be able to lock editing on individual bones, attachments, etc.
On second thought, isn't it enough to just hide the bone in the tree? I don't think there is ever a time where you want to see a bone, but not be able to select it. In 3.5.34, the
Background
checkbox for region and mesh attachments has become separateSelect
andExport
checkboxes.
There is one specific time when I do want to see a bone, but not select it - when that bone is being controlled by a transform constraint. I have constraints way off to the side that are basically my "levers and pullies" to move various parts of the skeleton indirectly. I want to see what these bones are doing, because they may have a rotation applied by an offscreen transform-constraint-parent. If this bone is 100% controlled by the constraint, then you can select it, but not edit it (or at least not edit the properties that are controlled by the constraint) already, which is fine - but these bones are then cumbersome when they cover other bones that I'm trying to edit. So I'm constantly clicking a transform-constrained bone which I can't edit anyway, don't even want to select, but do want to see
I have so many overlapping bones... and I really need to see them, but don't want to ever edit half of them directly.
My ideal situation would be to have the ability to lock bones, which dims them to 50% opacity, or turns them into a dotted line or something. So I can see them, but know that they are only there for viewing, not editing.
Nate wroteOne consideration is that the properties are shown in the bottom of the tree. With separate views, I'd guess you'd want them to show the properties in the bottom of each view? This could increase the minimum usable width and height for each view by quite a bit.
I use dual (sometimes triple) monitors, so I just spread everything out as wide as I can. I know not everyone uses this setup, but I think that even if the panels are hidden behind each other (so they appear as tabs that you can toggle between), this is still faster than scrolling up and down the tree. I do have auto-scroll turned on, but sometimes you want it on and sometimes you don't.
Yes, I'm fine with the properties being at the bottom of the panel in question - so the Constraints props would appear when you have a bone with constraints selected, or perhaps only when you have a constraint selected. I would also be fine with having the props hidden when nothing is selected, as it currently is in the tree.
ryancbaker wroteI would like some kind of highlighting system in bones and constraints
FWIW, when you hover over a constraint in the tree, arrows are drawn for the constrained bones. For a bone, the only way to see its constraints is to hover over the annotation buttons at the right edge of the tree, which have tooltips in the latest.
Yes, showing the red arrows connecting the bones to their constraint are very handy. I'm not sure what you mean about the tooltips - I've updated, have beta versions turned on, and tooltips turned on, but I'm not seeing them... maybe I am just misunderstanding, unless you have not pushed that update yet.
Could you also show the red arrows when you hover over a constraint icon in the tree (the ones to the right of bones)? I still think that highlights within the tree could be as much if not more helpful than the arrows in the editing window though.
It would also be great if you currently had a constraint selected, if that constraint's relationship was drawn with a cyan blue arrow, while hovering over any other constraints drew the red arrows as they do now. Sometimes I'm examining a constraint, have it selected, but accidentally mouse over another constraint... or I want to scroll up to the bones to fiddle with something else. While doing this, I lose the red line for the currently selected constraint... hence my suggestion of a more "semi-permanent" blue line for the current selection.
I realize this is probably wishing for too much, but two more items would eventually be handy:
- I would like to be able to change the bone or target of a constraint once it's been created. I've accidentally selected the wrong target before, so I have to delete the constraint and recreate it. I don't really mind how this is done, maybe right click on the target in the Constraint properties, and it then forces you to select a new target bone?
- I would like to be able to duplicate a constraint to another bone - same target, same constraint settings, but applied to a different bone. I notice you have the duplicate button there already next to rename, so maybe this feature is planned?
ryancbaker wroteI am also feeling like I need a way to view which constraints are breaking each other, and producing unexpected results (or rendering other constraints useless).
This is interesting, issue added:
https://waffle.io/EsotericSoftware/spine/cards/583cdbff25714e1e00d4dab5
You guys are awesome. Any improvement here will be amazing.
ryancbaker wroteI wish that when a transform constraint was added, it defaulted to 0% transform on all properties, with "=MATCH" automatically applied
I'm with you on the 0%, but I'm not sure about automatically applying match because it's a bit of a pain to zero the offsets.
That works. Thanks!
ryancbaker wroteThere is one specific time when I do want to see a bone, but not select it - when that bone is being controlled by a transform constraint.
Hmm, I guess that makes sense. We'll consider a Select
checkbox for bones and probably make them translucent.
Re: tooltips, sorry that was in 3.6. We've ported it and some other changes to the next 3.5 release.
Could you also show the red arrows when you hover over a constraint icon in the tree (the ones to the right of bones)
Yeah, I think that is reasonable.
It would also be great if you currently had a constraint selected, if that constraint's relationship was drawn with a cyan blue arrow
Hmm, the arrows might get in the way if we always show arrows for the selected constraint.
ryancbaker wroteI would like to be able to change the bone or target of a constraint once it's been created.
This is just a matter of us handling everything to make this happen. We'd like to do it, but it's low priority.
I would like to be able to duplicate a constraint to another bone - same target, same constraint settings, but applied to a different bone.
This is similar, it's just a bit of work. It's a little complicated because there may be more than one new constrained bone to choose, and you may want to change the target instead of constrained bones. Also low priority for now, as there is a looot to do.
Whilst we are here, would it be possible to somehow show which slot is selected in the draworder aswell as the skeletion. i.e. you select a slot in the hierarchy, that slot is both highlighted (as selected) in the draworder and the hierarchy.