Jump to content

Soplights


Recommended Posts

Hello all

I am trying to make some geometry (surface or points) to cast/emit some light. Came across Ben Schrijvers SopLight that might to the trick, but I cant get my head around the Sop. Is there anyone who can show me with a sample .hip file how it should be used? (I have compiled the vfl and installed the otl, its how to use it I am struggling with)

or there might be another way to achieve the same effect?

regards

marin

Link to comment
Share on other sites

By the way, when I compile the VEX code using:

vcc -l soplights.otl soplights.vfl

and install the otl, the Soplight operator has no inputs just an output.

So I might be doing something wrong there...

(using apprentice Houdini 8.1.xxx)

/marin

Link to comment
Share on other sites

hi,

i'm achieving similar results with irradiance. it's a kind of a hack, so it's only good,

if you would use full irradiance anyway. otherwise its prohibitively slower than a SOPlight.

or at least i think.. i never tried that..

all you have to do is setting up a normal full irradience light, and to assign

a constant shader to your light emitting object and set it's color to an overdriven

value, for example 10.

while it gives a nice result, it's painfully slow, so if you find a faster

solution i would be very excited.

cheers

bmt

Link to comment
Share on other sites

yep, and here is another idea, which i have not tried yet: to instanciate

lights to the points of your emitting surface. it could be much faster than

irradiance.

i would put spotlights with a 180 degree cone in the directions of the surface normals.

cheers

bmt

Link to comment
Share on other sites

Hi, thanks for the reply bmt.

I got a solution for the Soplight source code from BenS (Thanks), I have not tried it yet:

If you add the following lines somewhere close to the other lines starting with #pragma then it should give the node 2 inputs.

#pragma opmininputs 2

#pragma opmaxinputs 2

Link to comment
Share on other sites

i had a minute to experiment with this, here are the results:

Global illumination solution:

post-2183-1173275984_thumb.jpg

Instanced lights solution:

post-2183-1173276020_thumb.jpg

Conclusions:

GI is more accurate, support much more features than what the original problem needs, much much slower, at least in the above example.

Instancing is FASTER (if only noise level is the measure of quality. i mean you need a lots of light to be close to optical correctness), flexible (you have more parameters to tune), slower and more complicated to set up, and manage.

the .hips:

geoLight_globill.hipnc

geoLight_lightinstances.hipnc

sorry i'm an idiot, so the two camera positions in the two scenes are not equal.. and i'm in a rush..

cheers

bmt

Link to comment
Share on other sites

A couble of notes - you might be able to get a more accurate result with the instancing solution by adding a phantom object to the scene representing the blocking torus. For the GI image, you should also try using the irradiance cache (specific tab on the mantra ROP) to help speed up the GI calculations. One problem with using small, bright objects for GI is that the sampling algorithm will not converge very quickly - which shows up as noise in your image.

Andrew

Link to comment
Share on other sites

A couble of notes - you might be able to get a more accurate result with the instancing solution by adding a phantom object to the scene representing the blocking torus. For the GI image, you should also try using the irradiance cache (specific tab on the mantra ROP) to help speed up the GI calculations. One problem with using small, bright objects for GI is that the sampling algorithm will not converge very quickly - which shows up as noise in your image.

Andrew

the above examples only have the most trivial optimisations, so there is no low-res phantom placeholder for the nurbs torus, but irradiance caching is turned on indeed.

perceptable noise levels drop when there are other lights in the scene contributing to the diffuse channel. another way of optimizing render time is to use polygons instead of curved surfaces whenever it's possibble, both for the emitting and the lit surfaces.

but it WILL be slow.

the optimum solution would be a shader which acts like an arealight but with whatever geometry it is attached to. that would be optically correct (in the sence of lighting and shadows, but wouldn't support indirect illumination and color bleeding) and would render much faster because with full irradiance you sample your whole scene not just your emitting objects (which situation causes the noise).

unfortunately at the moment i'm too dumm to create such a shader, but in my estimates it couldn't be too hard for someone with a deeper understanding of VEX and the underlying render architecture.

you can also try instancing area lights.. if i'm rigtht that's not the optimum solution but close to that..

cheers

bmt

Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...