Curve repeater and tube UX integration ideas.. AKA TUBE NEEDS TO DIE

Some ideas that I like to discuss.

Nomad has 2 different 3D curves systems (tube and the curve repeater node) and there’s no reason for it.

Simplicity is a key strength in nomad so why not to simplify?

The idea would be to remove the tube object (primitive) and everything be a curve node

But how?

Inside a node you could trow any object and the curve would behave as a repeater, which is the current behavior.

Then it could be created a new primitive called “profile"

Then when created alone it would serve as an editable shape which could be by itself helpful in many situations.

But when placed inside a curve the profile primitive switches automatically its behavior to a curve profile.

It would allow 1 curve to have many different profiles and instances always following the same path a thing that is impossible today.

But this won’t make nomad less beginner friendly?

The answer is not necessarily.

The tube tool could still exist beginner friendly as it is but when you create a tube, in the background the application would create a curve node with a round profile.

The profile edit option on the top bar would reference always the profile object selected.

It would open dozens of creative possibilities while integrating tools that do the same job making the UX/UI way more efficient.


The main points of repeaters relying on hierarchy are:

  1. repeating all the children hierarchy as is, not just a single mesh (no need to join everything)
  2. allowing nested repeaters

Point 1. is important (best to group the children to keep the same pivot though).
Not sure Point 2 is used widely (maybe with Mirror), but it works.

However “sweep/revolve profile” (tube/lathe) only makes sense if they are direct children of a curve repeater node, and if they don’t have any children.
So they are not really 3d “nodes” since they are not impacted by transform.

The whole drag n drop thing would be limited (only to direct replacement to another profile or simply child of a curve repeater, thus enabling tube/lathe).

Sorry man, I just have read your answer at least ten times and in couldn’t fully understand it.

I will summarize my points


1 - PROFILE PRIMITIVE ( maybe with an extrude/thickness option)

Pros - would be great to use the profile editor tab to create shapes(planes) also could be very useful for many situations like creating more intricate Boolean objects.

2 - Make the tube and the curve reapeater UX Wise the same thing.

Pros - it would allow to create an hierarchy of many objects, with different pivots even, to follow dinamically the same curve in a simple way to understand.

A practical exemple.

I’ve created a tube and give it a flat profile to make the belt

I’ve copied the tube change the profile to Match the first tube border, made a shape and used the twist function to create this twisted ornament

Then I used the curve (repeater) option on the tube parameters to create a curve repeater which i used to place those rings along the belt.

The problem is: all this 3 objects are 3 different curves, and if I want to change the belt shape I need to delet all but the main curve and create the ornaments again from scratch.

I already got it the first time, you want to share the curve or share profile that’s all.

What I’m saying is that the profile are 2d stuffs, not 3d stuffs.
Everything in the scene tree is 3d.

The profile only makes sense for curve repeater, so why should it be a thing in the tree that you can drag everywhere?
Think about mesh material, if I were to expose a way to share material between 2 meshes, would you expect:

  1. a material node in the tree that you would need to instance and then drag under the mesh
  2. simply going inside the material menu and have a material selector

With your solution, the profile ONLY makes sense if it’s a direct child of a curve repeater. I’m not convinced it should be a node.

The idea would be to make the profile an object with 2 different behaviors.

ONE behavior when its outside a curve repeater where it could be a profile plane or a profile extrusion object.

And a behavior when its inside a Curve repeater where it would behave as a curve profile.

The alternative, having in mind the solution for that exemple that i posted would be:

1 - A way to instance curves wich i think would clutter the scene menu.

2 - A way to add multiple profiles to 1 tube object
( a profile stack option inside the profile editor maybe?)

All this alternatives that i could think of has its own limitations and drawbacks.

For 1. you can already instance curve (repeater).

One thing that is not clear is what’s instanced and what’s not.

  • For sure: curve type + point position + sharp point + spirale
  • radius?
  • twist?
    Or maybe some overridable option (too complex?)

As for 2. part of the issue can be solved by allowing disconnected curve in the profile editor.
If I want to support SVG or “profile from alpha” I would need to support it anyway.

Otherwise still not convinced that the profile should live in the scene tree.
(the order could be inverted as well, profile as parent. Same arguments could be made with repeaters though)
I’ll need more feedbacks from more users.

Ha! I would like to add my 3000 suggestions to this post, with the same suggestions I have been annoying Stephane forever :joy:.

You can easily find all posts on discord - search term: curve + path :grinning:

Then the extract to curve repeater button was added.
But we are NEVER satisfied😁.

1 Like

I think all of the curve properties are important to be inherited by the instance, cause one of the major purposes would be situations like i exemplified above.

A way to overwrite some of the properties would be really welcomed and if implemented ellegantly would not add too much complexity.

