[Closed] visibility based on 3D mask
hey guys. im trying to create a script that allows me to controll the visibility of an object based on whether or not a ray that is fired from its position hits an animated mesh above it.
here is an mov demonstrating what i mean - [ http://www.spinifexinteractive.com.au/forum/maxscript/previewmp4.mov ]( http://www.spinifexinteractive.com.au/forum/maxscript/previewmp4.mov)
however when i render after the first frame i get -
>> MAXScript Script Controller Exception: -- Runtime error: Illegal self-reference in controller script <<
my scene is basicly a huge array of hexagons (copies, not instances) with this script as a controller on a visibility track -
--script
refsArray = (refs.dependents this)
scriptObj = undefined
for i in refsArray do(
if (isvalidnode i) then (
--print (i.name)
scriptObj=i
– this is the code to create a variable that references the object running the script
)
)
d = ray scriptobj.pos [0, 0, 1]
if ((intersectray $hitobj d)!=undefined) then (
– $hitobj can be any object by that name looming over the top (up the z axis). in this case it is a sphere.
scriptobj.wirecolor = [255,255,255]
result=1
) else (
scriptobj.wirecolor = [0,0,0]
result=0
)
result
--end script
so yeah its pretty straightforward, but i cant seem to get it to work on render or find what the illegal self refrence is.
if i get rid of that result variable at the end i get something like this -
[ http://www.spinifexinteractive.com.au/forum/maxscript/pre40-100.mov ]( http://www.spinifexinteractive.com.au/forum/maxscript/pre40-100.mov)
which is cool for the first few frames, but then it messes up.
Does anyone know why is this occurring? is there a better way of doing this so that i dont have to have a seperate script for each object as well? it must be very inefficient.