Cage edit command that can adapt to any form automatically

I want cage edit command that can adapt to any form automatically.
As pic show, it is very hard to edit the form freely after bending.
Any idea?
Grasshopper can do that?
Thank you!

Hello- no, cages must start as boxes before being deformed. You can use a surface or a curve as a control object in CageEdit however.

-Pascal

1 Like

thank you!
This information is very useful for me!

Is there any chance to have cages with controlpoints x,y,z that do not start as a box, or that can be deformed before and without applying the deformations to the child? I know that is possible with surfaces as cage, but they have only U and V points.
I suspect this is fundamentally not possible, but I am not sure. This is a very old wish of me.

Have you seen this?

No, I did not see this before.
And Yes! Yes! Yes!, I want this!
I am not a GrassHopper user, although I know I should have learned to use GH from the moment “Explicit Historie” was launched.
Will this GH example work in Rhino7, or become a Rhino Command soon?
I will look if I can get it to work, hopefully today.
This is what I have been waiting for so many years.
Thank you very much.

Yes, this example will work in GH in Rhino 6 or 7.
The aim is to also turn this into a Rhino command, though I can’t promise how soon.

In the meantime, I think it should also be possible to use some of Steve’s GhPlayer magic to make the Grasshopper file work like a Rhino command, where you don’t actually see the Grasshopper interface. I’ll give this a go.

Here’s a first go at this.
cageMorphPlayer.gh (18.1 KB)
You can use the ‘GrasshopperPlayer’ command to start it without the Grasshopper interface.
If you want to make it into a button, you can make a macro with these lines

-GrasshopperPlayer
filepath\cageMorphPlayer.gh (replacing filepath with wherever you have saved the file)

You’ll also need to have installed the .gha from the link above in your Grasshopper libraries folder.

This just works with meshes for now. Later I’ll make another version to work with any geometry.

6 Likes

Not behind my computer now, but I will test ASAP.

A cage can be created and then deformed before being used as a control object.

Simple method.

Cage command (not CageEdit) to create a cage with desired number of control points in each direction.

Modify the cage to the desired shape. Turn on control points if needed and move control points.

CageEdit command. Select the object to be modified as the captive object. Select the Cage created previously as the control object. (Click on the existing cage. Do not create a new cage.) Alter the cage as desired and the captive object with be modified.

Hi David - sure, but you’ll find that the first edit you make on the cage assumes that it started out as a box.

-Pascal

1 Like

I think we are saying the same thing.

I am looking for a method to deform cages before making it a control, without having these changes
passed on to the child.
You can do as you mentioned, but the moment you deform the cage after making it the control,also all the changes you made before making it the control are applied to the child, so that does not help me out.

Hi Daniel,
I tested your CageMorph Player, but it does not work properly here. Dragging grips of the Cage sometimes has effect,sometimes not.
Am I doing something wrong?

Hi @PodoTools,
It’s hard to say without seeing the file.
In the shared definition the object being morphed must be a mesh. I can certainly make a version without this limitation though.
The cage must be a closed mesh (or multiple disjoint closed meshes).
Also, it is using the ‘Grab’ functionality of Kangaroo to let you drag the points. This has a range value for how close you need to click to select a point. If your geometry is very large, this range might be too small to allow easy grabbing.

How do I set the range for grab in Kangaroo?
Here an example of what I try to docageMorph examle.3dm (3.8 MB)

Here’s a version with your file (as a regular gh definition, not a ghplayer one):
last_deform.gh (1.4 MB)

Another alternative is instead of using Grab to move the points in Grasshopper, to reference the cage from Rhino and then move the points in Rhino.
last_deform2.gh (3.9 KB)
last_deform2.3dm (3.9 MB)

1 Like

Hi Daniel,
Thank you for your help, unfortunately I am a complete rookie in GH.
I do not know how to get these files to work, some very basic info about how to use these files is missing here.
:thinking:

Interesting. If the selected control object is not created with the cage command, but is a curve or surface, then any deformations prior to running CageEdit are not applied to the captive object. But if the control object is a Cage then any deformations to the Cage are applied when CageEdit is run.

That is disappointing,

Hi @PodoTools - no worries.
Did you manage to install the Fattener.gha plugin?

Once you’ve done that, open the ‘last_deform.gh’ file above.
To reference mesh geometry from Rhino you need to right click the Mesh component in Grasshopper and select ‘Set one Mesh’ then choose the relevant one in Rhino.
Because you need to keep an undeformed copy of the cage as reference, I made a copy and locked it. You could also just put it on another layer and hide it.
Once you’ve referenced the 3 meshes, the ‘Reset’ button needs to be pressed once (this calculates the weightings for the deformation. It only needs to be pressed again if the input object or reference cage are changed).
Then you can move the control points of the referenced target cage mesh in Rhino, and the object should deform with it. Once you’re happy with the result, right click the mesh component at the end of the grasshopper definition and select ‘bake’.

1 Like