“Symmetry” command for NURBS objects

Could the “reflect” command be made available for single NURBS objects?

Best regards!


mirror with history would be the best we can offer right now-

I’m talking about making the CVs of a NURBS-Object symmetrical across a Plane.

For example: If a curve has 4 CVs and I move the 2 CVs on one side of a Symmetry-Plane, the other 2 CVs jump into an exact “mirrored” position of the first 2 CVs.

As far as I know, the “mirror”- command can not do this. The Rhino “Symmetry”-command is also NOT doing this.

The “Move UVN”-command also does not create symmetry, it only moves the relative CVs (with Symmetry-option checked).

The new “Refelect”-Command has this behavior, but only for SubD-Objects.

So is it possible to make the (already existing) “Reflect”-command available for NURBS-Objects?

Best regards.

1 Like

do this-
turn on history and update children in the history box at the bottom of the screen.

make a curve somewhere in proximity to the origin.
mirror it to the other side of the origin, now move the original or some points on the original.

does the mirrored curve not respond as expected?

Will using “mirror” the way you describe, result in 2 Curves/Surfaces?

yes, they will then update with history if you modify the original, the copy will follow-

It should do it though, right? If I’ve understood the problem right?

I see your point. However having 2 Objects is exactly what I’m trying to avoid.

When working with surfaces that get refined over and over to meet certain technical and athetic requirements, experience shows the risk is high to improve criteria A while accidentally breaking criteria B.

Symmetry is a perfect example for this. Tweaking a Surface for required overcrowing and highlights, you break G3 continuity.

By building ONE Surface across a Symmetry-Plane and aligning the CVs “mirrored” across the plane, this can never happen.

Having 2 Surfaces makes tweaking far more difficult, maintaing all requirements. With complex topologys, this is sometimes nearly impossible to fix.

Using CV-Symmetry, you get G3 Continuity for free!

When you mirror your finished model (for symmetrical models I only built one half) you will ALWAYS maintain perfect G3 continuity across the middle:

1 Like

I see. What are you building that you need g3 for?

1 Like

It’s a customer requirement I have to fulfill.

Until now I do this by hand. I extract the CVs as points, mirror half of them and snap the other CVs to the mirrored points. Its a tedious process that you have to do over and over again for every little adjustment you make…for EVERY Curve and Surface that requires symmetry.

Unfortunately there seems to be no interest for such a tool.

Rhino offers G4 blends for curves as well as surfaces, but has no proper way of maintaining and controlling an objects MAIN symmetry.

What is the reason behind that?

Here’s an example of such a tool:


This manual process should be a dead simple thing to fix, either through a separate plugin (command, "ReflectUVN… kinda mode) or built into native Rhino when modifying a CV, which in either case would do exactly what you describe after each move with the mouse or after a nudge of a CV.

I have tried something similar, not for maintaining curvature, but by drawing a “guide curve” with the same degree as a nearby surface where the nearest edge of the surface would snap to the CV (“grips” in C# lingo) of the curve.

A coffe-break leisure task for any of the McNeel gurus.

I’ll see if I can find the old post where this is demonstrated (but snapping grips/CVs to mirrored points isn’t rocket science and so by reading your post it’s possible that @pascal, @steve or @dale already have something cooking for you which would be doing just this). :wink:

There could of course be unknowns involved which I couldn’t foresee, but it seems to me that in cases where the mirroring of the CVs is simply assumed to be based on mid-surface in a selected U or V direction, it should be possible by simply §1 activating MoveUVN and §2 tick either of two options “Mirror U” or “Mirror V” (and N, either implicitly or explicitly(?).

Did I get that right?

// Rolf


I dont believe it until I see it haha :smiley:

It problably would be pretty simple to fix, since the Reflect command already does exactly that, but only for SubD objects…

Symmetry to World plane/Construction plane would be sufficient for me.

I don’t think the plane inclination would make it any more difficult to achieve.

Question: Would it be useful in a situation like this - when a CV or a row of CV just has been moved, to simply press a button somewhere in order to “mirror” the arrow-marked CV’s to the same distance from the surface as the selected CV’s? (I intentianally drew the surface somewhat tilted, assuming that the resulting plane after moving the arrow-CVs would have the same plane-tilt as the four corners of the surface would indicate in this case)

I’d love to try this, but at the moment I don’t have the time. Perhaps next week. If someone else tries it before that I won’t be disappointed… :slight_smile:

// Rolf

I dont quite understand what you are trying to achieve. The perspective you show “feels” like a sideview to me.

Pressing a button to create symmetry is absolutely fine!

What I mean by symmetry is actual Y=0 symmetry:

I thought of two buttons to press (ReflectU and ReflectV), so the surface can be oriented any way. It wouldn’t matter if it would be tilted either (it’s not more difficult to make it work no matter how it is tilted/rotated).

I mean, if rotating and tilting your model (pictured) in any direction wouldn’t be harder to Reflect than if it is oriented in WorldXY as in your picture. Only thing would be to press the correct button so that mirroring would occure along U or V direction. Shouldn’t be any problem to achieve.

// Rolf

I see where you are going.

Given a relative parameterization by arc length, do you reflect your CVs around the 0.5 parameter ?

The problem with the dual approach is, that you never know which direction is U and which one is V. This is the same catch with the Move UVN Tool.

Using a plane, U or V do not matter, as the plane and its positive and negative normal directions define how the CVs are divided.

I was thinking of that, yes. If one sets the surface in “ReflectMode” before starting to edit, one can show U and V indicators, which should be done in the MoveUVN dialog as well (if they haven’t fixed it by now, I haven’t used it for a while).

ANyway, by pressing ReflectU or ReflectV one could more freely use the command with less “set up” for the command to work, just do it, in whatever direction. And as said, inclination shouldn’t matter either since the command would have to (invisibly) set up a plane to project the copied points against anyway, and… well, you did it manually so you know how it’s done. In code its easier to do all kinds of things (I’m in a meeting now so I have long pauses here…).

// Rolf

I would love to see some improvement to the Move UVN tool! It could use an overhaul!

Indicators are necessary. Good Idea!

I dont understand how to achieve “world symmetry” if your system creates relative symmetry, using the surface itself as a reference.

Well, if you absolutely would like to have world symmetry, then no problem with that. It only surprised me that you would bother care about where you do you Reflect. I assumed that you would like to do it anywhere. If I have the time I will try make this command, but I would start with “Relative” symmetry and add World symmetry as well.

BTW, if the mid-surface is on Y (0), as you illustrated above, then the mirror axis is still essentially along the “mid-surface” (0.5 in U or V), so why bother where the surface is located? :slight_smile:

// Rolf