[Closed] Scale Wireing question
Hi all
i like to use wire parameter to wire the scale of 2 objects the way that when i scale the source object the target object get scaled multiply by 2 or 3 and … But when i wirte this
paramWire.connect $.transform.controller[#Scale] $target.transform.controller[#Scale] "Scale*2"
the target object sclaed by two.
what i like to get is scaling the target obj by 2 but the target keep its initial scale value.If it was position same as scale i mean point 3 value, i freez and the problem gone but how about the scale
Thanks in advance
The problem is the way we think about the scale value.
The base value is 100 (or 1) and not 0 as in the case of a position.
So when you write “scale2″ you get “1002 = 200”
Compared to a position if you write “position2″ you get “0 * 2 = 0” so the object stay.
But if your object was at a position value of 100 you’ll get the same “issue” as the scale: “1002 = 200”. So your object will not stay in place neither…
And even if you manage to keep the 100% value on both object you ‘ll have a sort of snap on the first percent.
I made a quick scene to explain.
I may be wrong but this is how I see it
https://www.dropbox.com/s/j78ijcxd0g2eatz/Scale_Cgtalk_Explanation.max?dl=0
Thanks for the reply
I thaught that The Rotation controller is just a pain in 3ds max , scale is a good pain too :))
here it is my try but when it is the time to scale it will scale with a pop up
"if ( X_Scale >1) then ( X_Scale*2) else X_Scale
paramWire.connect $source.scale.controller.ScaleXYZ.controller[#X_Scale] $Target.scale.controller[#X_Scale] "if ( X_Scale >1) then ( X_Scale*2) else X_Scale"
if the answer lay on other method such as float expression i would be greateful if sb leave some reply
It may be good to write out exactly what you are looking for with actual scale values.
Source: Scale 100%
Target: Scale 100% result =?
Source: Scale 50%
Target: Scale 100% result =?
Source: Scale 100%
Target: Scale 50% result =?
Right now your explanation doesn’t really description the effect and result you expect. I have an idea on how to do it, but would need to know what exactly you expect the scale value of the target to be.
-Eric
Hi Erik
Thanks for the reply
What actually I’m looking for is, i have 4 objs in a scene first one is source obj the other 3 are targets.
when i scale the source the first target obj get scaled by 2 (source obj scale *2 or 2.5) the second target obj get scaled by 3 (source obj scale *3 or 3.5) and the third target object get scaled 3 (source obj scale *4.5 or 4.5) of the source object
it’s not exactly what you are looking for but it might help.
Okay you can do this with list controllers and wiring the Source Scale (X, Y, or Z) to the Weight of the second controller.
ObjA = Src, ObjB = Target.
ObjB Scale Controller = Scale List
Scale List Controller 1 = Active
Scale List Available = Scale Bezier
Scale of Controller = to the Multiplier value you desire 2 = 200%, 3=300%, 4=450%
Now wire the scale of ObjA to the ObjB Weight 2 value.
This was the best way I could find. If you activate Controller 1 you can now scale and have the other scale from the source on top happen on top.
Basically the math works properly to prevent double additive effect. If you wire to the scale anything over 100%. It should work with values below 100% from the source as well.
Hope that works for you.
-Eric
Thanks
Hydraa thanks .that is one of the best way when you want to use Distance command and avoid using float script because script controller are so slow unfortunately not working for this practice.
Eric Thank you so much that was exactly what i was looking for, work perfectly
Thanks again