[R] rgl lighting question

Duncan Murdoch murdoch at stats.uwo.ca
Sat Nov 22 16:28:31 CET 2008


On 21/11/2008 2:30 PM, Rajarshi Guha wrote:
> Hi, I'm using rgl to generate a 3D surface plot and I'm struggling to  
> get the lighting correct. Currently the surface gets plotted, but is  
> very 'shiny'. On rotating the view, I get to see parts of the surface  
> - but overall I don't see much detail because of the spotlight like  
> lighting.
> 
> I've played around with the specular, ambient and diffuse but I can't  
> bring out the details of the surface. Could anybody point me to some  
> examples of how to make a plain matte surface, which isn't obscured  
> by specular reflections?

This gives the regular shiny surface:

library(rgl)
example(surface3d)

This gives one with no specular reflections, because the material 
doesn't do that:

open3d()
surface3d(x, y, z, color=col, back="lines", specular="black")

And here's another way to get no specular reflections.  This time 
there's no light to reflect that way:

open3d()
rgl.pop("lights")
light3d(specular="black")
surface3d(x, y, z, color=col, back="lines")

I suspect you missed the rgl.pop() call.  If you just call light3d or 
rgl.light() you'll add an additional light, you don't change the 
existing one.

Duncan Murdoch



More information about the R-help mailing list