ouyang Posted December 13, 2017 Share Posted December 13, 2017 Hi ! I have an object and a light. I want to create an attribute on the points of my object that are directly illuminated by my light. 1 when the point is illuminated, 0 when it's not. For now I have this : 4@m = optransform('/obj/hlight1'); vector lightDirection = set(0, 0, 1) * 4@m; float result = dot(- lightDirection, @N); result = fit(result, 0.99, 1, 0, 1); @Cd = set(result, result, result); The problem is that I get a value on my result even when the goal of my spotlight isn't in the direction of my object. In fact, it only takes care of my light's center. I want it to take care of my light direction but I can't find where to get the goal or target parameters (tx,ty,tz). Can you help me guys ? I join the scene attached. LightDirection.hipnc Quote Link to comment Share on other sites More sharing options...
f1480187 Posted December 14, 2017 Share Posted December 14, 2017 (edited) Your code does basic point lighting with lambert. You need to add cone functionality. Check example $HH/vex/Light/asad_light.vfl for different light parameters. Basic spot light support: // Point wrangle. string lobj = "/obj/hlight1"; vector l = ptransform(lobj, "space:current", {0, 0, 0}) - @P; vector lz = vtransform(lobj, "space:current", {0, 0, 1}); float coneangle = ch(lobj + "/coneangle"); float conedelta = ch(lobj + "/conedelta"); float rolloff = ch(lobj + "/coneroll"); float angle = cos(radians(coneangle/2)); float delta = cos(radians(coneangle/2 + conedelta)); float cone = smooth(min(angle, delta), max(angle, delta), dot(lz, normalize(l)), rolloff); float lambert = clamp(dot(@N, normalize(l)), 0, 1); @Cd = cone * lambert; Use integer casting to output hard mask: @Cd = length(@Cd) > 0; sop_spotlight.hipnc Edited December 14, 2017 by f1480187 4 Quote Link to comment Share on other sites More sharing options...
ouyang Posted January 10, 2018 Author Share Posted January 10, 2018 Thanks a lot!!! I didn't think about cone functionality! I try with different lighting, it works very well!! Thanks! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.