Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
121 stars 2 forks source link

Option to make grid on facet anchors zoomable/bigger #2146

Open jae1911 opened 1 month ago

jae1911 commented 1 month ago

Is your feature request related to a problem? Please describe.

Sticking facets to the facet anchors is very difficult to me because the squares are really small and my hands are trembling. It makes it near impossible for me to stick and scale what I want on there.

Describe the solution you'd like

It would be nice to be able to set the grid size, making the squares bigger so it's easier to snap stuff onto it.

Describe alternatives you've considered

Having some avatar where those are scaled up a lot to make it easier.

Additional Context

Sticking facets to the dashboard is way easier as it is basically a static target.

Requesters

U-j4 | j4.lc (Discord)

Frooxius commented 1 month ago

Changing the grid size will reduce how many facets you can actually put on, would that be desirable change?

Or is it more issue with the placement itself? We could add something that scales them up during placement, but that might also make the hand & forearm ones clip. Or we scale them up when you hover over them, but that might also come with its own issues.

jae1911 commented 1 month ago

How I see it, zooming onto the grid would make 4 squares merge into one (for instance), and the facet would snap to those new squares.

Even thought it could lead to loss of some space to add more facets, it would ultimately be better than not being able to put anything at all there (at least from my point of view), and looks like a good way of achieving that.

Frooxius commented 1 month ago

I see. I was just wondering if there are other approaches to help with placement that would preserve the more fine grained grid.

jae1911 commented 1 month ago

Another way to do it that I see would be to temporarily make the facet anchor into a re-sizeable static grid like the dashboard is (snapped for instance, in front of the person), but no idea how easy it would be to do that.

The square merging option seemed like a good compromise.

shiftyscales commented 1 month ago

@Frooxius - In my own use of facets- I've found the largest usability issues tend to be the following:

My recommendation would be introducing some sort of mechanism to scale up, and temporarily unparent facet anchors from your avatar while placing the facets. This would allow the grid to become arbitrarily large so the user can place facets without issue.

This would also benefit one-handed use of this feature, as if a user has limited mobility in their right arm- they could use their left hand to place facets on their left hand/arm anchors.


We could possibly extend the snapping logic in some ways. (This could be its own post if needed- but it is relevant as a lot of the issues highlighted below are exacerbated by the small size of the facet anchor grids).

E.g. a common issue I've found is if I am trying to place a facet a facet in the corner. It can be difficult to target the corner precisely when clicking and dragging the facet, and sometimes accidentally place my initial laser on a row or column in from the edge due to aforementioned issues like jitters causing the grid's placement to be unstable, in addition to being very small.

It would be nice if there was some threshold where if you were 'close enough' to the edge of a facet container it would try to place it there anyway- even if your cursor isn't exactly on the corner.


There are other snapping behaviour that could be potentially useful, e.g. say you wanted to create a 2x3 grouping of equally sized buttons that take up the entire facet anchor- currently you would have to precisely click and drag each facet you wanted to place in that arrangement.

Having some means of pre-sizing facets so you could place a bunch down at the same time rather than needing to individually scale each could be useful.


It would also be useful to be able to snap anchors to fill portions of a container, e.g. placing a facet in each of the four corners, or snapping a facet to fill the entire left/right side of an anchor.

(Think window snapping in Windows when you drag a window to the edge of the screen.)


It would also be useful to be able to slide/resize facets that are on adjacent squares, e.g. click and drag on the edge of a facet to rescale the facet next to it, e.g. if I wanted to shrink a facet, and have the other facet grow to fill the newly available space.

Or if I had a grouping of facets, e.g. 2x3 and wanted to adjust the sizing of the entire stack of facets.

Frooxius commented 1 month ago

I think the mechanism to unparent and position the facet anchor could work best in here. It's relatively easy to do with the system, we could just lerp it away from the hand and make it big in front of the user, then lerp it back.

The main question would be how to trigger this - we could just add a button that appears on each one when you go into the edit mode.

shiftyscales commented 1 month ago

The way I kind of envisioned it was entering UI edit mode itself would trigger them to detach, and lerp/scale into a grid in front of the user.

If a user couldn't easily reach a button on say- one of their forearms they wouldn't be able to trigger it in the first-place/that solution would still require the use of both hands- so I don't think having a button on each is a good idea.

Frooxius commented 1 month ago

I don't think that would work well, because there's a lot of them and there's not an easy way to navigate them. Plus if you're fine with them staying on, then you'd have no choice to detach them.

This should be something you trigger manually for the ones you need it for.

shiftyscales commented 1 month ago

Maybe just a grid of labelled buttons near the button to turn off edit mode in the dash then?

That way you could still individually set each into that mode while you work on it, and when you turn it off- it would return back to your hand/arm so you could preview it before exiting edit mode?

shadowpanther commented 1 month ago

Actually I have an idea right in front of me. In UI edit mode, add buttons/tabs to the outside of the facet panel that would do different actions. E.g., pop this panel out to edit, pin it so that it wouldn't hide with the others (override mode), maybe toggle the panel background on a per-panel basis.

This is kinda what this could look like (Orca Slicer interface):

image
shiftyscales commented 1 month ago

My main concern listed above still stands with the thought of attaching buttons to the anchors, @shadowpanter. E.g. if a user has limited mobility/use of only one arm, they wouldn't be able to interact with those buttons easily.

Adding extra buttons/functionality to the anchor while it is detached from the user could be potentially useful, however.

Frooxius commented 1 month ago

Yes, that's pretty much what I was suggesting above. A button that pops on the side. Or maybe even more for other actions - say we want to change other stuff like the grid spacing and such.

shadowpanther commented 1 month ago

Probably we could have both?

Buttons next to the UI edit button to pop out separate panels and also the attached buttons on the panel itself, accessible both when the panel is on the anchor and when it's popped out and big.

A user with limited mobility could pop the panel out with the button under the Dash, make changes, toggle panel features (override, background, etc.), then press the pop-out button still attached to the panel to pop the panel back into the anchor.

shiftyscales commented 1 month ago

I'd be fine with both myself- I just want to make sure whatever we settle on is accessible for one-handed use. :)

Frooxius commented 1 month ago

We could have buttons somewhere else too for that yeah.

Though one thing that I don't fully understand here with one-handed use - if the user can't use their hand to place the facets - how will they actually use the facets they place on the hand after they've placed them?

shadowpanther commented 1 month ago

These could be informational facets, not functional ones. Clock, FPS, ping, etc.

Frooxius commented 1 month ago

Oh so it's purely for adding them to the hand that you can actually move?

shiftyscales commented 1 month ago

Yes.

Some facets don't need you to interact with them @Frooxius - e.g. say you add the time facet so you can use it like a wristwatch.

Likewise, this also accounts for users that still have two arms, but just have limited mobility in one of them.

However, since users are also able to reassign anchor positions- a user may instead choose to add the extra anchors to the arm/hand they are able to reach/interact with. (Which is another reason I think it would be useful to be able to set the default anchor positions globally as well as per-avatar #2123).