2
$\begingroup$

I need to realistically simulate the light field created by a tablet/mobile phone LCD display including the limited display angle (the rendered output of the scene will be used for training a computer vision application). At present the LCD in scene is created with a material featuring a combination of a pixel image array and scene image being fed into an emission node as described in this youtube tutorial which looks convincing when viewed directly however does not take the limited viewing angle of pixels into account - ideally I would like to create a grid of RGB spotlight triplets so that the outer fringe (umbra?) of the spotlights could be controlled by a parameter or map - however were talking about a 1080 HD screen that needs to be simulated. Any suggestions on how this could be done? (the render machine is a 3.1 Ghz quad core with 8GB ram)

| improve this question | | | | |
$\endgroup$
  • $\begingroup$ I think the problem is to provide an answer that could be meaningful for training a CV application. Nothing is obvious also to "guaranty" a realistic rendering. Can you add some information about that? $\endgroup$ – lemon Feb 3 at 13:38
  • $\begingroup$ The program is being trained to do photometric stereo using the illumination provided by patterns on the screen - the training image is from the rendered camera which is situated in the scene to mimick a forward facing phone camera. My latest idea for injecting a viewing angle restriction is to place a block of material with a volume absorption shader (the path through material increases reducing brightness as the viewing angle changes - in theory).. still working on other parts of project before I put that to the test. $\endgroup$ – norlesh Feb 4 at 7:51
  • 1
    $\begingroup$ Maybe this kind of approach can help, as it compares a target surface normal to the camera angle. blender.stackexchange.com/questions/147491/… $\endgroup$ – lemon Feb 4 at 8:19
2
$\begingroup$

Thanks to the suggestion from user lemon in the comments the solution I ended up with was to use the dot product between the geometry normal and the incoming ray vector in order to control the strength of the shader emission (divided the dot product by the length of the incoming ray to normalise the value).

The emission is cut off completely when the sine of the angle is below the value in the 'Greater than' node. And increases smoothly above that angle until reaching full strength when parallel with the normal. Shader node arrangement

| improve this answer | | | | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.