Notifications
Clear all

[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.