I suggest a different button color or a warning (maybe a small letter “I”) closer to the button in the curve options (twist, radius etc) top bar indicating that specific propertie is being instanced across all curves. A single pres would change the mode in all instances and maybe by pressing and holding that specific option could be overrided in that specific curve instance.

And of course this instancing would need to work with the curve repeater as well.

Just throwing some ideias.

All good ideas but I’m starting to get a bit worried some users might get lost when the UI gets filled up with features and options. Right now Nomad has the most intuitive and versatile curve interface I’ve see so far in any app including desktop (except maybe Softimage :stuck_out_tongue: ). I hope that doesn’t change.

New features are inevitable. I like to believe that this discussions can help steph to integrate them as seamless as possible and keep nomad this great app.

1 Like

I can definitely see the benefits of a curve node (group) with all children, tubes, repeaters, etc. being defined by top hierarchy curve - maybe certain curve line functions (eg. adding/moving curve points and close loop) to any tube or repeater in group are disabled just scale and twist still active…?

New features are inevitable. I like to believe that this discussions can help steph to integrate them as seamless as possible and keep nomad this great app.

fair enough!

solutions should consider the possible addition of a “curve deformer” too that might get added in a future release

I used some curve repeater & tube combinations in here:

Nothing fancy, Leo’s belt example is more difficult.
But I was struggling as well. Mostly because of Leo’s already explained problems of separate curves.

In my simple brain, it works like following taking Leo’s example.
Leather stripe Tube in scene menu.
Torus in scene menu.
I drag torus onto tube to make it a child.
Pop up ask if I want to use this tube as an linked curve repeater node as well?

Now both curves are linked.
Tube and repeater do share same points, but twist and radius can be controlled individually if you want. When hitting radius in linked repeater, you are asked “unlink radius?”
You still can move objects.
Same with different tubes.
You can link them in hierarchy.
Still individual menu.
Everything is shared. Twist and radius as well, as long as you don’t unlink.
Maybe a link symbol in menu for twist and radius?

Here a stupid example.
(Funny, I discovered a bug? If tube is in hierarchy, there is no on screen tube menu.)

Same could be done vice versa.
Existing curve repeater node.
Draw tube, drop on repeater in scene.
Link? Yes.
Twist and rotate? Yes.
Curve is taken from repeater.

You can always unlink later. All linked options are copied.

Some other tiny things which made the job more difficult as necessay.

I wanted to place spheres directly where needed on tube. But with insert tool active, curve editing is also possible. This collides a bit.
But I need more practise. I found zooming in helps. :sweat_smile: :vulcan_salute:

just something I noticed while playing around with curves - Wouldn’t it be better if twist was around profile (0,0) instead of the geometric center of the profile points? I think it would allow more control.

I have been explaining these suggestions since the introduction of the Curve repeater, but it does not seem to be possible at the moment or desired.

Every time I address the Curves is the answer - PLEASE ONLY BUG Reports :joy:

Most problems would be solved automatically if you could extract each curve into an INSTANCE of a curve via the … popup menu. EXTRACT TO - TUBE CURVE / LATHE CURVE / CURVE REPEATER.

The same applies to trim or split curves.

But it must be an INSTANCE NOT a CLONE of the other curve.

But it doesn’t seem to work, some curves are 2D (I think) - and I always thought the curves were all the same, like a 3D vector path, but apparently it’s not so simple.

Yes Lathe is 2D so this is not that straight forward. I think the main problem is that this is quite deep in DCC territory already and without a scene graph (node) UI, every feature wish requires some really creative UI idea to make it fit into the simpler interface (scene graph I don’t see as an option for a mobild app btw!)

Maybe best is use this thread as a big idea dump and then collect the puzzle pieces & see what’s possible to place.

You have multiple object selected that’s why (I could still give functional priority to the main selection though)

1 Like

It will easily create ugly distortion, for example an off-center uniform twisting will give similar result than spiraling, but the tube will be heavily skewed. Not really usable.

I could offer per-point spiraling, but it starts to be a bit complex.
Ideally I’d like to offer alternative to spiraling, like braid-like rotation.

Spirale impacts the curve itself.
Twist and radius impacts the thing generated (either the tube shell or the node repeat transform)

It would work but it’s an entire different approach than the one explained above.
The problem is that even if I burry the thing inside the Debug menu you wouldn’t bat an eye and would still use it, you don’t care about the UX part.

2d/3d isn’t really relevant here.
The question is the UX, especially on how the scene tree is impacted/handled (or not).
That’s the only thing I care for now.

Actually it’s 3d! But I project it on a plane, that’s the important part.
So you can see the troubles emerging when shared with non-constrained 3d curve (tube/curve repeater).
The tube profile is in 2d, but I could change it be in 3d.
But these kind of details are not the main issue, what I need to decide first is the UX regarding the scene tree.


The problem: Sharing 3d curve, between tube, curve-repeater, maybe lathe/profile and other stuffs.

1 Like