I’ve replaced your points-to-surfaces-to-meshes script portion with a more efficient and straightforward way that gets you a clean mesh without having to do a manual clean-up in Rhino.
I’ve also gotten rid of the Kangaroo simulation to relax the mesh, and am instead using Catmull-Clark-Subdivision from Weaverbird to smooth it. The result are very similar!
I’ve also included an experimental, pythonic mesh welder component of mine, which seems to work pretty great, even better than the Weaverbird or vanilla Grasshopper ones it seems, which mostly fail to weld radially distributed, adjacent meshes.
The asymptotic curves are simulated with a Kangaroo simulation, similar to what you would do to get geodesic curves between points on a mesh.
thanks for your improvements! The weld component works great! Rhino seems to have problems with the radial vertices.
I started with a surface and never changed it to a mesh, which is more straight forward as you mentioned.
Thanks again for showing this way!
You are absolutely right. Since I saw them I was fascinated. But I still need to understand more. Especially the workflow. My final aim was to lasercut the stripes.
As mentioned in the thread you linked, they(Eike and team) use Bowerbird for the generation of the asymptotic curves, which works over surfaces.
Another post I found seems also to work only over surfaces:
The planar vertex star approach should work, but I notice in that screenshot you don’t have the boundary restrained at all - that’s why it is crumpling. You’d need to keep the boundary curves on their respective planes.
I would suggest though instead of using the planar vertex star definition, to maybe use the other approach shown there with the Koebe polyhedron, which I think should be possible for this periodic surface.
This way you get the discrete minimal surface (which you can’t get from isosurfacing, relaxing springs, or a subdivision mesh), and the discrete asymptotic grid (not the same thing as geodesics) at the same time, so you don’t need to trace curves across a surface.
The mesh needs to be the diagonal of what you have at the moment though, so the mesh edges will follow the principal curvatures, and the diagonals will be the asymptotics.
thanks for the explanation!
I took your advices serious and tried my best with the transformation of the Koebe Polyhedra.
As I understand, the overall logic is the following: The 3 surfaces my geometry consists of can be formed with patches which can be obtained from the Polyhedra:
From the other thread, I understand this should be done by Christoffel Transformation, which took me a while to understand. As I understand, the transformation is just from one state into another, exchanging the diagonals. At this part, I don’t get how it can convert to the geometry I would like to have.
With your keywords I found a nice diploma tesis(reposiTUm: Ein Beitrag zur Erstellung einer Gitterschale unter der Verwendung asymptotischer Kurven auf Minimalflächen) on this topic, but still I am missing some pieces to understand the workflow.
Maybe you could give me some hints(a few keywords) so I could keep on researching.
Discrete Minimal Surfaces, Koebe Polyhedra, and Alexandrov’s Theorem. Variational Principles, Algorithms, and Implementation. (Diploma Thesis)
Note that this approach works on the principal curvature aligned mesh, then the asymptotic grid would be the diagonals. It looks like what you have is the diagonal grid to start with.
I think I posted on that other thread the definition which takes a starting polyhedron and makes it Koebe, then it has a second stage where you can use the slider to turn one patch of it into the Christoffel dual, which is then discrete minimal.
You can then mirror this patch around to get the rest of the surface by symmetry.
Knowing which polyhedron to use at the start isn’t always immediately obvious though. Those for the standard P G and D surfaces are easy enough to find, but others might take a bit more searching.
If you have a good approximation of the minimal surface to start with, you can maybe run the dual operation the other way (again on a single patch), and see the symmetry from that to figure out what the right polyhedron is.
There’s probably also some easier way I’m missing to find it directly from knowing the symmetry of the minimal surface you’re after.
You can also go back to the original source. This page by Alan Schoen isn’t the easiest to navigate - it’s all on just one very long page, but wonderfully informative. https://schoengeometry.com/e-tpms.html
He refers to the surface in question there as C₁₉(D)
Another way to approach this is to start by modelling the tetrahedral unit cell, then use Mirror and ArrayPolar to extend that.
Here’s a go at this, using the diagonal grid. complementaryD_mesh.3dm (152.9 KB)
which when relaxed starts looking like something along the right lines:
However, the grid here is still along the diagonals, which is not what we want for the discrete minimal surface.
Taking the diagonalized mesh of this gives the correct grid, but then the problem is that we have triangles along the boundary, which complicate things for further relaxation.
We could chop it along the grid, but would then need to apply appropriate boundary constraints for whatever new repeating cell we had.
I also had a go with the Koebe approach, but didn’t find the correct polyhedron yet. I was trying to use the above to deduce which one.
I think it could be one with valence 2 vertices, which I don’t think RhinoPolyhedra has many of.
Thanks again for the elaborated answer and the nice pics!
hehe, yes. And it is fun!
I saw his site before and really liked it. Yesterday late night I thought, it would be nice if he would have written down, from which Polyhedra they can be made
So I wrote him and asked, not thinking of getting an answer- 2 minutes later he answered, that he does not know - I was flashed:)
The physical models are divine! the material, the colours! I love them!
This weekend I want to try every polyhedron he mentions on his website. Maybe it is a trace.
I also tried that, without success. Since you introduced me to the Koebe idea I will stick on that track I think… Seems to have advantages and it fascinates me. Maybe if I can’t get any advance this weekend I’ll change my mind.
For some reason the Koebe defintion from the other thread does not work when I subdivide Polyhedras with both, tri-and quad faces 2 times like in this example: 2021117_Koebe_Tri_Quad.gh (27.9 KB)
Do you know why?
Found also another one which looked at the first glance but wasn’t:
Since I could not find a way to make the Koebe definition working on mixed(tri+quad) meshes I couldn’t test the polyhedras you were mentioning. So I thought trying the further procedure to begin to make some test (materials,thickness,etc) could be a good idea:
I took the Mesh I most liked from my discrete minimal surfaces collection from last week:
sorry, I did not appreciate the answer last year enough… I was young and foolish, now I am old and still silly.
Again I am digging into minimal surfaces(Gyroid this time, that’s why I remembered) and was searching what I did a year ago and found a script based on some code of you: