sorry i thought i internalized…
chainmailMinimalSurf.gh (23.4 KB)
You had it trimming with the boolean intersection of the shifted and unshifted field.
We just need to trim with the shifted field:
The symmetry is then just a matter of flipping some of the curves
Ah I see, thank you!!
That’s the field transform component.
Whenever you use a regular grasshopper transformation component such as a rotation/scaling/translation etc, it outputs both the transformed geometry and X, the transformation itself. Connecting that transformation output to the X input of the field transform component lets you transform the field. (Now I’ve said transform too many times and it sounds funny!)
This is all simplified in GH2, where we can simply transform fields just like any other object.
So a rotation should make the field for example not be vertical but angled?
Ok, not sure what went wrong on my side but it works now. Thanks again!
Linking here to an example of wrapping a large number of unioned piped curves with a field that uses an RTree to speed it up.
I think this general approach could be extended to smooth unions and other geometry types.
The input f which is a radius multiplier for how far out beyond the surface to calculate the distance field (2 seems to work well here).
the CAD world is moving toward implicit modelling, this is a HUGE step forward for Rhino!!!
Regarding the helicoidsum… is it possible to fill a volume like a sphere or vase-shape with this, like the infill but without the outer shell, and with a thickness? In the helicoidsum example, you use a box to trim so it is always a box volume. I’ve tried to use a different volume shape to trim but perhaps a component that can accept any Brep or Mesh as an input would be useful?
I used the offset example to give it thickness which worked well. One thing I have noticed is that sometimes the edges are smooth and sometimes they are quite jagged. What causes this and can all edges be smooth?
I think this could make some really nice 3d printable shapes for ceramics (and normal 3d printing).
The overhangs are a bit severe but I see this can be controlled by moving the seed points and changing the amount of twist. Ideally, overhangs should not be more than 45 degrees so no support is needed.
EDIT: Managed to do it with a sphere…
Helicoidsum_Sphere.gh (95.7 KB)
You can use IsoCutMesh to cut a mesh, giving open edges, and this takes any field as an input, so it can be any shape you define as a field, including an input mesh
You can also shell a surface and use Isopod boolean intersection with any other field to get a solid fitting a shape (only meshing once at the end).
trimming_v_shelling.gh (249.9 KB)
What we want to avoid wherever possible is generating an isomesh from a field, then using that resulting dense mesh to define another field to be used in another isomeshing component, as it will lose accuracy and be much much slower than if we can do all our operations with fields before a single isomeshing step.
(Sometimes this field-to-mesh-to-field workflow is a useful fallback as a way of turning a non-SDF field into an SDF, but it makes things a lot heavier to process, so shouldn’t be a first choice)
For the specific case of the helicoid fields, it does look like things need to be done a little differently, as they are very non-distance like. I’ll try and make another example for these.
As an aside… do you know why some components have tooltip text that pops up when you hover the mouse over them, and the inputs and outputs, and some components don’t?
I find it really useful to help me understand what I’m doing!
Any missing tooltip text is my oversight. I’ll try and make sure all components and inputs have description text for the next release.
Getting an glitch for a fairly straightforward routine with Mesh1. Works fine with Mesh2.
The BREP box is…
Moving the box around, I get some weird jankiness, again with Mesh1. Mesh2 is OK.
Everything should be in the box in this screenshot, but the corner is anchor to the coord system origin instead.
I’d have fiddled with it, but you didn’t make IsoMesh1 a user object.
See my earlier reply:
Hey Daniel, Impressive work.
I’m trying to understand how this modeling way works and how it can be utilized with NURBS. As we know, fillets in Rhino are rather manual work and they are the last step in modelling. I wonder if this SDF thing can go in pairs with NURBS and do quick and dirty fillets, at least for visualization / conceptual modeling purposes.
SDF modeling has something relaxing to it, I watched a couple of Blender SDF modeling videos. Maybe I’m wrong, but for me, it resembles what one might do with clay. Because of that, I started asking myself If we could put something like “clay” pipes together with NURBS source geometry and smooth those pipes as we would do with our thumbs making concave fillets or chamfers. Grasshopper is not great for working with Brep edges, but if we know where shapes intersect, we can probably make some pipes out of the intersection curves and then maybe even some GH automatic “postprocessing” may be possible by blending these pipes with Breps.
One thing that concerns me is if it’s even possible to achieve sharp edges in some parts – for example, if we can have an SDF pipe with flat ends instead of rounded ones.
Maybe some screenshots will help to illustrate what I mean.
The left shape has something like a “clay buildup” almost like a chamfer, and on the right, the transition is smoothed.
Here shape is used to do some recess in the shape, and the edge between two shapes is manipulated to achieve different results. However, this might be not as tricky because this edge shape is similar all the way around.
This is a grossly simplified example, but can we use SDF to produce the red fillet? Note, that it doesn’t go all the way around the intersection of two boxes, but only two edges are filleted.
This screenshot shows the problem of unwanted, quite ugly transition. I’m wondering if it’s possible to use SDFs in a way to only fillet side transition of the cylinder and keep the top face perfectly flat.
Ahh, I figured there was a note somewhere, but overlooked it. I do like the triangles generated by IsoMesh1.
Good questions.
I’ll start with one of the easier ones. For recess/inset/chamfer/groove/step type effects there’s an ‘edgedetails’ component:
edge_details_demo.gh (31.6 KB)
edge_details_demo.gh (31.6 KB)
(these are mostly based on ones from here and here)
In your image it looks like there are also some nice rounded ones which I haven’t got, but it should be possible to make these with a similar technique.
One downside of these sharp edged details is that they usually require a pretty high mesh resolution to look good.
The smoothUnion smoothDifference etc operators are more forgiving.
As for combining implicit fillets with NURBS, that is something I’ve been experimenting with.
When we can find the region where the blending occurs, we can trim and take just the part of the implicit around the join. These could potentially be added back onto the model (indeed like smoothing clay into the corners of a hard model with your thumb like you say!).
There are some challenges with making it all match up into a solid model again though.
Quad remeshing the strip could help, but things get more complicated if the seam has kinks, or you only want to smooth part of it. Plenty to explore in the future!
It may be a slightly less serious application, but I wonder if this thing could be used to produce volumetric textures such as wood. It seems that it might be possible to lay out general wood veins and put some heavy post-processing on top of that to get nice results. I don’t expect it from the Isopod GH plugin, but rather thinking loud about the SDFs in general.