Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "Free Transform Tool" #2920

Open
Agnyy opened this issue Dec 5, 2019 · 41 comments
Open

Add "Free Transform Tool" #2920

Agnyy opened this issue Dec 5, 2019 · 41 comments

Comments

@Agnyy
Copy link

Agnyy commented Dec 5, 2019

We want to add a standard tool for animating the layer. Such a tool can be found in almost all programs for animation, but for some reason there is no OT in it, another "All" tool is used instead. And therefore, what would be more convenient for everyone, we want to add the familiar tool "Transform Tool"

Screenshot or Video Reference

image
image

In Flash
https://www.youtube.com/watch?v=3wVoEF-HefQ

In ToonBoom
image
https://docs.toonboom.com/help/animate-pro/Content/HAR/Stage/017_Cut-out_Animation/020_H1_Animating_using_the_Transform_Tool.html

Video in Russia
https://www.youtube.com/watch?v=pa651-jmI0o&feature=emb_logo

@Agnyy
Copy link
Author

Agnyy commented Dec 5, 2019

image

Visually, the instrument will probably look like in ToonBoom. Because it’s more contrasting and pleasant to work with such a tool, or you can make it just blue, as they do now in many programs, including Photoshop.

@artisteacher

This comment has been minimized.

@RodneyBaker

This comment has been minimized.

@RodneyBaker
Copy link
Collaborator

Closing but please continue the discussion in this topic...

@caryoscelus

This comment has been minimized.

@gab3d

This comment has been minimized.

@Agnyy

This comment has been minimized.

@manongjohn
Copy link
Collaborator

I would also prefer a box for doing deformations similar to how the Selection Tool works, however, in regards to @gab3d's comments, this would potentially only be good for Vector levels whose bounding box would be based on the strokes in the level. For any raster based level, the box is pointless because it would have to encompass the entire canvas size. You couldn't select a portion of the canvas to deform.

@gab3d

This comment has been minimized.

@Agnyy

This comment has been minimized.

@RodneyBaker

This comment has been minimized.

@Agnyy

This comment has been minimized.

@manongjohn

This comment has been minimized.

@Agnyy

This comment has been minimized.

@RodneyBaker

This comment has been minimized.

@gab3d

This comment has been minimized.

@manongjohn

This comment has been minimized.

@Agnyy

This comment has been minimized.

@Agnyy

This comment has been minimized.

@Agnyy

This comment has been minimized.

@manongjohn

This comment has been minimized.

@hayoko

This comment has been minimized.

@RodneyBaker

This comment has been minimized.

@RodneyBaker
Copy link
Collaborator

Is there a fork where we can see the development of this feature in progress?

@gab3d

This comment has been minimized.

@artisteacher

This comment has been minimized.

@caryoscelus

This comment has been minimized.

@gab3d
Copy link
Contributor

gab3d commented Dec 6, 2019

Specifically, I have a few questions regarding the functionality of what you are proposing:

I see two things apparently implied in your proposal about the Animate tool that are different from what is currently there:

  • a temporary pivot point.
  • being able to select several items to transform at the same time.

Neither of these two things are specifically related to the proposed new rectangular gizmo, but instead to the functionality of the Animate tool itself.

  • As you may know an object pivot point is currently not animatable in OT (as in most animation software), so once you move it it will remain in the new position permanently.
    So I wonder how this "temporary pivot point" feature would work behind the curtains to take this into account?
  • I also wonder how selecting several objects for transforming would work regarding pivots? I mean, each selected object will have its own pivot, but to be able to rotate or scale them in a grouped fashion you would have to compensate changing each object position as well? Or perhaps I misunderstood, if that's the case please correct me.

In the mean time, as for the lack of precision of the current manipulator of the All mode, please know you can keep the Alt key pressed before starting to drag, to gain more precision while performing any transformation.
Besides that, I think a bigger manipulator would help users too, and for sure there could be more things to improve in it.

@gab3d
Copy link
Contributor

gab3d commented Dec 6, 2019

@caryoscelus
Here is all the info present in the manual about the Animate tool All mode manipulator, perhaps it could be of any interest to you, as a resource of information.

