SubD Symmetry?

Aaah… yeah, finally we hear official confirmation from McNeel that symmetry is in fact coming to V7.

Thanks Pascal and all your team in the typing pool.

G

I thought I hedged that pretty well with conditionals and hedging.

-Pascal

I am confused: joining SubDs is possible and easy in Rhino7 WIP.

That being the case, why is a Grasshopper component that joins SubD objects not currently possible?

@gustojunk and @pascal, I fully expect it to be available in the next WIP :wink:

1 Like

Hello - I only mean to point out that GH things will depend upon Rhino Common, not that they automatically appear in both. The fact that a thing is possible in Rhino or is in RC does not necessarily mean it appears in GH as a component, it only makes it more possible. Does that get at what you’re asking?

-Pascal

I guess. But what I really want to know is, does “join” work for subD in rhino common for the current WIP, and if so, does that mean that someone with more advanced skills than me could make a SubD Join component easily?

A subD join component seems like it would be very powerful.

I have played around with a workaround for this that’s almost (but not quite) glitch-free and it was very very fun. It’s tedious but basically, drawing planar NURBs surfaces, running them through this, joining the meshes and then converting to SubD was possible. And that meant inserting rotations and/or mirrors after the conversion to mesh and before joining meshes was possible. And that yielded some very smooth and pretty surface textures.

Mark,

From my experience, I sense that symmetry is coming, but not next week. Not next year either. Probably somewhere in the middle.

I say we start a discourse betting pool on which week Symmetry drops into the WIP.

  • week 49 (next week)
  • week 50
  • week 51
  • week 52

I’m betting on week 52. Since it’s Christmas and I still believe in Santa.

G

9 Likes

I’ll go for week 52 as well, I love Christmas gifts :slightly_smiling_face:

image

@gustojunk, @Mark_Landsaat, @Max3, @norbert_geelen, @kiteboardshaper
Reflect is in the latest public WIP - give that a spin - it is not a persistent ‘state’, it is a command that symmetrifies as a one-shot operation. Once a refelction plane has been established, Enter will update the SubD reflection to that plane.

(There is not a button for this yet - that is on the way. It is in the SubD menu.)

-Pascal

6 Likes

image

Thanks Pascal, this is another good step forward. I have some feedback based on the 2 seconds I have been able to use it.

If I take a perfectly symmetrical model and delete one half, it works as expected. Side is mirrored and edges are connected.

However, based on my experience I know how easy it is to move some points a little. Once I move some points on the centerline away from the axis just a hair, they will still mirror, but will not be connected. This can be solved by making sure points are on the axis using setpt, but I would like to ask if it’s possible to have some sort of tolerance embedded in the command. Let’s stay if points are within some small value of one another Rhino considers them to be on the axis and welds the points on the centerline. This was available for the T-Splines symmetry command and quite useful. Check out screenshot below.

I love that this is available though, even if I have to run the setpt command before I mirror the part in question

1 Like

Hi Mark - try Reflect on the entire object, just place the plane in the right place - that is, don’t delete half first. How does that work?

-Pascal

Hi Pascal,

I believe that is actually worse. It introduces unwanted faces where points don’t lie on the symmetry axis. See screenshot below. It’s a similar model as above recreated with Rhino SubD tools. I moved a point deliberately away from the symmetry plane and it introduced a new face down the centerline.

For me it would be more intuitive to mirror and fix gaps if any exist. Either by running setpt first or welding disconnected points after running the refelect command.

Hi Mark,

I agree and have filed https://mcneel.myjetbrains.com/youtrack/issue/RH-56104, thanks!

@BrianJ, thanks for the update Brian, looking forward to the added tolerance option.

On a related note, symmetry is currently not persistent with the reflect command. I’m not sure if this is a possibility, but would it be possible to have reflect be persistent if it was a history enabled command?

I can’t say if there will be a tolerance option but it’s filed for @lowell who’s working on Reflect to look into. I also immediately asked for history support on Reflect and that was filed as https://mcneel.myjetbrains.com/youtrack/issue/RH-55845 . My understanding is that it is not easy as the method used is removing the original SubD so we’ll need to come up with another way. Note that you can run Reflect again and press enter to reuse the reflection plane and picked side to make it faster.

OK, I’ll keep my fingers crossed for that one :slightly_smiling_face:

With regards to the history, I wasn’t sure how it worked or if it would be possible, but I appreciate you looking into it. It’s already an improvement from where we were last week, I had to delete one side, mirror one half and then weld the seams, which took quite a bit longer than using the reflect command.

I’ll play around some more later this week time permitting. Cheers.

Agree. If this is going to be done with command options, there should probably be options for:

-weld tolerance (default = document)
-fill holes adjacent to mirror plane (default = no)

Also, I’ll say it again: a grasshopper JoinSubD component would be so much more versatile. Combined with mirroring we could do radial symmetry, 3d symmetry using regular polyhedra, multiple arbitrary lines of symmetry, and stack symmetry on symmetry.

2 Likes

Not sure if this will help at all but it’s a way to Join SubD in GH currently. Subd-Symmetry-2.gh (10.8 KB)

I filed your GH JoinSubD component request as https://mcneel.myjetbrains.com/youtrack/issue/RH-56111 too. Thanks.

5 Likes