spider853

04 April 2012, 12:04 PM

Hi, I need some hints, ideas or guides on how to make an additive morphing.

By additive morphing I mean the fallowing:

Having a mesh A.

Two duplicates of mesh A with some deformation B and C.

For example I need to deform the mesh A as A -> B + C

That mean that I need to deform A to B (this is easy its just the same B)

Then I need to add the C - A difference deformation to B.

In other words I need to make deformation C in B space (relative deformation of C to A, applied to B).

The first idea that I had is to somehow make a vertex space, and store the deformation B and C relative to same vertex index space.

then modifying to B, I recalculate the vertex space in B, and apply the difference vector (C - A) to B.

Sounds good but 3ds max doesn't have vertex space...

I saw that its have some pseudovertex space by using an Edge and a Normal to compute the vertex space. But because its depends on one edge, it may be modified in B deformation and resulting deformation may look incorrect. Because a small rotation on that edge will result in rotation of all vertex space without counting the other edges.

Another idea could be to use sum of all edges and normalize to get the vector for computing the vertex space.. but then another problem may arrive, 2 or more vectors can cancel each other resulting in a null vector or vector that doesn't count other edges, and by this making an undefined state.

So does anybody has some idea about this?

Thanks

By additive morphing I mean the fallowing:

Having a mesh A.

Two duplicates of mesh A with some deformation B and C.

For example I need to deform the mesh A as A -> B + C

That mean that I need to deform A to B (this is easy its just the same B)

Then I need to add the C - A difference deformation to B.

In other words I need to make deformation C in B space (relative deformation of C to A, applied to B).

The first idea that I had is to somehow make a vertex space, and store the deformation B and C relative to same vertex index space.

then modifying to B, I recalculate the vertex space in B, and apply the difference vector (C - A) to B.

Sounds good but 3ds max doesn't have vertex space...

I saw that its have some pseudovertex space by using an Edge and a Normal to compute the vertex space. But because its depends on one edge, it may be modified in B deformation and resulting deformation may look incorrect. Because a small rotation on that edge will result in rotation of all vertex space without counting the other edges.

Another idea could be to use sum of all edges and normalize to get the vector for computing the vertex space.. but then another problem may arrive, 2 or more vectors can cancel each other resulting in a null vector or vector that doesn't count other edges, and by this making an undefined state.

So does anybody has some idea about this?

Thanks