algorithmic modeling for Rhino


I am using 3dsMax a lot to sketch quick models using a lowpoly mesh and then add a smooth modifier. All meshes I make in there are usually a perfect grid without missing members, basically a clean topology (4x6 Quads for example).

I used to import the sketched faces to Rhino and used T-Splines to convert them to a T-Spline Mesh first, then toggle smooth to create a smooth T-Spline surface and then convert the T-Spline surface to a Rhino Surface.

This process works well as far your mesh is a grid without missing faces.

I wanted to pass by the T-Spline option and create the same conversion in Grasshopper.
What I though should not be to tricky, using the points of the Mesh as control points for a Surface from Points, turned out to be not quite that easy. The issue is the sorting of the Mesh points which is not the same as when you create a real grid of points to begin with.

Is there somebody who can help me to reorganize the points so I can create my smooth surface out of the control points of the mesh?

Is there a way to analyze the topology of a mesh, for example if the mesh consists of 4x5 quads or 3x9 etc? It would be helpful to automate the process for converting it to surfaces.

Thanks for your help!

Views: 7309


Replies to This Discussion

Could you post a few of your mesh grids?

We need to know the topology of the original mesh to help, that is, knowing the order of points, the order of topological points... could upload the 3dm?

I think the general problem is to retopologize the mesh. At the moment the vertices are not really sorted and sort points did not do the job. Please feel free to try it out, the file is attached.

As a general question, is there any plugin or use object that helps to retopo a mesh?


Well, check this definition to see if it works with other meshes (must be regular quad meshes).


Another similar but better method. It should work, except with meshes with excessive curvature.


As you say, if the mesh forms a more curved shape like a cylinder, this method wont work properly. Another problem is that the order of the corners might change from mesh to mesh.

What my script does is, assuming the faces are all oriented the same way (if not, use the Mesh Direction component), find the next connected face to the right, add a vertex, continue until no more faces to the right, find next connected face down from the first face of the row, repeat until no more faces left.

This seems to work. If it doesn't for some meshes, use a component from Kangaroo called Mesh Direction before connecting the meshes to the scripting component.

The code is not very clean.


Hi Vicente, this is an amazing script! the only thing is I cant use it for a three sided mesh :( it only works for four sides. Is it possible for you to edit it so it works for three sides please! 

Thank you!

I don't really remember what this is about but I will do it for 10,000 euros.

fantastic! All you guys version work! Thank you!

@Daniel Gonzalez: your version worked as well but you had interpolate points on that is why it looked a bit different, but without it works great!

@Vincente Soler: I don't know C but the code works exactly how I want it to. Taking into account the topology of the input meshes automatically is perfect!






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service