Bezier curve editor

   2933   19   13
User Avatar
Member
34 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)

Attachments:
hou_bezier.gif (1.3 MB)
ie_pen_tool.hdalc (46.9 KB)

User Avatar
Member
184 posts
Joined: July 2015
Offline
Very nice! The initial amount of features is great Keep going!
Manuel Köster - Technical Procedural Artist @Crytek

crytek.com
shadesoforange.de
User Avatar
Member
4189 posts
Joined: June 2012
Offline
Nice work. Out of interest, what was the development time for this?
User Avatar
Member
260 posts
Joined: May 2016
Offline
this is awesome, one of the things I miss from Cinema4D is its Bezier curve handles.
User Avatar
Member
159 posts
Joined: Feb. 2018
Offline
That's amazing, even can move multiple points simultaneously.
Edited by EricSheng - Sept. 1, 2020 02:25:46
User Avatar
Member
34 posts
Joined: June 2019
Offline
goat
Nice work. Out of interest, what was the development time for this?

Thanks! It's like a side project so hard to say. It took around a week working part-time to get to this state.
User Avatar
Member
493 posts
Joined: Dec. 2006
Offline
Great work!
https://vimeo.com/user43923185 [vimeo.com]
https://gumroad.com/alexeyvanzhula [gumroad.com]
User Avatar
Member
519 posts
Joined: Feb. 2017
Offline
so is it for now always ‘flat’ on the ground ?

ahhh…'on a plane' implies flat i reckon.
Edited by vusta - Sept. 22, 2020 06:46:57
User Avatar
Member
3 posts
Joined: Jan. 2019
Offline
Yup, bezier handles are nice, great job!
Think for yourself or someone else will.
User Avatar
Member
447 posts
Joined: Feb. 2013
Offline
This is great, have you made any progress on this?
User Avatar
Member
34 posts
Joined: June 2019
Offline
DASD
This is great, have you made any progress on this?
Yeah, almost done as usual the last 10% of work is the most time consuming.
User Avatar
Member
260 posts
Joined: May 2016
Offline
one of the things I miss from C4D is its bezier curve editor. this looks great.
User Avatar
Member
34 posts
Joined: June 2019
Offline
It's almost done.

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.

Attachments:
multi-prim.gif (343.7 KB)
append-prepend.gif (264.4 KB)
prim-snapping.gif (6.8 MB)
sops.gif (4.7 MB)
box-editing.gif (2.7 MB)

User Avatar
Member
34 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.
Edited by elovikov - Jan. 15, 2021 16:43:45

Attachments:
ie_pen_tool.hdalc (161.3 KB)

User Avatar
Staff
222 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 ?
Edited by mabelzile - Jan. 15, 2021 19:54:36
User Avatar
Member
34 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
Edited by elovikov - Jan. 16, 2021 08:58:32
User Avatar
Member
1 posts
Joined: Dec. 2016
Offline
Thank you so much. This is really a great tool. I hope you'll develop it further.
User Avatar
Member
1 posts
Joined: Feb. 2021
Offline
Big thx to you! Nice work! It's looks awesome!
Edited by PippaChapman - Feb. 26, 2021 02:57:10
User Avatar
Member
1 posts
Joined: Nov. 2018
Offline
can you release it as hda ,where do i need to throw money at ?
User Avatar
Member
6695 posts
Joined: July 2005
Offline
Amazing, as an ex Softimage 3D user, I've waited 25 years for this
  • Quick Links