[R] Question about contour3d and writeWebGL: rgl and misc3d package

Duncan Murdoch murdoch.duncan at gmail.com
Sat Nov 17 02:37:45 CET 2012


On 12-11-16 7:09 PM, John Muschelli wrote:
> The contour its just half a brain and the vertices are not surfaces and
> are filled in

Sounds like a bug in the browser.  When I try it in Firefox 16.0.2 it 
doesn't display properly; the error log (found via Tools | Web developer 
| Error console has several errors in it, the first of which is:

Error: array initialiser too large

That's clearly a limitation of the browser.  You might be able to work 
around it by plotting one layer at a time; writeWebGL will write each 
rgl object in separate arrays of data.  If the layers are separate, the 
browser might be able to handle them.  I just tried this, and it works 
on my system, using this code:

contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000),
  alpha = c(0.2), color = c("white"))

  contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(8000),
  alpha = c(0.5), color = c("red"), add=TRUE)

  contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(10000),
  alpha = c(1), color = c("green"), add=TRUE)

followed by the browseURL call you already had.

Duncan Murdoch


>
> This was sent from a mobile phone so please excuse any misspellings or
> typos.
>
> On Nov 16, 2012 6:55 PM, "Duncan Murdoch" <murdoch.duncan at gmail.com
> <mailto:murdoch.duncan at gmail.com>> wrote:
>
>     On 12-11-16 5:59 PM, John Muschelli wrote:
>
>         I saw that in rgl:::writeWebGL that "Polygons will only be
>         rendered as
>         filled; there is no support in WebGL for wireframe or point
>         rendering.".  I
>         found that you can easily use contour3d to make reproducible
>         contour web
>         figures, such as (taken from contour3d help)
>
>             library(AnalyzeFMRI)
>
>             a <- f.read.analyze.volume(system.__file("example.img", package=
>         "AnalyzeFMRI"))
>
>             a <- a[,,,1]
>
>             contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000),
>
>                       alpha = c(0.2), color = c("white"))
>
>         browseURL(paste("file://", writeWebGL(dir=file.path(__tempdir(),
>         "webGL"),
>
>                     width=500), sep=""))
>
>         But I found problems with multiple levels, such as
>
>             contour3d(a, 1:64, 1:64, 1.5*(1:21), lev=c(3000, 8000, 10000),
>
>                       alpha = c(0.2, 0.5, 1), color = c("white", "red",
>         "green"))
>
>
>         browseURL(paste("file://", writeWebGL(dir=file.path(__tempdir(),
>         "webGL"),
>
>                     width=500), sep=""))
>
>
>         Does anyone know why this happens, or a way to fix it (maybe
>         using separate
>         = TRUE for contour3d)?
>
>
>     Why what happens?
>
>     Duncan Murdoch
>




More information about the R-help mailing list