@RodneyBaker RodneyBaker reopened this Dec 7, 2019
@RodneyBaker RodneyBaker changed the title (Discussion) Add "Free Transform Tool" (WIP) Discussion: Add "Free Transform Tool" Dec 7, 2019
@RodneyBaker

This comment has been minimized.

@RodneyBaker RodneyBaker changed the title (WIP) Discussion: Add "Free Transform Tool" (WIP) Add "Free Transform Tool" Dec 7, 2019
@RodneyBaker
Copy link
Collaborator

RodneyBaker commented Dec 7, 2019

Perhaps too radical an idea:

It might be ideal to write this tool (proposed by @Agnyy and developed by @caryoscelus) so well that it would be the default option for the Edit/Animate Tool. Let me try to explain:

Background
All of the current options in the dropdown menu are 'transforms' except the last; 'All' widget.
Position, Rotation, Scale, Skew and Center (pivot/offset) are all transforms. The 'All' option is simply an interface for manipulation of each of those transforms directly on the canvas. In short, it is an 'All Transforms' option.

The default value of the current dropdown menu is 'Position'.
Ideally it might be this new 'Transform' state.

Transforms

Consideration for new default
Note here that the proposed Transform option can and likely will still default to 'Position'.
As such the default would remain the same. Moving/Animating something on the canvas via the new default 'Transform' option would still adjust the values in x and y channels the same as it does currently via 'Position'. The user could then simply move the pen/cursor to see the other transform options and edit/animate accordingly.

TransformsDropDownMenu

