Bezier curve editor
16973 34 15- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
Hi!
I'm creating this sop which gives you a way to edit curve with more familiar ux.
Right now it's working only on construction plane so the main use case would be creating cross-sections or any other custom shapes on a plane. But the ultimate goal is making a much more universal tool. Currently I'm adding a support for full 3D and builtin Houdini handles and also working on the ability to add and visually edit arbitrary attributes on anchors (at least Cd, orient and pscale). I want to create a tool that you can use wherever you need some artistic input for sweeps, curve forces, attrib transfer geo etc
Current features:
- Tied/Untied handles (Ctrl + dragging handle)
- Corner/Smooth anchor (Ctrl + click on anchor)
- Symmetric handles (Shift + dragging handle, also ties untied handle)
- Multiselection and multi-edit (Shift + click on anchor to add to selection. Currently supports only moving or deleting multiple anchors)
- Ctrl + Shift + click on anchor deletes anchor. Also Del (Cmd + Backspase on OSX) deletes all selected anchors
- Builtin Houdini snapping on grid also supported
- Undos are mess right now but working in a way (just doesn't work well between separate entries in the state)
It's a state tool so to create a curve just add “IE Pen Tool” sop and hit Enter in scene view. Any click on construction plane append an anchor to the curve (can be little confusing with closed curves as it adds before the first anchor). Click on a curve itself also add an anchor in the corresponding position - the green point on hovering indicates this position.
The output is bezier prim so you'll probably need to convert it to poly (not all sops supports bezier)
I'm creating this sop which gives you a way to edit curve with more familiar ux.
Right now it's working only on construction plane so the main use case would be creating cross-sections or any other custom shapes on a plane. But the ultimate goal is making a much more universal tool. Currently I'm adding a support for full 3D and builtin Houdini handles and also working on the ability to add and visually edit arbitrary attributes on anchors (at least Cd, orient and pscale). I want to create a tool that you can use wherever you need some artistic input for sweeps, curve forces, attrib transfer geo etc
Current features:
- Tied/Untied handles (Ctrl + dragging handle)
- Corner/Smooth anchor (Ctrl + click on anchor)
- Symmetric handles (Shift + dragging handle, also ties untied handle)
- Multiselection and multi-edit (Shift + click on anchor to add to selection. Currently supports only moving or deleting multiple anchors)
- Ctrl + Shift + click on anchor deletes anchor. Also Del (Cmd + Backspase on OSX) deletes all selected anchors
- Builtin Houdini snapping on grid also supported
- Undos are mess right now but working in a way (just doesn't work well between separate entries in the state)
It's a state tool so to create a curve just add “IE Pen Tool” sop and hit Enter in scene view. Any click on construction plane append an anchor to the curve (can be little confusing with closed curves as it adds before the first anchor). Click on a curve itself also add an anchor in the corresponding position - the green point on hovering indicates this position.
The output is bezier prim so you'll probably need to convert it to poly (not all sops supports bezier)
- shadesoforange
- Member
- 201 posts
- Joined: July 2015
- Offline
Very nice! The initial amount of features is great Keep going!
Manuel Köster - Senior Technical Artist @Remedy Entertainment
https://www.remedygames.com/ [www.remedygames.com]
http://shadesoforange.de/ [shadesoforange.de]
https://twitter.com/ShadesOfOrange_ [twitter.com]
https://www.remedygames.com/ [www.remedygames.com]
http://shadesoforange.de/ [shadesoforange.de]
https://twitter.com/ShadesOfOrange_ [twitter.com]
- anon_user_37409885
- Member
- 4189 posts
- Joined: June 2012
- Offline
- bobc4d
- Member
- 327 posts
- Joined: May 2016
- Offline
- EricSheng
- Member
- 159 posts
- Joined: Feb. 2018
- Offline
- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
- Alexey Vanzhula
- Member
- 538 posts
- Joined: Dec. 2006
- Offline
- vusta
- Member
- 555 posts
- Joined: Feb. 2017
- Offline
- teotigraphixllc
- Member
- 3 posts
- Joined: Jan. 2019
- Offline
- DASD
- Member
- 453 posts
- Joined: Feb. 2013
- Offline
- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
- bobc4d
- Member
- 327 posts
- Joined: May 2016
- Offline
- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
It's almost done.
Current version features:
Multi-prim workflow. You can create multiple prims on one node
Appending and prepending to curve depending on selected control
Editing handles on multiple anchors
I've decided not to create custom geo intersection. Instead tool supports all built-in snapping options (except multi-snapping) on visible geo including templates.
Self-snapping is also possible.
Out of the box it's ready for many built-in sops. Sweep, Chain, Revolve, Path Deform etc. I'm also working on custom POP force and Gas microsolver to support this custom curves better.
Current version features:
- Supports different projection modes. I've tried to repeat Curve Sop and Draw Curve Sop so it would feel the same. It basically works in screen plane if construction plane is disabled. If it's visible the construction plane has priority. Apart free mode it has projections on coordinate planes
- Multi-prim workflow (multiple prim inside one context)
- Group transforms via bounding box handle
- Builtin scale and orientation editing (exports @pscale, @N and @up)
- Any number of additional attributes with interactive editing
- Supports builtin Houdini snapping on visible geometry. So you can "draw" on surfaces or snap to other points.
- Visual guides
- All primitives has @name attribute (can be changed in toolbox) to support grouping downstream
- It outputs bezier and resampled polyline. Though bezier is mostly for internal purposes I would recommend using only resampled output (the second output)
Multi-prim workflow. You can create multiple prims on one node
Appending and prepending to curve depending on selected control
Editing handles on multiple anchors
I've decided not to create custom geo intersection. Instead tool supports all built-in snapping options (except multi-snapping) on visible geo including templates.
Self-snapping is also possible.
Out of the box it's ready for many built-in sops. Sweep, Chain, Revolve, Path Deform etc. I'm also working on custom POP force and Gas microsolver to support this custom curves better.
- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
I'm currently polishing the last bits and help page. Hopefully can be completely done by the end of the month.
I'll make it available on github if I figure out how to make my own package. Apparently indie hdas can't be loaded in other licences and I don't know yet how do I make it publicly available for anyone.
This is my first hda so may be I'm not following the best practices.
Current version is available in attachement.
I'll make it available on github if I figure out how to make my own package. Apparently indie hdas can't be loaded in other licences and I don't know yet how do I make it publicly available for anyone.
This is my first hda so may be I'm not following the best practices.
Current version is available in attachement.
Edited by elovikov - Jan. 15, 2021 16:43:45
- mabelzile
- Staff
- 445 posts
- Joined: Feb. 2018
- Offline
Nice work! It looks like you coded your own mouse hovering mechanism ? FYI, there is a new gadget support in H18.5 for python states. A gadget is a specialized geometry drawable you can use to support mouse hovering and picking in your state. All the geometry intersection is done by Houdini, so you don't need to do it yourself. Check out this demo scene $HH/viewer_states/examples/state_gadget_demo.hip. Dynamic gadget registration is not yet supported however, you need to know the number of gadgets you need at registration time. I will add dynamic gadgets to python states in the next release.
Did you consider porting your bezier curve controls to python handles ?
Did you consider porting your bezier curve controls to python handles ?
Edited by mabelzile - Jan. 15, 2021 19:54:36
- elovikov
- Member
- 130 posts
- Joined: June 2019
- Offline
Thanks mabelzile!
Yeah, I saw new features in 18.5 - they're awesome. The thing is that I've started on 18.0 so I basically just created the same thing. I've tried to use gadgets but the tool was already relies too much on my custom controls. Also I kinda stuck when I had to implement multi-selection and draw located, selected and picked point at the same time.
The same with handles. Currently controls are just very tightly integrated in state. It's probably a good idea to decouple them from the state logic but not sure if it's worth it.
Anyways I'd definitely do it differently if I started now with 18.5. It's nice to see that states are evolving, really enjoyed to work with them
Yeah, I saw new features in 18.5 - they're awesome. The thing is that I've started on 18.0 so I basically just created the same thing. I've tried to use gadgets but the tool was already relies too much on my custom controls. Also I kinda stuck when I had to implement multi-selection and draw located, selected and picked point at the same time.
The same with handles. Currently controls are just very tightly integrated in state. It's probably a good idea to decouple them from the state logic but not sure if it's worth it.
Anyways I'd definitely do it differently if I started now with 18.5. It's nice to see that states are evolving, really enjoyed to work with them
Edited by elovikov - Jan. 16, 2021 08:58:32
- fnahon
- Member
- 2 posts
- Joined: Dec. 2016
- Offline
- PippaChapman
- Member
- 1 posts
- Joined: Feb. 2021
- Offline
- Morphtek
- Member
- 16 posts
- Joined: Nov. 2018
- Offline
- pbowmar
- Member
- 7046 posts
- Joined: July 2005
- Offline
-
- Quick Links