Morphing from ObjectA to ObjectB

I am looking for a way to change the shape of this sphere and octopus.
I think this sphere and octopus must have the same attributes, but I want to know how to change the shape of completely different objects A and B

My situation is the image below.
I want to change from the left lion to the right lion.
The script is valid, but I want to generate the change process as a realistic object (a lot of triangular meshes are scattered now)

The issue is your topology, this is more than vertex count, but also requires vertex order. Pufferfish will work if vertex count is the same but no guarantees on the results. Any blending software (except voxel based blending like from Dendro, which will degrade your geometry resolution to some degree) will have this constraint. My example of the ball to the squid works because the squid was modeled from the ball, without adding verts or changing vert order.

So if you want to blend between shapes of completely different objects, then I am afraid to tell you that you are going to have to take the time and do the setup work to match your topologies. This will mean remodeling shape B starting from shape A (or A from B) or trying to wrap shape A’s verts onto Shape B to create a new shape B (the wrapping method also usually doesn’t work well unless the two geometries are relatively close in shape.

Take a look at these notes from Autodesk Maya about blending which are industry standard guidelines for this kind of work.

"With this method of shape animation, you create multiple target objects that are duplicates of the base object, then modify the vertex positions on each one of the target objects into the forms you want. For example, you can use this method for facial animation, with each target object representing a different facial expression.

If you’re using target objects that have a different number of vertices than the base object, you should turn off the Check Topology option. However, If the vertices are different and this option is off, you might see some unusual blending, such as an eye blending into the nose.

If the target and base objects have the same number of vertices but their order is different, Maya blends the shapes whether Check Topology is on or off. However, the position of the base object’s vertices will be transformed to the position of the target objects’ vertices. This change might cause the object to blend in a way you might not expect. To ensure a smooth transition between base and target, make sure the order of vertices is the same in both base and target objects."

In short, there is no magic solution, you have to do the setup work to create compatible shapes. After that, blending is easy.

Side Note: Why are your components missing icons?

1 Like

Thank you for your prompt reply and courteous response.
I want to morph with grasshopper as much as possible.
So I was interested in the second proposal “Wrap the vertices of shape A with shape B to create a new shape B”.
Please tell me the specific method and materials to understand it.

What software are you attempting this in?

Rhino 5 for Mac

With your shapes it won’t be easy. Look into things like shrink wrapping. I would def try and wrap the larger lion to the smaller.

Here you can see an example of Daniel Piker matching topologies first by kangaroo.

The other way I can think of is to define your shapes through SDF’s I think Axolotl does this kind of thing, then do a linear interpolation from one shape to the other. The problem is that creating the shapes through SDF’s can be time consuming, the automatic transformation from meshes to this sort of function is an active topic of research so to my knowledge there’s not an out of the box solution yet

2 Likes

Yes, it is the same proposal mentioned before but with Dendro (it’s faster from my exp) but has the issues you mention and also tends to create very heavy meshes that lose a lot of the sharp edge qualities (things tend to round out).

Personally what I would do is the following:
1.Place small lion in big lion.
2.Soft move small lion verts to fill big lion best as possible (legs in legs, tail in tail, head in head, etc.)
3.Pull big lions verts to the newly deformed small lion.
4.Evaluate the pulled verts from deformed small lion to original small lion to make a new small lion that has big lions topology.
5. Tween from big lion to newly built small lion.

Actually, I think this wouldn’t even be that time consuming but I see no file attached to try it for @tpishida6447 .

Hi. Michael
I tried the method you presented.
When I look at the process of change, it looks like it has improved a lot from the disjointed state that I originally posted.
However, the shape does not return to object A when changing from A to B. What is the problem?
(I changed the target because the number of meshes was too large for my Mac to process. I think these (meteorites) are very similar in shape.)
I will attach the file.


03.gh (29.4 KB)

Hi, shape does not matter. It is topology that matters. Topology = vert and face count as well as vert order and connectivity. The reason why yours is doing that is easy, you missed a very important step. The smaller shape should be placed into the larger shape for the kangaroo method. Right now all the larger shapes points are being pulled to the side of the smaller shape by kangaroo. Look at the kangaroo file, the two meshes are ontop of eachother.

Here is the basic setup without kangaroo, however the kangaroo method has a similar logic just used physics to make the modified shape 2 (the automation with the physics can also be tricky on more complex shapes and is why I prefer the manual editing of a modified shape 2 as you can have much more control on the accuracy of what blends to what). The more time you spend making nice matching topology assets, the better tweens you will have.



TweenDifTopoMesh.gh (25.6 KB)

3 Likes