Isopod - implicit surface tools

Pretty much. Here’s an example of one approach: https://hongbofu.people.ust.hk/doc/bilateral_normal_filtering_tvcg11.pdf

2 Likes

Hi guys,

I just tested out your plugin and I have to say it’s very interesting so thank you Daniel for your work.

Here is an example of the research I did last week, performing multiple difference booleans using 660 spheres.

I still have one question in mind : why the size of the box input in the isomesh 2 component affects the resolution of the mesh ? In my case, I noticed that the higher the reference box is, the faster the isomesh 2 component works. Or maybe I’m missing something?
I’ll post a file later if needed.

3 Likes

I think it would be really convenient if the components of Isopod could provide a low-poly mesh preview at every step, not just during the final meshing process. Modeling is an iterative optimization process—the easier it is to confirm the result of the previous step, the more convenient it becomes to refine the next.

2 Likes

The ‘resolution’ input is the number of divisions along the shortest side of the box.
So using a larger box with the same resolution means larger cells, so your object will occupy fewer cells and therefore have fewer faces and be quicker to mesh.

2 Likes

I agree that working at lower resolution while developing a design then switching to higher resolution for the final meshing is convenient, and this is also the way I usually work.


Do you have something else in mind beyond simply changing the resolution values like this?

It can also sometimes be useful to mesh only a small region of the object at higher resolution during development (because for thin features a coarse preview mesh might not be able to capture the details well enough), then switch to the full object at the end.

4 Likes

@Quan_Li exploration using Field texture is very fast and quite easy to use. And it has the big advantage to represent the inside that is very hard to see with a mesh and a porous structure.



3 Likes

I hope every component in Isopod provides mesh preview in low poly by default (or under some conditions). To confirm where I am, I must countlessly repeat the checking behavior by wiring the current component to one of the meshing components. I hope Isopod can spare users this inconvenience.

1 Like

You can create a cluster or snippet with two inputs and a gate. I have something similar for a mesh pipe component where most times a coarse result is desired but for export I can change a value list which contains all the relevant values…

I hope not…

1 Like

Isn’t it good to see what you’re doing while you’re doing it?

5 Likes

Realtime preview… ok that would be nice…

Just maybe not by default and it needs to be possible to enable / disable without having to right click into the component

1 Like

Awesome plugin Daniel - good fun ! Having access to the uncomplied C# version makes it a lot easier to extend it.

Here’s an extended TPMS component with roughly 40 surface definitions build in.
TPMS isopod samples.gh (25.4 KB)

For good measure here are components for for polar and spherical mapping:
Polar field modifier.gh (29.4 KB)
Spherical field modifier.gh (30.2 KB)


15 Likes

Nice! Thanks for sharing.

2 Likes

@maje90 - this fillet tool is so nice! If you are willing: it would be amazing if the script could receive a list (instead of 2 discrete inputs) and run the fillet anywhere the objects touch.

I have little to no time for the forum lately, sorry.
If you can try a bit of c#, I would suggest you to iterate over and over your list of fields, like:
((((a+b)+c)+d)+e) … etc
I have no idea if this would give good outputs…

2 Likes

Interesting. I’m not sure why this is happening but yesterday the code was running just fine. Now I try it and all of the isopod components are red and reading “Value cannot be Null” (Parameter ‘Path’). I have grasshopper dev settings enabled so idk what the problem is…

Hello! Finally got the company to update Rhino so now I’m getting to know Isopod.
I’m trying to create a TPMS of a Solid SubD object with gradient thickness/size of the TPMS in certain parts of the SubD object. I’ve seen examples using a gradient via Greyscale image, would love to know if one could work with curves or points to get sort of an attractor effect instead? But I’m open to any suggestions.


LA testing Fotseng.gh (210.2 KB)

Appriciate any input. I will attach my .gh file with internalised data.

1 Like

Do you mean you have COFF loading on? This setting needs to be off (and you’ll need to restart Rhino after you change it).

Hi Linus,

Nice work. There are a few things I’d suggest can be improved here:

Of the 2 parts to your definition, the ‘cutting method test’ and ‘shelling method test’, the ‘shelling method’ is a far better way to go.

When you go from an implicit to a mesh, cut that mesh with an implicit, then define another implicit based on distance to the cut mesh, surface quality is lost depending on the meshing resolution used in the intermediate steps, and when using a high resolution mesh it will get extremely slow.

Your ‘shelling method’ part is more along the right lines, but one missing part here is normalising the field.
Isopod supports both general scalar fields and signed distance fields (SDFs), which are a specific type of scalar field.
In both cases we can create a mesh where the field value is zero, with points inside the volume having negative value and points outside having positive value. However, for a SDF we have the further constraint that the magnitude at any point is also the distance to the closest part of the zero surface. Functions like the TPMS do not produce distance fields.
If all we were doing was meshing them directly this wouldn’t make much difference, but when we want to do something like shelling or offsetting, then it will affect the thickness.
The extra step I’ve added in the definition below divides the field value by the magnitude of its gradient. This can be used to make a non-distance field more distance-like so it will give more predictable thickness when shelling.
LA testing Fotseng2.gh (207.9 KB)

1 Like

As for the part about curve or point ‘attractors’, yes we can use a function of distance to a curve or point to vary parameters such as shell thickness.
To start, here’s a simple example using distance from a curve to control the thickness.


shellthickness_curve1.gh (27.9 KB)

I’ll make some more examples showing how we can use different falloff/blending…

3 Likes

And here’s an example using blending functions:


shellthickness_curve2.gh (55.1 KB)

5 Likes