_InsertEdge greatly distorts the original shape
Thatâs kind of the point, isnât it?
Youâve got a radially symmetrical 8-sided sub-D cylinder, which should get you very, very close to perfectly circular. Add an edge, and things will definitely change, a lot, because youâre a very asymmetrical element.
The only part of this video that seems like a usability issue is that insert edge is not able to split the triangular faces. It looks like itâs inserting along the radial edge of the triangular faces, which is the ideal default result, but I also understand how this could end up happening: SubD thinking tends to see anything that isnât a quad as âspecialâ, and that can yield weird results. In Clayoo, often non-quads just donât split or insert at all when you use their _ClayDivide command. That might be better than the choice here, to split the triangular faces in an intuitively âwrongâ place.
Clayoo wonât do that either, so in a circumstance like this, depending on the shape Iâm going for, Iâd either:
a. delete all the edges between the triangles and create an octagonal end, then split the edge and slide it around or enter a numeric value.
b. split the edge using the ârelativeâ or âproportionalâ option, enter a value of .5, and delete and redraw the triangular faces on both ends of the new split edge, to create a continuous line, and then manipulate the whole line using rotate 3d. with the centers of the top and bottom marking my axis.
âŚ
All of that is tedious. Rhino should have a âsplit faceâ command for subD, and it should work on triangular faces. It should be possible to select all six faces on a pie wedge like this, call _SplitSubDFace, and have the output be, in flat mode, viewed from above, 7 equal pie wedges and 2 half-wedges, or viewed in smooth mode, roughly the same but with a gentle point at the narrow wedges.
We should also be able to split a face by clicking on any two points along itâs edges, using vertex, end, mid, and near snaps.
Hereâs some illustration of the above:
Left to right:
- Ngon ends with insert edge on one side.
- Triangulated ends with one pie wedge split using manual triangular face redrawing described above.
- Taking 2, rotating the split edge and scaling it 1D from the center to keep exterior edge straight in flat mode.
Smooth Mode:
Flat mode:
Notice that thereâs not a lot of difference between the first two. Mostly I think triangulated ends are for when you want to mess with the end, while Ngons are good for freezing the end and working on the rest.
I do not work in Clayoo, but I worked in t-splines.
It happens that the model is almost ready, but suddenly you realize that there is not enough edge for better detail and if you add an edge, then the shape is greatly distorted.
The same problem seems to be present in the subd.
If you add a face in flat mode, then there is no problem. the flat mode remains undistorted.
Iâm not a programmer, I donât know how to implement it, but I think itâs better to ignore the geometry of the flat mode even if it is distorted, than large deformations in a smooth mode
I use the geometry of flat mode as a way of seeing the curvature of the surfaces.
Lining up vertices in flat mode into a straight line, or lining them up so theyâre on a simple guide curve, for example, can get you better zebras in the smooth mode version.
Whatâs hard to get a mathematical understanding of, for me, is how the closer you move edges together in flatmode, the slower they will affect smooth mode. Thereâs a fall-off effect. I donât understand it mathematically, as a ratio, but I do have an intuitive sense of how it works.
SubD in general can feel like a puzzle at times. More tools will make it quicker to solve.
My opinion, when adding new edges the original shape should be frozen. It is in smooth mode, otherwise it looks like an intuitive modeling with unpredictable results
Do you mean you want new edges to not deform the object at all? Or do you mean you want the deformation to take effect only after exiting the command?
Tsplines has/had the option of adding edges âexactâ in that it would add extra control while trying to maintain the input shape as best it could. This sounds like what you are looking for.
Yes of course
The cylinder should be cylinder, no matter how many edges was added.
Thanks for the question/suggestion⌠Iâve filed it for the devs to see if it would be possible with Rhino SubD⌠https://mcneel.myjetbrains.com/youtrack/issue/RH-55446
This conflicts with the fundamental nature of subD and Catmull-Clark.
Check this file out: SubD Face Deviation from Circular.3dm (120.9 KB)
As youâll see, SubD faces constructed from equilateral polygons get increasingly close to becoming a perfect circle the more vertices they have. And itâs a very rapid fall off.
The attached file shows faces drawn using the âinterpolatedâ option set to âyesâ on top, and to ânoâ below. For the interpolated faces, you get deviations from round as listed below. This is normal and it is how subD and Catmull-Clark are supposed to work.
3 vertices: 6.25% deviation from round.
4 vertices: 1.39%
5 vertices: 0.47%
6 vertices: 0.2%
7 vertices: 0.1%
8 vertices: 0.06%
Rhino SubD wouldnât be compatible with any other SubD program if this didnât happen. It wouldnât be SubD, as itâs commonly understood. Vertices in SubD have a fixed weight. McNeel has already rejected the idea to allow users to change the weights of subD vertices because that would mean Rhino SubD objects would not work correctly when exported to other programs that have SubD.
So the fault in the insert edge command that you are experiencing is not deviation from round. Itâs that itâs not splitting the triangular face at the vertex in the center of the cylinder, or itâs that it doesnât at least give you the option to fix the endpoints of the inset edge youâre creating at the center of the cylinder.
cc: @pascal @jussi_aaltonen ⌠am I explaining this adequately?
All right.
BUT.
You talk about line segments and points (flat mode)
Iâm talking about a smoothed mode. There are tangents degrees and radius
Two points can be interconnected by a spline of different curvature
The meaning of my proposal, figuratively speaking, is to remember/freeze the existing curvature in a smoothed mode, to create a new edge point on this curvature. And let this new point between two neighboring ones in the flat mode now not lie on the same line but be offset relative to the curvature of the original smoothed surface
This wouldnât make sense, mathematically or in terms of usability.
The issue with the _InsertEdge command here is that thereâs no option to choose and fix the endpoint. For users working with a SubD object that has triangulated end caps, like this cylinder or any more complicated object such as a SubD of a fingertip on a hand, it will be useful to have this option within the command. In this simple example, I could see it working as follows:
- Call _InsertEdge
- Select an option called âfixed endpointsâ
- Click to select an endpoint.
- Now when the user moves the cursor to place the inserted edge, the endpoints act as pivot points and donât move.
I expect this will mostly make sense if the endpoints are on vertices, but maybe there are other applications.
In SubD, the points are connected by surfaces created using the Catmull-Clark smoothing algorithm. If you use different smoothing options, it isnât SubD anymore, or at least not as anyone commonly understands it.
This is why thereâs a âlookâ to SubD. Itâs all bound to the same algorithm.
Catmull-Clark literally canât make a perfect cylinder. Thatâs not what it does.
If strictly follow this algorithm, then can forget about the Insert Point and any others commands allowing to create arbitrary polyhedrons⌠Quadrangles only
We cannot will detail using only quadrangles. And in this case, our highly detailed models will consist of hundreds of thousands or millions of quadrangular polygons. Example DynaMesh in a Zebra.
I think that at the SubD inside Rhino release we get a mixed way
Iâm not a mathematician so I canât get deeper into the weeds here to explain this with numbers.
What I do know is that there is a way in which SubD is implemented in other common programs that means that implementing what youâre asking for in Rhino would make Rhinoâs subD no longer reliably exportable to other programs and that several of McNeels developers have explained on this forum that various feature requests are impossible because of this.
I just voiced my guesses.
By the way TS also SubD?
T-Splines are not SubD.
T-splines are sometimes SubDs, but the functionality @leex is looking for is not in the SubD part.
With SubDs, the way you can add edges without changing the surface is that you need to subdivide every face at the same time, which usually means that youâre getting 4x the number of faces.
There are other ways to get closer with pure SubDs though - for example, there was a tool in the T-splines plugin called tsInterpolate that would swap positions of the CVs and surface locations. If you interpolate the positions, run insert edge, and then interpolate back, youâll have the same topology operation with less surface change.
The main downside of this approach is that itâs a bit like an EP curve - it can introduce wiggles into your surface.