I tried doing SubD re-topo in Rhino

Tested out SubD retopo workflow to see if it’s even possible.
In short - yes, it is - but it’s quite a bit painful.

  • Reflect really likes creating non manifold edges. Feels overly aggressive if that makes sense. Could be that I missed some sort of option where the tool could be fine-tuned.
  • “Shrink-wraping” the new faces onto a guide mesh can only be done with grasshopper+kangaroo , by sliding the existing points of the subD geometry on the guide mesh. Because of this - every time I’d need to add a new face - I’d need to re-reference the geometry in GH, which makes this approach fall apart. So I was stuck with snapping the new faces to guide mesh vertex positions. Would be nice to have a shrink wrap functionality to be built into Rhino.
  • ExtrudeSubD is a bit clunky. While extruding along normals works as expected, getting to it requires changing WCS cordinate system to UVN and then navigating to N direction. Would be nice to have it as immediate option in the initial ExtrudeSubD settings rollout.
  • If ExtrudeSubD along normals were to use an average of all vertex normals rather than using a separate direction for each vertex my life would be so much easier.
  • ExtrudeSubD doesn’t interact with the current CPlane. While using the gumbal to extrude is a good alternative. Would still be nice to have that functionality.
  • Bevel does not remember the last numeric input used, while most of other tools do. This messes with muscle memory quite a bit.
  • Being able to select two SubD vertices to create an edge between them would be excellent.
  • Correct me if I’m wrong - AlignVertices reacts to distance between the “smooth” SubD vertices, not the distances between control polygon verts. This is a bit counter intuitive, since 90% of the time is spent working on the control polygon.
  • If I have a valence 4 vertex, that is surrounded by 3 quads (so a grid, where 1 face is missing) - it would be awesome to have a command which would enable me to select that “interior” vertex and add the 4th remaining quad automatically by just specifying the location of the new vertex to be added.
  • Also just wanted to note that if you use a low-poly mesh that you convert into SubD - the newly built SubD will not mess up texture information. That’s very cool! What’s a bit less cool is trying to UV unwrap that low poly mesh (future SubD control polygon). There are a lot of instances where the low-poly mesh is self intersecting, so getting in there to select the correct seam edges is quite a hassle. An alternative unwrapping of the SubD geometry it self is… well it’s way too slow (performance-wise).
  • During UV unwrapping, while selecting the edges that are going to be used as seams I relied on NamedSelections tool. While it worked as expected - every time that I would need to make a slight adjustment to the geometry, like adding a bevel here and there - all edge indeces would mess up thus I’d need to do the seam selection once again. This model had 100+ UV islands, so it’s 2 hours of seam selection down the drain every time I notice a small bevel that I forgot to add.

10/10 - was fun, would go through the pain again








31 Likes

Hi @gkirdeikis
Thanks for the detailed input, this is useful.
(nice design too - seems like something that would fit in one of Neill Blomkamp’s movies)

1 Like

Three years he said… And here I am still waiting.

4 Likes

About Shrink-wrapping - it is something we’ve been talking about, but I’m realising that people use this term to refer to a few fairly different things (sometimes about re-topo, sometimes more just about watertighting, and sometimes more literal stretchy-fabric stuff).
Am I right in thinking that here you are talking about a way of pulling/stretching the new SubD/mesh onto the target as you add faces (rather than creating a full closed topology then pulling it on)?
Do you imagine this pulling as something that would update after each topology edit?

Yes, we’re on the same page. I guess I should have called it “magnetic guide mesh” or something like that. I can see this being quite useful for landscape designers who’re trying to convert typical Delaunay mesh geometry into a SubD which has edge flow aligned with the pathways and whatnot.
And yea - the way I see it is - when you have the “magnetic guide mesh” tool active, any new SubD vertex that’s created will be pulled to that mesh. When existing vertecies are moved, they would instead slide on the mesh.

Also I assume we somewhat have the “shrink-wrap” tool (in a more traditional - get a watertight volume - sense) already implemented via the TriRemesh node in GH. I find it super useful, thanks for that Daniel.

@Jussi_Aaltonen had some retopo tools with pull-to-object, something like those would be nice.

Let me see if I can find some old recordings

addendum:

I would not mind having these available with SubD

3 Likes

This looks great, would be handy to have it working with nurbs as the underlying geometry as well as meshes.
I’ve done a couple of jobs recently modelling protective covers over nurbs geometry and thought a retopo process would be handy, with perhaps a positive offset value as well so the resulting SubD is above the input geometry.

Oh I got excited, but it seems like RetopoSnap has been removed from the AppendFace command until further notice.

Early in Reflect’s development we had a tolerance option to define what got combined crossing the reflection plane, I believe it now uses the unit tolerance of the file. Is that the kind of control you are after? If you have a sample model that shows what you want to control that will help make the case for a feature change.

This one’s filed as https://mcneel.myjetbrains.com/youtrack/issue/RH-66247 but the settings should stick within the session now.

Filed as https://mcneel.myjetbrains.com/youtrack/issue/RH-67460

Filed as https://mcneel.myjetbrains.com/youtrack/issue/RH-67461

Filed as https://mcneel.myjetbrains.com/youtrack/issue/RH-67462

InsertPoint does this now but you have to click the verts, does that help or would you like to see a two vert preselection automatically insert the edge? Perhaps InsertEdge could be made to do this too with a preselection of two verts.

I’m seeing AlignVertices > Select Vertices > Distance to Adjust uses the distance between the control polygon/box mode verts which is less than the smooth mode distance of the same verts. So I guess I’m seeing the opposite… post a sample model please if you’re seeing a difference.

Could you post your described test case for this one? I want to make sure I understand the specific case. And it’s a quad being created with a single vert selection correct? What about ngons and tris made as a result in the surrounding quads? I’m probably just not seeing it yet.

Something that may help here… If you use a custom render mesh in the Properties panel > Adjust Mesh > SubD meshing parameters for Raytracing, that will be the mesh that gets unwrapped with Unwrap. Does that speed things up for you when unwrapping your SubD? Drag the parameters for the Raytracing slider all the way to the left for 1 division level.

Are you using the Previous Seam Selection option in Unwrap to get the last used seam set? You can then add or remove seams with ctrl from that set before unwrapping again for the new topology. You can also use named selections in the same way so maybe there are a lot of geometry changes making that take time. I am not sure what we could do here as the resulting model may be too different from the original UVs for textures to look right. If you have a sample showing what you wish to change and then not have to unwrap again, share it please.

Thanks for the review!

1 Like

What I understood from

was something like this, where you’d select the red vert, run the command and position the green vert to create the new face - is that right @gkirdeikis ?
image

6 Likes

Yup that’s exactly what I meant. Should have drawn a diagram myself for clarity…

@DanielPiker thanks, you had a better mental picture than I. @gkirdeikis Have you tried Append > Poly type Quad > From Edge? It’s two vert clicks but I think does what you want here. I can file a request for perhaps a From Vert option for Append if not.

I think having it connected with unit tolerance of the file is absolutely fine, but it should somehow be stated to the user. Can only see variable tolerance being useful in very niche cases, so no need to re-implement it if you guys decided that it’s unnecessary to have.

Yea, if 2 verts are selected running InsertEdge should create an edge between them. This would make redirecting edge flows so much faster.
Speaking of having two sub-elements pre-selected. Bridge should be able to do triangles as shown below. As it is right now - I go through the geometry cleaning/reconnecting different chunks with _Bridge , but every time I come across the case below I have to switch to _3Dface messing up the modeling flow.

I’ve double checked. Apologies - the align distance does indeed look at the control polygon. I was remembering wrong and didn’t bother to double check.

Daniel beat me to it… His comment below.

It indeed cuts the calculation times down by 2/3 , now instead of 46s for an unwrap it’s done in 16s. Still not the fastest but most definitely usable! Great information, thank you.

PreviousSeamSelection works great and now when you’ve clarified how to make unwrapping faster - i don’t see any issues with it. Said that - since I used NamedSelection to store Seam edges, there is one thing that was messing me up quite a bit. When you join a new face to the SubD which has edges stored as a NamedSelection , it duplicates that NamedSelection (with non-existent edges?). Either way, the duplication becomes a problem really quickly. Specially if you have multiple namedselections.

And thanks Brian, for taking the time to explain different things that I was missing/didn’t know.

Yup, that does exactly what I want, just that it uses 1 extra click… But doing it this way DOES have more versatility… but in 99% of cases you just want to slam it that fourth quad, so the versatility is not used as much.
So with that in mind - I do think Append havign FromVert option would be a nice addition.

i would love to see this as well especially:

i think it would be really helpful, if the new (forth) vertex would be somehow related to the plane (or curvature) of the two starting edges / 3 starting points.
maybe as an option.

similar to the extendSrf command

so the option might be a “add planar quad” (where the 3 starting points define a plane) or more something like extending with approximated surface- curvature.

if i click somewhere in space (and have nothing to snap to), the new point is on the cplane. (which is somehow as the interface works, but it is counter-intuitive…)

additional face in view direction:


and of course in 3d the point is on the cplane.

hope it is clear what i am talking about.
kind regards -tom

1 Like

I would also welcome it, if stitch by distance could a thing, something like AlignVertices plus Weld for meshes.
I often find myself having to construct guide geometries and thus having to exit the 3DFace construction mode. When I re-enter it, the new faces are part of a new SubD and I have to stitch all vertices individually to join and weld to the previous one, which is rather time consuming.

I also find it counterproductive, when entering the 3DFace construction mode that you can’t change from flat to smooth mode.
Modelling should generally be done in flat mode, but it would be nice if you could toggle while retopologizing.

It would also be great to get a more potent gumball, where you could use the scale handles to quickly extrude towards the gumball origin.

1 Like

Generally if the vertices are at the same location, you can simply _Join them

1 Like

Texturing on this is outstanding.
Cycles render ?

Thanks.
VRay 5 for Rhino.
Don’t like working with Cycles in Rhino as much.

2 Likes

Hey Gediminas Kirdeikis

Love your Grasshopper tutorials on Youtube!

1 Like