Thanks Daniel. I was wondering if there is a way to connect the Evaluation component (output: Result) to create IsoSurfaces? Is there any Iso Surface component similar to Millipede, which is not available anymore?
Hi @Mahsan_Mohsenin
You can use this to create isosurfaces like you would with Millipede, but much faster.
One big difference in the setup is that instead of inputting the result of the ‘Evaluate’ expression component precomputed at a load of grid points like Millipede did, you input the expression/function itself.
Have a look at this example for providing your own mathematical expression:
Thank you very much for sharing @corax – impressive collection! Do you happen to have more information on where the alternative names come from, and what the source keys ([Chr2024], [Fi2023] etc.) stand for?
Here is the latest version of the TPMS collection:
Normalized TPMS.gh (32.0 KB)
You find the references in the section “Region Notes” close to the top - you may have to flip it open by clicking the caret on the side-bar.
Sorry, I have not noted down the sources for the alternative names. I just noted them down, whenever I encountered a duplicate TPMS formula.
Normalized TPMS lead to more predictable results, especially when combined with other fields (which should also be normalized / domain limited). I wrote a post on this above (post 335).
Let me know if you need further info.
Thank you very much, I must have overlooked the region notes, it’s all there!
Uploading: 9e634c9b095637cbaef93e0c0011c2bc99b05dd4.jpeg…
Hello, how can we achieve the effect of consistent thickness but different densities? Thank you
Hi @lilele
It looks like your image hasn’t uploaded properly, can you try again?
Hi, here’s an example like that image
tpms_blending.gh (52.5 KB)
It creates a weightfield as a blending function and uses that to blend 3 different TPMS fields
Thank you for your reply, it’s so amazing
If you want to keep a single type of TPMS and have its scale change through space, you need a mapping. The only 3d mapping possible which keeps the proportions is a Möbius transformation:
moebiustransform.gh (27.9 KB)
Note the use of the normalisation step, which keeps the wall thickness consistent instead of it scaling along with the pattern.
Here’s the effect if we skip that:
Thank you very much
You can reduce the P input of the InverseDistanceWeights field to get a more gradual blending
However, it’s important to understand that blending structures at 2 scales will not result in a gradual scaling - what you get in the middle is a mix of the big structure and the small structure, but this is not the same as a medium sized version of the structure.
It may be easier to think of as blending a grid (as what we need to keep the connectivity of the TPMS consistent is a parametrisation of space). If you have a grid of big squares on the left of an image, and a grid of small squares on the right, blending the grid values in between does not get you a grid which blends in size - for that you’d need some mapping function. However, there is not any general way to generate such a mapping given a size in one region and a size in another.
You can use specific mappings such as the polar or complex function ones shown in this post above:
However, we know that no 3d conformal mappings aside from the trivial ones like scaling/rotation/translation and Möbius transformations exist (notice how in the polar mapping example, the vertical scale does not reduce towards the centre like the horizontal scale does).
Message from Claude:
I also flagged two things I noticed in the code: S9 has
sin x sin yrepeated 3 times (likely meant to be cyclic:sin x sin y + sin y sin z + sin z sin x), and Double Gyroid’s normalizer only divides the second term due to a missing parenthesis.
Well spotted - thank you.
The S9 is exactly like it is given in the paper of Vasile et al. (2024), yet I agree, it looks like a mistake and I corrected it.
The missing parenthesis in the Double Gyroid is my mistake and corrected.
Normalized TPMS.gh (31.7 KB)
Getting cited is a nice surprise - Thank You !







