[Closed] Apply same FFD modifier to different meshs ,but different orientations happen
i used the following script to apply mesh2’s FFD modifier on mesh1
addModifier $Mesh1 $Mesh2.modifiers[1];
However , the final orientation of mesh1’s FFD modifier is different from mesh2’s FFD modifier, so those two meshs are deformed in two different directions with the same FFD modifier (instanced) .
How can i make sure the orientation of FFD modifier will be the same for both two meshes?
Please help!
thx
You need to set the transform of the FFD in both to be what you need.
I would have to look at the FFD to be exact and I can’t at the moment but something like
for x in selection do x.modifiers[1].gizmo.transform=matrix3 1
Here is the test scene for this case. (in 3dsMax)
One Sphere (Mesh1) exactly placed at the Sphere part of Mesh2.
After i applyed FFD on Mesh2, i want the Mesh1 undergo the same FFD with Mesh1.
Which means the result will be exactly the same as “selecting both meshes and applying single FFD on them”.
I have try the following step but still fail to get what i want.
- run “$Mesh1.pivot=$Mesh2.pivot”
- run “$Mesh1.transform=$Mesh2.transform”
- perform FFD4x4x4 on Mesh2
- run “addModifier $Mesh1 $Mesh2.modifiers[1];”
Please help
thx
It appears that the components need to have the same transform in order to share a FFD modifier.
One way to do it is to transform the verts in mesh1 so that we can set its transform to mesh2's and have everything look the same.
deltaMat = $Mesh1.transform * (inverse $Mesh2.transform)
convertToMesh $mesh1
for v = 1 to $mesh1.numverts do
(
setVert $mesh1 v ((getVert $mesh1 v) * deltaMat)
)
$mesh1.transform = $Mesh2.transform
m = FFD_4x4x4()
addModifier $mesh1 m
addModifier $mesh2 m
thx so much for your reply
Can the size of the FFD Modifier be exactly the same?
Now the mesh1 hv a smaller FFD Modifier.
Also, can i not addModifier at the same time?
I want to create FFD modifier on mesh2 first, then modify the FFD,
and then finally apply the same FFD on mesh1.
I thought you wanted one modifier instanced onto two objects (that’s why you see two cages each scaled to fix a mesh)
If you want one modifier displayed you can use a group:
max modify mode
m2mat = $mesh2.transform
g = group #($mesh1,$mesh2)
-- Save the group transform
savemat = g.transform
-- Orient the group so that mesh2 is at the origin
g.transform = inverse m2mat
-- Add an FFD to the group (aligned with mesh2)
select g
modPanel.addModToSelection (FFD_4x4x4 ())
-- restore the group orientation
g.transform = savemat
ungroup g
[EDIT: I missed the ‘ungroup’ on the last line]