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

Use subgizmos for Path3D position editing and declutter the UI #87901

Conversation

pohy
Copy link
Contributor

@pohy pohy commented Feb 3, 2024

Implements 3-axis gizmo translation of 3D curve points.
As well as "contextual" displaying of handles. In an attempt to declutter the UI.
Inspired mainly by Blender and Affinity Designer's curve editing UX.

The proposal (godotengine/godot-proposals#527) has accumulated many ideas, this PR aims to be a step towards improving the 3D curve editing UX and does NOT intend to satisfy everything mentioned in the proposal.

This PR:

2024-02-03_15-48-54.mp4

4.2.1:

2024-02-03_15-51-16.mp4

@pohy
Copy link
Contributor Author

pohy commented Feb 4, 2024

Implemented frustum intersection (region selection) and grouping of undo/redo for multiple points into a single action.

Undo/redo withOUT grouping:

2024-02-04_16-20-26.mp4

Undo/redo with grouping:

2024-02-04_16-18-44.mp4

@pohy pohy force-pushed the feat/use-subgizmos-for-path3d-position-editing branch from 4c967a0 to 947580d Compare February 4, 2024 16:35
@FabriceCastel
Copy link

Thanks for implementing it! This is a huge UX win for those of us that make use of Path3D nodes 🙌

@fire fire requested a review from a team February 13, 2024 02:33
@TontonSancho

This comment was marked as off-topic.

Copy link
Member

@Calinou Calinou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested locally, it works as expected. This is a great usability improvement 🙂

simplescreenrecorder-2024-02-20_18.44.44.mp4

Multiple points editing (Shift + click or use box selection to select multiple points):

simplescreenrecorder-2024-02-20_18.45.35.mp4

Undo/redo works correctly.

We may benefit from contextual "select all", "select none" and "invert selection" shortcuts in the future that could work on node selections, but also subgizmo selections like this one. This can be useful to move all points in a curve without changing the Path3D node's coordinates.

@akien-mga akien-mga modified the milestones: 4.x, 4.3 Feb 20, 2024
@akien-mga
Copy link
Member

After making the style edits requested above, could you squash the commits? See PR workflow for instructions.

@pohy pohy force-pushed the feat/use-subgizmos-for-path3d-position-editing branch from 4b35d67 to 6efff2c Compare February 22, 2024 21:33
@pohy
Copy link
Contributor Author

pohy commented Feb 22, 2024

Thanks for the review! Implemented the style edits and squashed the commits.

@akien-mga akien-mga merged commit 031ca87 into godotengine:master Feb 22, 2024
16 checks passed
@akien-mga
Copy link
Member

Thanks! And congrats for your first merged Godot contribution 🎉

@jejopl
Copy link

jejopl commented Feb 24, 2024

Not sure if it'e because this PR, but on the latest master branch, the secondary handles in/out are not there.

Nagranie.z.ekranu.2024-02-24.o.12.23.42.mov

@pohy
Copy link
Contributor Author

pohy commented Feb 24, 2024

@jejopl Well, yes. That is a tradeoff so that you can select the curve points. The in/out handles were overlapping the curve point subgizmos and preventing the subgizmo selection.
You can "drag out" the handles in the inspector, for now.
Thanks for the video. We should likely display the in/out handles when the "Select Control Points" mode is active.
I will try to look at this issue within the upcoming week.

@GreenCrowDev
Copy link
Contributor

Not sure if should discuss this here or in another proposal, but this seems to prove that Select Points mode and Select Control Points are too similar, and in general Path3d editing needs to be refined.

I will mention here my proposal to implement another mode for tilt handles, as this seems imo the right direction to declutter the viewport handles: godotengine/godot-proposals#8890

Regarding the specific issue of @jejopl, I was thinking that maybe while Select Control Points mode is active, the 3d gizmo should be disabled, and only available in Select Points mode.

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

Successfully merging this pull request may close these issues.

8 participants