Notifications
Clear all
[Closed] Math Incorrect for Parameter Wiring?
Feb 26, 2007 4:37 am
Hey fellas,
I've been working on a script that makes a light's color dependant on it's location.
However, I've narrowed down a problem to a single location; the parameter wiring!
Check this out:
o = omniLight()
position = o.pos = [1,1,1]
temp = position.z / sqrt(position.x^2 + position.y^2 + position.z^2)
o.color = temp * [120,120,120] as color
This creates an Omnilight with 69,69,69 as the color. Seems straight forward...
Now try this:
Go into the wire-params editor. Rig up a parameter relationship FROM Position TO Color- like in the image attached. Include the same equation in the Expression box as shown below:
(position.z / sqrt(position.x^2 + position.y^2 + position.z^2))* [120,120,120] as color
THIS method of calculating it, however, results in the color
[b](color 17666.9 17666.9 17666.9)[/b]
Am I to understand that math is different in Max depending on where you use it?
Any thoughts on what might be causing this? I've been bashing my head against the monitor for 4 hours trying to figure this one out!
1 Reply
Feb 26, 2007 4:37 am
While MAXScript typically expresses color values as RGBA from 0 to 255, CONTROLLERS do not – they store color data in the range from 0 to 1.0.
So instead of multiplying by [120,120,120], you have to multiply by [120,120,120]/255 and the resulting color will be (color 69.282 69.282 69.282):
(position.z / sqrt(position.x^2 + position.y^2 + position.z^2))* [120,120,120]/255
or shorter
position.z / length position * [120,120,120]/255
or even shorter
position.z / length position * [0.470588,0.470588,0.470588]