Notifications
Clear all
[Closed] Blending transforms
Aug 07, 2008 5:46 pm
Hi, I wrote a script that can save transforms for any objects. Also it shows a preview of stored poses. It works quite well, but now I want to add a slider that will blend between this poses. I made this slider but the problem is that the transforms blend in linear way.
Just like on this image:
But I want to make it blend based on circle curv. Because now it works like stretchy system. How can I made this to work?
Here is a part of script for this slider:
on BlendPosesSl changed i do
(
if ca.count > 0 then
(
for b = 1 to (ca.count-1) do
(
--curTrans[b] - current Trasform of object that is stored
--vals[b] - a saved pose
temp2=vals[b] * PivotPose.node.transform
temp4=(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]) -- temporary matrix
temp4.row1 = (temp2-curTrans[b]).row1 * [i,i,i]
temp4.row2 = (temp2-curTrans[b]).row2 * [i,i,i]
temp4.row3 = (temp2-curTrans[b]).row3 * [i,i,i]
temp4.row4.x = (temp2-curTrans[b]).row4.x * i
temp4.row4.y = (temp2-curTrans[b]).row4.y * i
temp4.row4.z = (temp2-curTrans[b]).row4.z * i
withBadScale = curTrans[b]+temp4
EndTransform = (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]) -- another tomporary matrix
EndTransform.row1 = withBadScale.row1
EndTransform.row2 = withBadScale.row2
EndTransform.row3 = withBadScale.row3
EndTransform.row4 = withBadScale.row4
EndTransform.row1 /= withBadScale.scalepart.x
EndTransform.row2 /= withBadScale.scalepart.y
EndTransform.row3 /= withBadScale.scalepart.z
theSourceScale = vals[b].scalepart
theTargetScale = EndTransform.scalepart
EndTransform.row1 *= (theTargetScale.x + ((theSourceScale.x-1)* i))
EndTransform.row2 *= (theTargetScale.x + ((theSourceScale.x-1)* i))
EndTransform.row3 *= (theTargetScale.x + ((theSourceScale.x-1)* i))
AllObjects[b].node.transform=EndTransform
)
)
)