John Muschelli
2012-Nov-16 22:59 UTC
[R] Question about contour3d and writeWebGL: rgl and misc3d package
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)? Thanks, John [[alternative HTML version deleted]]
Duncan Murdoch
2012-Nov-16 23:55 UTC
[R] Question about contour3d and writeWebGL: rgl and misc3d package
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
Duncan Murdoch
2012-Nov-17 01:37 UTC
[R] Question about contour3d and writeWebGL: rgl and misc3d package
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 inSounds 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 >