Cage edit command that can adapt to any form automatically

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.


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): (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. (3.9 KB)
last_deform2.3dm (3.9 MB)


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.

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 ‘’ 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

It took me some time to realise that I had to Unblock the GH assembly “Fattener”, but now it works.
This is the type of deformation tool that I am looking for!

The Grasshopperplayer with only lets me select one grip at the time, and reacts very slow on my laptop.
(But my recently bought “refurbished laptop” has more issues, like render problems. Maybe it is my machine. Must have a look at better hardware).
Since I am not a GH user, and I try to avoid the learning curve for GH, I hope this functionality will make it to the standard UI of Rhino.
I will play some more with this GH definition, see how I can use it for SubD by using the control cage.
Hope that it will accept SubD objects and surfaces as input soon.
Question:I tried to set multiple meshes as the meshes to deform, but that does not seem to work.
Can I fix that?

Thank you for your help!


When i try to install Fattener i get this message:

Don’t know much about grasshoper but it seems to be someting missing… Can you help me to find where to get it?

Also, can this be used to modify a SubD instead of a mesh?

Thanks a lot for your best attention,

HI Daniel , first of all thanks for your answer to this post

i never used rhino or GH box morphing and now i am getting unconsistant results.

i made a closed quad mesh to be used as a referemce box , i then copied it and randomly deformed the target box 1 by acting on contro, points but the result is this

this was just a quick test but i was expecting to get the hand remapped on new box and deformed according to new box. would you please tell me what i am doing wrong ?

can the control boxes be created as a quad mesh ?


2021116 (424.1 KB)

I just downloaded your GH file and the morphing works fine.

Have you clicked the button?

1 Like

Hey Daniel, I seem to be missing a block when I open your file up.

Hi @michael.martin,

You need to install the .gha from the start of this post to open the definition

i have also placed the “Fattener.gha” into the libraries folder but still cant seem to get it to work.

It’s the .gha file you need to put in the libraries folder, not the .gh definition.
The .gha also needs to be unblocked
Then it will work after you close and reopen Rhino

It was the unblocking. Thanks!

1 Like