On 09/09/2010 12:02 PM, james.fo...@diamond.ac.uk wrote:
Dear R community (and Duncan more specifically),
I can't work out how to make additional light sources work in rgl.
Here is the example.

First I create a cube and visualize it:

>  cubo<- cube3d(col="black")
>  shade3d(cubo)

Next I position the viewpoint at theta=0 and phi=30:

>  view3d(theta=0,phi=30)

Next, I want to create a 2nd light source which diffuses red light from the 
front face. I thought I could do:

>light3d(diffuse="red",theta=0,phi=0)

but...the front side doesn't show any red-iness. Same goes for specular and 
ambient.
What am I doing wrong here? How should the fron side show in red colour?

Black doesn't reflect anything, so that's why you're not seeing the red. Colour the cube white, and you'll see it turn pink when you turn the red light on, or red if you turn off the default light first (using rgl.pop("lights")).

Be aware that OpenGL (underlying rgl) has a fairly complicated lighting model. When you say col="black", you're only setting the "ambient" colour, i.e. the colour that appears the same in all directions. (It won't be the same on all faces of the cube, because the intensity depends on the incoming light.) There is also a "specular" component, which makes things appear shiny, because it's brighter from some viewpoints than others. It is normally white. Finally there's an "emission" component, which doesn't care about lighting, but is normally turned off.

Lights also have 3 components, "ambient" (non-directional), "diffuse" (somewhat directional), and "specular" (highly directional).

Duncan Murdoch

J

Dr James Foadi PhD
Membrane Protein Laboratory (MPL)
Diamond Light Source Ltd
Diamond House
Harewell Science and Innovation Campus
Chilton, Didcot
Oxfordshire OX11 0DE

Email    :  james.fo...@diamond.ac.uk
Alt Email:  j.fo...@imperial.ac.uk



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to