Benefits
Improved editing/animating by default settings
No additional 'transform' option at the bottom ('transform' or 'transforms' would instead be seen at the top of the menu before the user even clicked on the dropdown menu.
Having 'transforms' showing will immediate let the user know what to expect if they open the drop down menu.
Once the drop down menu is opened the user will see the options we see today (the header would simply be 'transforms'.

There are additional considerations related to this but I'll save them for another day.

Submitted for your consideration...

Added: There is a little method to my madness here as eventually we are likely to see a Transform node in the Schematic. It might actually be better to call that node 'Transform Offset' because the node will have to use the default values already present for a given object, group of objects, level, etc. Transform via canvas is simply a different view to the same data/channels.

@hayoko
Copy link

hayoko commented Dec 7, 2019

The code is there in the select tool already, just pipe in the transform functions.

The only thing we're missing is being able to lock the pivot position, so I could lock it to the bottom to create a squash. Center position is center unless the user drags the pivot on the transform.

image

Done, we'd finally have a useful transform tool. 🤷‍♂

@Agnyy
Copy link
Author

Agnyy commented Dec 9, 2019

I would like to apologize to everyone. I looked angry, although I was not evil, I was just sad. I didn’t want to spoil anyone. I love the dialogue and support it. It's just that sometimes it’s very difficult for me to express my thoughts. And it’s hard to write one and the same thought several times to make it clearer. Therefore, I sometimes feel helpless in these dialogs when I need to defend my ideas. You probably had to draw emoticons in messages, then my messages would be nicer :-). I am very ashamed that I was able to upset someone. I’m not on purpose, I just don’t know how to write correctly. :-) I really appreciate and respect you all.

@Agnyy
Copy link
Author

Agnyy commented Dec 9, 2019

@RodneyBaker
Unfortunately, I still can not comment on your idea because I did not understand it. I realized just that you want to add a new default function. Maybe that’s good.

image
@hayoko I think in the future to add a special tool that would fix the anchor point in the right place.

@artisteacher
Copy link
Contributor

No additional 'transform' option at the bottom ('transform' or 'transforms' would instead be seen at the top of the menu before the user even clicked on the dropdown menu.

@RodneyBaker - I'm also not quite sure what you mean. How could this tool/mode be the new default of the Animate tool, yet still set to position?

If there were a transform label, it really needs to be to the side, or displaying only when the drop down is expanded. Otherwise, if the widget is out of view (or the widget blends in too much with the background, or there's a new user who doesn't know the widgets yet), it will take more time to figure out which mode is active.

@RodneyBaker
Copy link
Collaborator

RodneyBaker commented Dec 9, 2019

@artisteacher It would be much like the Selector Tool (even using much of its code as has been suggested). The 'widget' wouldn't need to be expressly activated by the user because it would be the default and activated when the Edit/Animate Tool is selected. This would place the proposed gnomon/widget on top of the canvas so the user could select the various transforms via that in similar fashion to how we see the position center now when the Edit/Animate Tool is selected because Position (i.e. the Translate Transform) is activated.

As for why position would be the default for that... The Edit/Animate Tool isn't the Selection Tool, it has a default mode (currently position) and so would still retain that. Further because the Animate Tool automatically selects all of a level (or all vectors) there is no need to select anything** so everything (being preselected) can just be moved, similarly as now where the All widget can just move/position levels just by click dragging.

In essence the user would not sense the Transform state as a widget as it would just turn on when Edit/Animate mode is engaged.

I can understand why this is difficult to envision because Opentoonz is rather unique in how it currently cannot transform/animate objects. It will all get sorted out and In time we'll get there.

**Obviously the goal would be to improve capabilities to Edit/Animate select (i.e. Group) and transform parts of a vector levels (think shapes, lines and control points here) as well but that is a much bigger task to code (REF: Recently closed Curve Animation PR). I'd bore everyone with talk of 'Named Groups' and exposing Groups in a Project Workspace Listing but... few would understand that either. Again, we'll explore those areas in time. In other words, in the realm of keyframing, the primary way to make selections of objects is via Grouping. Currently OT users cannot see much less know what groups they have available to manipulate/animate. And we also have to account for the 3D tranforms that are waiting in the wings...

@artisteacher
Copy link
Contributor

@RodneyBaker - So the selection box would be visible at the same time as the various widgets in each mode. Would you be able to use it freely the whole time, or would functionality be locked to the transform mode?

Would you see the active selection?
Screen Shot 2019-12-09 at 10 12 30 AM
Or just the box?
Screen Shot 2019-12-09 at 10 14 01 AM
For vector levels would the visible boundary be based on the content like it now? If so, how would you deal with potential areas of overlap between the current widget and the additional selection box?

Personally, at this point I'd rather have a preference to choose between either a "widget view" or "selection box view". Otherwise there is a potential for this to get a bit too busy visually.

On a related note, I'd really like to have some way for the "all mode" to be the default transform mode. It could be literally set as the default. There could be a preference to choose your own default transform mode. The transform mode could be a "sticky" setting that is remembered between sessions.

@RodneyBaker
Copy link
Collaborator

RodneyBaker commented Dec 9, 2019

I hesitate to answer because the foundation has not yet been laid upon which to build but...

Yes, as originally proposed manipulators would be visible that allow the various transforms. (see Ballerina image posted above)

I will guess the entirety of transform options would not appear until a mouse/pen click enabled that view however. Then the current state of the transform could be persistent (or revert back to default) based on user preference. In this way the user could override position as the default say with 'rotate' and not have to keep reselecting it. (assuming they were focused on rotating things). This also would be the moment where the state is recorded for undo purposes so that any transform change can be walked through forward/backward via undo/redo.

Personally, at this point I'd rather have a preference to choose between either a "widget view" or "selection box view". Otherwise there is a potential for this to get a bit too busy visually.

Don't sweat the UI too soon. UI discussions never end but be confident that this will be resolved to general satisfaction based on optimal workflow and of course EVERYONE will be ecstatically happy with the end results. Since we living in the dream for this feature we can write how the dreams ends. :)

I'd really like to have some way for the "all mode" to be the default transform mode.

Perhaps that might be a good start to this project... our first Milestone to hit!

  • Feature Request/Milestone: Add Preference for default Transform mode in Edit/Animate Tool.

Then we can head off any objections to what gets implemented next.

@RodneyBaker
Copy link
Collaborator

@caryoscelus Can we confirm this feature enhancement is slated for 2020 development cycle.
This to help others understand not to expect seeing it in the v1.4 release?

@caryoscelus
Copy link
Contributor

@RodneyBaker yes. I'll try to and there is a chance i will find enough time to work on it in the remaining days, but it's better to not rely on that

@RodneyBaker RodneyBaker changed the title (WIP) Add "Free Transform Tool" Add "Free Transform Tool" Feb 26, 2022
@RodneyBaker
Copy link
Collaborator

I must assume this effort is not an active work in progress so have edited the title accordingly.
@Agnyy Please feel free to further adjust the title as necessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants