rgl::writeWebGL( , prefix = , )
On Feb 3, 2015, at 9:42 AM, Duncan Murdoch wrote:
On 03/02/2015 12:18 PM, David Winsemius wrote:
On Feb 3, 2015, at 7:14 AM, 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.)
I'm not sure why either, but that newer package does fail compilation on both trunks of the Mac platform. I have version 1098 on my OSX 10.7.5 box (and I'm pretty sure that's the one on my Yosemite-equiped laptop. I just tried compiling from source on the Lion platform with the source at CRAN and it fails there, too. (Sometimes I am able to get packages to compile that report errors on CRAN.) The first error reported from efforts at installing both 1201 and 1208 versions is: checking for X... libraries , headers checking for glEnd in -lGL... no configure: error: missing required library GL
That looks as though it's not finding the OpenGL libraries. I think the usual way to get them on a Mac is to install XQuartz. rgl doesn't have to use X11, but it will (e.g. if you run it from RStudio), and it requires the X11 files for compiling. I haven't experimented a lot with systems that don't have XQuartz installed, but I just saw one yesterday where even the native OpenGL code (what you get when you run rgl within R.app) wouldn't start; after installing XQuartz, it was fixed.
It's probably more appropriate that this go to the R-sig-Ma mailing list. I have had XQuartz installed for several years and iterations of R and I just re-installed version 2.7.7 from http://xquartz.macosforge.org/trac/wiki/X112.7.7 As far as I can tell from the xquartz plist, it is in the right place and would be called if X11 were desired. I do still see an X11.app entry in my applications/Utilities directory from a couple of years ago, though. Compiling from source with: R CMD INSTALL /Users/davidwinsemius/Downloads/rgl_0.95.1201.tar.gz ... fails with the same error message I think the Mac builders may have a better understanding why the CRAN package checks are failing than I do. Copying first the Terminal session output and then my sessionInfo() after opening R: Loading required package: lattice Loading required package: sos Loading required package: brew Loading required package: rms Loading required package: Hmisc Loading required package: grid Loading required package: survival Loading required package: stats Loading required package: utils Attaching package: ?utils? The following object is masked from ?package:sos?: ? Loading required package: graphics Loading required package: splines Loading required package: Formula Attaching package: ?Hmisc? The following objects are masked from ?package:base?: format.pval, round.POSIXt, trunc.POSIXt, units Loading required package: SparseM Attaching package: ?SparseM? The following object is masked from ?package:base?: backsolve ##------ 2015-02-03 ------## * installing to library ?/Library/Frameworks/R.framework/Versions/3.1/Resources/library? * installing *source* package ?rgl? ... ** package ?rgl? successfully unpacked and MD5 sums checked checking for gcc... llvm-gcc-4.2 -arch x86_64 -std=gnu99 checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether llvm-gcc-4.2 -arch x86_64 -std=gnu99 accepts -g... yes checking for llvm-gcc-4.2 -arch x86_64 -std=gnu99 option to accept ISO C89... none needed checking how to run the C preprocessor... llvm-gcc-4.2 -arch x86_64 -std=gnu99 -E checking for gcc... (cached) llvm-gcc-4.2 -arch x86_64 -std=gnu99 checking whether we are using the GNU C compiler... (cached) yes checking whether llvm-gcc-4.2 -arch x86_64 -std=gnu99 accepts -g... (cached) yes checking for llvm-gcc-4.2 -arch x86_64 -std=gnu99 option to accept ISO C89... (cached) none needed checking whether __attribute__((visibility())) is supported... no checking whether llvm-gcc-4.2 -arch x86_64 -std=gnu99 accepts -fvisibility... yes checking whether accepts -fvisibility... no checking for libpng-config... yes configure: using libpng-config configure: using libpng dynamic linkage checking for X... libraries , headers checking for glEnd in -lGL... no configure: error: missing required library GL ERROR: configuration failed for package ?rgl? * removing ?/Library/Frameworks/R.framework/Versions/3.1/Resources/library/rgl? * restoring previous ?/Library/Frameworks/R.framework/Versions/3.1/Resources/library/rgl? ==============================================
sessionInfo()
R version 3.1.2 (2014-10-31) Platform: x86_64-apple-darwin10.8.0 (64-bit) locale: [1] en_US.utf-8/en_US.utf-8/en_US.utf-8/C/en_US.utf-8/en_US.utf-8 attached base packages: [1] grDevices datasets splines graphics utils stats grid [8] methods base other attached packages: [1] rms_4.2-1 SparseM_1.6 Hmisc_3.14-6 Formula_1.2-0 [5] survival_2.37-7 sos_1.3-8 brew_1.0-6 lattice_0.20-29 loaded via a namespace (and not attached): [1] acepack_1.3-3.3 cluster_1.15.3 foreign_0.8-62 [4] latticeExtra_0.6-26 multcomp_1.3-8 mvtnorm_1.0-2 [7] nlme_3.1-119 nnet_7.3-8 polspline_1.1.9 [10] quantreg_5.11 RColorBrewer_1.1-2 rpart_4.1-8 [13] sandwich_2.3-2 TH.data_1.0-6 zoo_1.7-11
> > Duncan Murdoch David Winsemius Alameda, CA, USA