[R] rgl::writeWebGL( , prefix = , )

Duncan Murdoch murdoch.duncan at gmail.com
Tue Feb 3 18:32:33 CET 2015


On 03/02/2015 11:15 AM, Keith Jewell wrote:
> Thanks Duncan, your suggestions led me to a solution.
>
> Perhaps this could be reflected in the help, but I'll leave that
> decision to you.
>
> It comes down to the template. As well as including a single line for
> each scene containing
>     paste("%", prefix, "WebGL%"); e.g. %WebGL% or %AWebGL%
> the <body  > tag must contain an onload attribute with an element for
> each scene
>     paste0(prefix, "webGLStart();")
> e.g. <body onload="webGLStart(); AwebGLStart();">

In the next revision, the %prefix% substitution will be done, so that 
won't need manual editing.
>
> While I'm suggesting additions to the help, it took me a little while to
> work out that when writing multiple scenes the result from one
> writeWebGL was the template for the next. E.g. in the above example with
> two scenes:
>
> outfile <- writeWebGL(dir=getwd(), template = file.path(getwd(),
> "template.html"), prefix="")
> # position to next scene
> outfile <- writeWebGL(dir=getwd(), template = outfile, prefix="A")
>
> Thanks for your help (and a really nice package!)

You should also look at knitr:  recent versions have good support for 
including WebGL output automatically.  You just
need to say that you want the WebGL driver, and it handles the details.  
I've used it with Markdown (that's what the current rgl vignette uses), 
but there are also other input formats that can produce .html output.

Duncan Murdoch

>
> Keith J
>
> On 03/02/2015 15:14, Duncan Murdoch wrote:
> > On 03/02/2015 9:43 AM, Keith.Jewell at campdenbri.co.uk wrote:
> >> Dear all,
> >>
> >> I am using writeWebGL to create an HTML page containing an interactive
> >> 3D plot. It works fine with the default prefix="" but fails when I
> >> specify a prefix "for different scenes displayed on the same web page"
> >> (quoting ?writeWebGL).  I'm sure I'm misreading the help, and would
> >> appreciate guidance.
> >>
> >> Briefly, it works fine with the default writeWebGL( ,prefix="", ) and
> >> the template containing %WebGL%
> >> I have not been able to make it work with any other value of prefix;
> >> e.g. writeWebGL( ,prefix="A",) and the template containing %AWebGL%
> >>
> >> Here is code illustrating the problem.
> >>
> >> First create three templates:
> >> a) Vanilla: copied system.file(file.path("WebGL", "template.html"),
> >> package="rgl") to file.path(getwd(), "template.html")
> >>
> >> b) First attempt: ?writeWebGL says # "[the template] should contain a
> >> single line containing paste("%", prefix, "WebGL%"), e.g. %WebGL% with
> >> the default empty prefix"
> >> paste("%", "A", "WebGL%")
> >> # [1] "% A WebGL%"
> >> so file.path(getwd(), "templateA.html") is a copy of (a) replacing
> >> %WebGL% with % A WebGL%
> >>
> >> c) Second attempt: file.path(getwd(), "templateB.html") is  a copy of
> >> (a) replacing %WebGL% with %AWebGL%
> >>
> >> then, in R
> >> #-----------
> >> library(rgl)
> >> plot3d(1:5, 1:5, 1:5) # generate rgl scene
> >> #-----------
> >> # a) vanilla
> >> writeWebGL(dir=getwd(), template = file.path(getwd(),
> >> "template.html"), prefix="")
> >> # works OK; result opens and works in IE
> >> #----------------
> >> # b) First attempt, my reading of ?writeWebGL
> >> writeWebGL(dir=getwd(), template = file.path(getwd(),
> >> "templateA.html"), prefix="A")
> >> # Error in writeWebGL(dir = getwd(), template = file.path(getwd(),
> >> "templateA.html"),  :
> >> #                       template ‘m://templateA.html’ does not contain
> >> %AWebGL%
> >> # so it looks as if the help is trivially wrong, it should be paste0
> >> paste0("%", "A", "WebGL%")
> >
> > Yes, that's right.  I'll fix it.
> >
> >> # [1] "%AWebGL%"
> >> #----------------
> >> # c) second attempt using %AWebGL%
> >> writeWebGL(dir=getwd(), template = file.path(getwd(),
> >> "templateB.html"), prefix="A")
> >> # runs without error in R but IE displays "You must enable Javascript
> >> to view this page properly."
> >> #--------------
> >>
> >> I don't understand why (c) is different from (a).
> >
> > There may be an error in the generated Javascript.  In Firefox, you
> > could ask to see the browser console log, and it would report if there
> > was an error on the page; sometimes those make the Javascript fail, and
> > it falls back to the error message you saw.  I don't know how/if you can
> > do that in IE.
> >
> >
> >>
> >> Here are the system details:
> >>
> >> R version 3.1.0 (2014-04-10)
> >> Platform: i386-w64-mingw32/i386 (32-bit)
> >>
> >> locale:
> >> [1] LC_COLLATE=English_United Kingdom.1252
> >> [2] LC_CTYPE=English_United Kingdom.1252
> >> [3] LC_MONETARY=English_United Kingdom.1252
> >> [4] LC_NUMERIC=C
> >> [5] LC_TIME=English_United Kingdom.1252
> >>
> >> attached base packages:
> >> [1] grDevices datasets  splines   graphics  stats     tcltk     utils
> >>   [8] tools     methods   base
> >>
> >> other attached packages:
> >> [1] knitr_1.8       animation_2.3   rgl_0.95.1158   CBRIutils_1.0
> >
> > That's an old version of rgl; current on CRAN is 0.95.1201.
> > <http://cran.r-project.org/src/contrib/rgl_0.95.1201.tar.gz> (CRAN OSX
> > currently has an old binary; I don't recommend that you use it.  I don't
> > know why they haven't updated to the current one.) r-forge has even
> > newer versions, but I'm in the middle of some changes there, so I don't
> > recommend using that version right now.
> >
> > Duncan Murdoch
> > <http://cran.r-project.org/src/contrib/rgl_0.95.1201.tar.gz>
> >>   [5] stringr_0.6.2   svSocket_0.9-55 TinnR_1.0-5     R2HTML_2.3.1
> >>   [9] Hmisc_3.12-2    Formula_1.1-1   survival_2.37-7
> >>
> >> loaded via a namespace (and not attached):
> >> [1] cluster_1.15.3  devtools_1.6.1  evaluate_0.5.5  formatR_1.0
> >> [5] grid_3.1.0      highr_0.4       lattice_0.20-29 rpart_4.1-8
> >> [9] svMisc_0.9-70
> >>
> >> Internet Explorer 11 Version 11.0.9600.17420
> >>
> >> Any advice is welcome.
> >>
> >>
> >> Keith Jewell - Statistician
> >> Tel: +44 (0)1386 842055
> >> Web:  www.campdenbri.co.uk
> >> Email:  keith.jewell at campdenBRI.co.uk
> >>
> >> Campden BRI (Chipping Campden) Limited - part of the Campden BRI group
> >> Station Road ♦ Chipping Campden ♦ Gloucestershire ♦ GL55 6LD ♦ UK
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list