Hi everyone, I want to plot a 3D interpolation of the concentration of aquatic organisms. My goal would be to have the result represented as clouds with a density proportional to the abundance of organisms, so that I could fly (well, swim actually ;) ) through the scene and see the patches here and there. Basically, I want to do something like this: http://www.youtube.com/watch?v=27mo_Y-aU-c but simpler and with only clouds.
I though about doing it this way: 1- interpolate to a fine grid 2- plot points at each grid intersection of transparency inversely proportional to abundance 3- blur/fog a bit each point to create the general impression of a cloud So far I am stuck on 3 but maybe there is a better overall solution. Here is some code that reads the result of the interpolation on a coarse grid and plots it: # read a set of gridded data points in 3D d = read.table("http://dl.dropbox.com/u/1047321/R/test3Ddata.txt", header=T) # plot library("rgl") spheres3d(d$x, d$y, d$z, alpha=alpha, radius=0.05) And here is a version that actually performs the interpolation a random set of points in 3D through kriging in case you want to try with increase precision. # create a set of random data points in 3D n = 50 data3D = data.frame(x = runif(n), y = runif(n), z = runif(n), v = rnorm(n)) # do 3d interpolation via kriging library("gstat") coordinates(data3D) = ~x+y+z range1D = seq(from = 0, to = 1, length = 10) grid3D = expand.grid(x = range1D, y = range1D, z = range1D) gridded(grid3D) = ~x+y+z res3D = krige(formula = v ~ 1, data3D, grid3D, model = vgm(1, "Exp", .2)) # convert the result to a data.frame d = as.data.frame(res3D) # compute transparency (proportional to the interpolated value) maxD = max(d$var1.pred) minD = min(d$var1.pred) alpha = (d$var1.pred - minD)/(maxD - minD) # reduce maximum alpha (all points are semi-transparent) alpha = alpha/5 # plot library("rgl") spheres3d(d$x, d$y, d$z, alpha=alpha, radius=0.05) I saw the fog effect but it seems to add a fog in the scene to increase depth. What I want is my scene to actually look like a fog. Thanks in advance for any help. Sincerely, JiHO --- http://maururu.net ______________________________________________ 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.