Open nonunknown opened 4 years ago
I support this proposal, moving path nodes is currently too error prone when you only want to go in one direction. I think the
Related, it would also be helpful if the colour of the in/out control handles (I think that's what they're called, the extra two handles you get per point when you shift-click and drag it) could be a different color to the point location handle itself. In a path with many points it's hard to tell which handles are which. Either that, or a line joining them to the main point position handle. The 3 Axis handle proposed above would presumably be also added to these two control handles as well?
I support this proposal, moving path nodes is currently too error prone when you only want to go in one direction. I think the
Related, it would also be helpful if the colour of the in/out control handles (I think that's what they're called, the extra two handles you get per point when you shift-click and drag it) could be a different color to the point location handle itself. In a path with many points it's hard to tell which handles are which. Either that, or a line joining them to the main point position handle. The 3 Axis handle proposed above would presumably be also added to these two control handles as well? I didnt understood well, can you use a image?
I've realised I was slightly wrong, there are already lines, they just can't always be seen.
So, in the path pictured below, I have shift-clicked on the middle point and dragged outwards, this adds two new handles (joined with a feint grey line to the point) which control the in/out curve to that point :
As you can see, both additional handles are the same colour as the original point handle (a kind of red/pink). Now, in my app, I'm using a CSGPolygon with pathfollow to attach a roadway to the path :
As you can see, the grey lines that join the in/out control handles to the main point handles are no longer visible (which is why I initially stated it would be nice to have lines!), and all of the handles are the same colour. So at a glance, it's hard to see which handle is which, and I frequently adjust the wrong one. So it would be nice if the handles were different colours, and perhaps the grey lines had a thin outline so they could be seen against a grey background.
But to relate it back to your proposal, it would be good if these additional in/out handles also had the 3axis gizmos on as well.
Adding further wishes for this. Both drawing debug lines ontop of geometry and the 3 axis.
Also adding the ability to affect the line tilt in editor would be good. It's already a feature of bezier curves, but it isn't exposed.
This would let beziers be a much more complete solution to in game content creation.
A few thoughts:
And two additional requests, which may or may not belong in a separate issue:
@rcorre Nice additions, Fully agree with you!!!
Closed loop editing. When you click "close loop" while editing a path, it adds a final point in the same position as the first point. This is fine until you try to edit that point and end up breaking your loop.
I guess this requires adding a closed
property to Path3D? We'll also want to do the same in 2D for consistency.
I'd like to see numerical fields for precise editing of the values for both the points and the handles. It would remove a lot of tedious minor edits that are required to try and get placement and orientation exactly how you want it. I've been trying to create a path that follows a curve around exactly 90 degrees - no matter what I do to the last point I can't get the rotation to come out at 90 degrees to the starting point and have to script in a correction that wouldn't be necessary if precise editing was possible.
https://github.com/godotengine/godot-blender-exporter/pull/380 is merged. It is now possible to export bezier curves from blender using godot-blender-exporter
.
One more thing that path3D needs, apart from visual tweaks to the gizmo and a snap to collider option, would be axis constraints which would prevent placing the point in the wrong position in the first place. The Waterways addon has managed to implement those: https://github.com/Arnklit/Waterways/blob/main/addons/waterways/water_helper_methods.gd
As https://github.com/godotengine/godot/pull/50748 subgizmos was merged, Godot Engine 4 has all the things needed to add this.
Agree with much of this thread. @balloonpopper I was so frustrated with working with curves, I ended up making a plugin to get that precise editing panel (demo here; will reply back to that twitter thread once I release source code for it). I think this is a quite critical functionality to have in core.
Something else to add to this conversation, and pairs with this idea of a precise editing xyz box, is a concept of an "active point". Similar to how there is an active object, it would be nice if we could click into a curve to edit and select points. This way, gizmos could be added only to one point at a time (having gizmos appear on all points all the time would be a lot of visual overload), plus it also allows for a concept of selecting in and out handles in addition to the position point. I realize that introduces an entire other editing state which is a layer on top of what is there today, but maybe something like a tracker for the last interacted with point just ends up setting some reference index variable?
It is not Wednesday my dudes, and I did a thing (for Godot 3). My addon CustomPathGizmo is now live on the Asset Store! It has several features from this thread:
A small difference is that translations snap to 0.1 by default. I don't know how to read from the Transform > Configure Snap
, so I had to assume a small value. The addon technically could be made to work withou snap, but this will require a refactoring I'm not going to do since I had plans to use this addon with another addon.
Should mostly work fine, but do report bugs if you find any.
no matter what I do to the last point I can't get the rotation to come out at 90 degrees
Yeah I think there's something wrong as well. Setting tilt to X degrees does not rotate an object following a PathFollow exactly X degrees. It gets close enough, but not exactly there. This addon doesn't solve that.
Is there interest in me porting this to be in core Godot Engine?
Edited: It may already be implemented.
https://github.com/godotengine/godot-proposals/assets/32321/0e51a4d9-4a5a-4cb7-9814-ea22ec2bea59
@fire That's a huge improvement, i'd love to see it in.
The latest Godot Engine 4.2 builds should have this better 3-axis gizmo for paths.
What @fire is showing isn't 3-axis gizmo movement (see OP for what's expected), it's tilt handles. This proposal is still not implemented as of 4.2.
Hey y'all. This is a HUGE paint point for me in my current project, and I can't really wait around until this makes its way to core so I wrote up a very, very rough plugin to help work around this issue here: https://github.com/FabriceCastel/better-path3d-gizmos
It does just enough to get the job done for me. I'm not planning on doing any fixes/improvements/etc to this plugin, but if anyone wants to push that I don't mind going over pull requests or letting anyone just take what I've got and build something better on top.
Hope this helps.
@FabriceCastel Would you be ok if I ported it to c++ core?
Yeah sure thing @fire 👍
Describe the project you are working on:
A 3D Platformer
Describe the problem or limitation you are having in your project: Working with Paths, For example if I want to move a point only in X Axis, or Y Axis, I simply can't even if I could adding a 3Axis Gizmo would really help
Describe the feature / enhancement and how it helps to overcome the problem or limitation: The solution is adding 3Axis Gizmo like you do for moving Spatial Nodes!
Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams: Before:
After:
If this enhancement will not be used often, can it be worked around with a few lines of script?: I think its possible to create a plugin that lets you do that, but in my vision this really needs to be core feature!
Is there a reason why this should be core and not an add-on in the asset library?: Basic Functionality