From 23b2789419e9e22d552147033a4f7f8ff569f649 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 19 Dec 2006 17:50:33 +0000 Subject: movie15 update (16dec06) git-svn-id: svn://tug.org/texlive/trunk@2816 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/movie15/README | 36 +++++-- Master/texmf-dist/doc/latex/movie15/animation.js | 100 ++++++++--------- Master/texmf-dist/doc/latex/movie15/dice.js | 119 --------------------- Master/texmf-dist/doc/latex/movie15/movie15.pdf | Bin 464142 -> 471742 bytes Master/texmf-dist/doc/latex/movie15/movie15.tex | 105 +++++++++++------- .../doc/latex/movie15/overlay-example.pdf | Bin 31983 -> 32487 bytes 6 files changed, 146 insertions(+), 214 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/movie15/dice.js (limited to 'Master/texmf-dist/doc/latex/movie15') diff --git a/Master/texmf-dist/doc/latex/movie15/README b/Master/texmf-dist/doc/latex/movie15/README index a71172392df..3f56a4b1f4b 100644 --- a/Master/texmf-dist/doc/latex/movie15/README +++ b/Master/texmf-dist/doc/latex/movie15/README @@ -33,9 +33,10 @@ Usage: \usepackage[]{movie15} Package option `3D' enables the 3D feature from the PDF-1.6 specification. - With option `draft' media files are not included. The file name is printed - in a box of size x(+). `final' does the opposite, - overriding a global draft option specified in the \documentclass command. + With option `draft' media files are not included. Instead, the file name + is printed in a box of size x(+). `final' does the + opposite, overriding a global draft option specified in the \documentclass + command. \includemovie[]{}{}{} @@ -57,10 +58,10 @@ Usage: calculating 3D camera settings. In addition to `play' (default), `stop', `resume', `pause', `reset', `close', - `3Dviewindex' and `3Dcalculate' it accepts `controls', `repeat', + `3Dviewindex', `3Dcalculate' and `3Dgetview' it accepts `controls', `repeat', `palindrome', `startat', `endat', `mouse', `rate', `volume', `3Dcoo', - `3Dc2c', `3Droo', `3Dcaa' and `3Djscript' from the subsequent list of command - options. + '3Droll', `3Dc2c', `3Droo', `3Dcaa' and `3Djscript' from the subsequent list + of command options. Options: @@ -123,7 +124,10 @@ Usage: mouse[=true|false] Enable mouse interaction: Clicking onto the media (giving it the focus) pauses the playback while - clicking outside resumes it. + clicking outside resumes it. In 3D context this + option is set to `true' by default, but may be set + to `false' in order to make the 3D annotation + non-interactive. palindrome[=true|false] Play media forward and backward. @@ -231,12 +235,30 @@ Usage: canvas. Only fixed point real numbers in the range from 0 to 1 are allowed for the colour components. + 3Dlights= Sets the default lighting scheme. Possible values + are: `None', `White', `Day', `Night', `Hard', + `Primary', `Blue', `Red', `Cube', `CAD', + `HeadLamp'. + 3Djscript= Things like animation, lighting, background colour etc. may also be script driven. Option `3Djscript' associates a with the 3D object. The script will be executed upon activation of the object. + 3Dresource=[, 3Dresource= [, ...]] + + Embeds additional 3D or rasterized image files for + use as resources in the 3D annotation. Possible + file types are U3D, Postscript (LaTeX + dvips) and + PDF/JPEG/PNG (pdfLaTeX). Embedded resources must + be loaded by the JavaScript method + + Resource("pdf://") + + where stands for the path to the + resource file as specified by the `3Dresource' + option. Additional options for use with `\movieref': diff --git a/Master/texmf-dist/doc/latex/movie15/animation.js b/Master/texmf-dist/doc/latex/movie15/animation.js index 7c870a1b498..99829252365 100644 --- a/Master/texmf-dist/doc/latex/movie15/animation.js +++ b/Master/texmf-dist/doc/latex/movie15/animation.js @@ -1,52 +1,63 @@ -/////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////// // // animation.js // // JavaScript for use with `3Djscript' option of \includemovie // -// * Activates animation embedded in the u3d file. -// * Arrow keys `Down', `Up' can be used for speeding up and slowing -// down a running animation, key `Home' for reverting to the default -// speed. +// 888888888888888888888888888888888888888888888888888888888888 +// * 88 Set includemovie-option `repeat=0', to take effect !!! 88 +// 888888888888888888888888888888888888888888888888888888888888 // -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////// -// adjustable parameters -/////////////////////////////////////////////////////// -var rate = 1; // 1 --> use original speed as default -var palindrome = true; // true --> play forth and back -/////////////////////////////////////////////////////// +// * Activates keyframe animation embedded in the u3d file. +// * Arrow keys `Down', `Up' can be used for speeding up and +// slowing down a running animation, key `Home' for reverting +// to the default speed. +// +// * Adjustable parameters: +var rate = 1; // 1 --> use original speed as default +var palindrome = true; // true --> play forth and back +// +///////////////////////////////////////////////////////////////// //get the first animation in the scene var myAnim = scene.animations.getByIndex(0); -rate = Math.abs(rate); -myAnim.speed = rate; -myAnim.forward = true; +myAnim.wallTime = 0; +myAnim.speed = 1; +myAnim.myLength = myAnim.endTime - myAnim.startTime; scene.activateAnimation(myAnim); +//method to set animation speed +myAnim.setSpeed = function (speed) { + speed = Math.abs(speed); + this.wallTime /= speed/this.speed; //correct the walltime + this.speed = speed; +}; + +//method to change animation speed by a factor +myAnim.changeSpeed = function (mult) { + this.wallTime /= mult; //correct the walltime + this.speed *= mult; +}; + +//set default speed +myAnim.setSpeed(rate); + //menu items -runtime.addCustomMenuItem( - "faster", "Faster (Key Up)", "default", 0 -); -runtime.addCustomMenuItem( - "slower", "Slower (Key Down)", "default", 0 -); -runtime.addCustomMenuItem( - "default", "Default Speed (Key Home)", "default", 0 -); +runtime.addCustomMenuItem("faster", "Faster (Key Up)", "default", 0); +runtime.addCustomMenuItem("slower", "Slower (Key Down)", "default", 0); +runtime.addCustomMenuItem("default", "Default Speed (Key Home)", "default", 0); //menu handler to control speed menuEventHandler = new MenuEventHandler(); menuEventHandler.onEvent = function(e) { if (e.menuItemName == "faster") { - myAnim.speed *= 1.25; + myAnim.changeSpeed(1.25); } else if (e.menuItemName == "slower") { - myAnim.speed /= 1.25; + myAnim.changeSpeed(1/1.25); } else if (e.menuItemName == "default") { - myAnim.speed = rate; + myAnim.setSpeed(rate); } }; runtime.addEventHandler(menuEventHandler); @@ -57,15 +68,15 @@ keyEventHandler.onKeyDown = true; keyEventHandler.onEvent = function(e) { switch(e.characterCode) { case 30: //key up - myAnim.speed *= 1.05; + myAnim.changeSpeed(1.05); break; case 31: //key down - myAnim.speed /= 1.05; + myAnim.changeSpeed(1/1.05); break; case 4: //key home - myAnim.speed = rate; + myAnim.setSpeed(rate); break; } }; @@ -75,24 +86,15 @@ runtime.addEventHandler(keyEventHandler); myTimer = new TimeEventHandler(); myTimer.onTimeChange = true; myTimer.onEvent = function(e) { - if (myAnim.forward) { - myAnim.currentTime += e.deltaTime * myAnim.speed; - if (myAnim.currentTime > myAnim.endTime) { - if (palindrome == true) { - myAnim.currentTime = myAnim.endTime; - myAnim.forward = false; - } - else { - myAnim.currentTime = myAnim.startTime; - } - } - } - else { - myAnim.currentTime -= e.deltaTime * myAnim.speed; - if (myAnim.currentTime < myAnim.startTime) { - myAnim.currentTime = myAnim.startTime; - myAnim.forward = true; - } + myAnim.wallTime += e.deltaTime; + if (palindrome == true) { + myAnim.currentTime = + myAnim.startTime + + myAnim.myLength/2 + * (1 - Math.cos(Math.PI * myAnim.speed/myAnim.myLength * myAnim.wallTime)); + } else { + myAnim.currentTime = myAnim.startTime + + (myAnim.speed * myAnim.wallTime % myAnim.myLength); } }; runtime.addEventHandler(myTimer); diff --git a/Master/texmf-dist/doc/latex/movie15/dice.js b/Master/texmf-dist/doc/latex/movie15/dice.js deleted file mode 100644 index 2050fbcf536..00000000000 --- a/Master/texmf-dist/doc/latex/movie15/dice.js +++ /dev/null @@ -1,119 +0,0 @@ -//////////////////////////////////////////////////////////////////////// -// -// This JavaScript file is a simple concatenation of the files -// `lights.js' and `turntable.js' from the `doc/javascript' directory. -// -//////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////// -// -// lights.js -// -// example JavaScript for use with `3Djscript' option of \includemovie -// -// * Adds light sources around the object for better illumination. -// -//////////////////////////////////////////////////////////////////////// - -//first remove any scene lights -for (var i = scene.lights.count - 1; i >= 0; i--) { - scene.lights.removeByIndex(i); -} - -//new lights -//from left -l1 = scene.createLight(); -l1.color.set(1,1,1); -l1.brightness = .4; -l1.direction.set(1,0,0); - -//from right -l2 = scene.createLight(); -l2.color.set(1,1,1); -l2.brightness = .4; -l2.direction.set(-1,0,0); - -//from bottom -l3 = scene.createLight(); -l3.color.set(1,1,1); -l3.brightness = .4; -l3.direction.set(0,0,1); - -//from top -l4 = scene.createLight(); -l4.color.set(1,1,1); -l4.brightness = .4; -l4.direction.set(0,0,-1); - -//from front -l5 = scene.createLight(); -l5.color.set(1,1,1); -l5.brightness = .4; -l5.direction.set(0,1,0); - -//from back -l6 = scene.createLight(); -l6.color.set(1,1,1); -l6.brightness = .4; -l6.direction.set(0,-1,0); - -///////////////////////////////////////////////////////////////////// -// -// turntable.js -// -// JavaScript for use with `3Djscript' option of \includemovie -// -// * Greatly improves the rotational behaviour of the 3D object, -// prevents it from tilting to the side while dragging the mouse. -// This is achieved by suppressing the rolling of the camera about -// its optical axis. -// -///////////////////////////////////////////////////////////////////// - -// maximum pitch (degrees from horizontal) of the camera -var max_alpha = 88; -var min_beta = 90 - max_alpha; // the complement -var cos_min_beta = Math.cos(min_beta * Math.PI/180); -var tan_min_beta = Math.tan(min_beta * Math.PI/180); - -var camera = scene.cameras.getByIndex(0); - -//updates the vertical axis of rotation whenever a predefined view -//is selected from the drop down list in the 3D toolbar -var cameraEventHandler = new CameraEventHandler(); -cameraEventHandler.onEvent = function (e) { - camera.axis_up = camera.up.subtract(camera.position); - camera.axis_up.normalize(); -} -runtime.addEventHandler(cameraEventHandler); - -//suppresses camera rolling and limits camera pitch -var mouseEventHandler = new MouseEventHandler(); -mouseEventHandler.onMouseMove = true; -mouseEventHandler.onEvent = function (e) { - var c2c = camera.position.subtract(camera.targetPosition); - var roo = c2c.length; - c2c.normalize(); - cos_beta = c2c.dot(camera.axis_up); //cos of enclosed angle - - //correct the camera position if it is too high or too low - if(Math.abs(cos_beta) > cos_min_beta) { - //auxiliary vectors a & b - var a = camera.axis_up.scale(cos_beta); - var b = c2c.subtract(a); - b.normalize(); - b.scaleInPlace(tan_min_beta * a.length); - - c2c.set(a.add(b)); - c2c.normalize(); - - camera.position.set(camera.targetPosition.add(c2c.scale(roo))); - cos_beta = c2c.dot(camera.axis_up); - } - - //suppress rolling - camera.up.set( - camera.position.add(camera.axis_up).add(c2c.scale(-cos_beta)) - ); -}; -runtime.addEventHandler(mouseEventHandler); diff --git a/Master/texmf-dist/doc/latex/movie15/movie15.pdf b/Master/texmf-dist/doc/latex/movie15/movie15.pdf index e55f511fe30..00c81eb27c4 100644 Binary files a/Master/texmf-dist/doc/latex/movie15/movie15.pdf and b/Master/texmf-dist/doc/latex/movie15/movie15.pdf differ diff --git a/Master/texmf-dist/doc/latex/movie15/movie15.tex b/Master/texmf-dist/doc/latex/movie15/movie15.tex index 5a0fb60e052..c45484ded90 100644 --- a/Master/texmf-dist/doc/latex/movie15/movie15.tex +++ b/Master/texmf-dist/doc/latex/movie15/movie15.tex @@ -35,7 +35,7 @@ pdftitle={The movie15 Package}, pdfsubject={Documentation}, pdfauthor={Alexander Grahn}, - pdfkeywords={embed, include, multimedia, movie, sound, video, animation, JavaScript, 3D, LaTeX, pdfLaTeX, PDF}, + pdfkeywords={embed, movie, LaTeX, pdfLaTeX, PDF, 3D, JavaScript, include, sound, video, multimedia, animation}, citebordercolor={0 0 1}, filebordercolor={0 0 1}, linkbordercolor={0 0 1}, @@ -51,7 +51,7 @@ \begin{abstract}\noindent A \LaTeX{} package for inclusion of movies, sounds and 3D objects into PDF documents with PDF-1.5/1.6 compatibility.\\[0.2\baselineskip] -\emph{Keywords}: embed, include, multimedia, movie, sound, video, animation, JavaScript, 3D, LaTeX, pdfLaTeX, PDF +\emph{Keywords}: embed, movie, LaTeX, pdfLaTeX, PDF, 3D, JavaScript, include, sound, video, multimedia, animation \end{abstract} \tableofcontents @@ -65,7 +65,9 @@ This package provides an interface to embed movies, sounds and 3D objects into P The final PDF output can be viewed with Windows\textsuperscript{\scriptsize\textregistered} and Mac OS\textsuperscript{\scriptsize\textregistered} versions of Adobe Reader. However, embedded media file data can also be extracted and saved to disk from within Readers which support file attachments. This makes PDF documents a little more portable to Readers which do not ship with a multimedia plug-in. -`movie15' works well together with the presentation making packages `Beamer' and `Powerdot'. In particular it supports their overlay concept. See this \href{./overlay-example.pdf}{example} which uses the `Beamer' class. Also read the comments in the example's source file, `\verb+overlay-example.tex+', on how to use `movie15' with presentation packages. +`movie15' works well together with the presentation making package `Beamer'. In particular it supports its overlay concept. See this \href{./overlay-example.pdf}{example}. +%which uses the `Beamer' class. +Also read the comments in the example's source file, `\verb+overlay-example.tex+', on how to use `movie15' with `Beamer'. \section{Installation} The file `movie15.sty' should be stored in a place where \LaTeX{} can find it. @@ -143,9 +145,10 @@ continue \end{verbatim} Continue playback in background on premature page change. However, paused media remain paused. So do media that have reached the end or that still show the poster. \begin{verbatim} -controls[=true|false] +controls +toolbar \end{verbatim} -Player specific controls are displayed during playback of the media clip, if available. For movies and sounds the default is `\verb+false+'; controls are not shown. For 3D content, the default is `\verb+true+', since `\verb+false+' would make the 3D content non-interactive, i.\,e. not responsive to mouse interaction.% All animation would need be driven by JavaScript in this case. +Player specific controls or toolbars are displayed during playback of the media clip, if available. The default is `\verb+false+'; controls are not shown. \begin{verbatim} depth= \end{verbatim} @@ -178,7 +181,7 @@ According to the PDF specification, the viewer application needs to know the MIM \begin{verbatim} mouse[=true|false] \end{verbatim} -Enable mouse interaction: Clicking onto the media (giving it the focus) pauses the playback while clicking outside resumes it. Alternatively, once the media has got the focus, repeated pressing of key `P' on the keyboard switches between Play and Pause (at least with some players). +Enable mouse interaction: Clicking onto the media (giving it the focus) pauses the playback while clicking outside resumes it. Alternatively, once the media has got the focus, repeated pressing of key `P' on the keyboard switches between Play and Pause (at least with some players). In 3D context it specifies whether the 3D annotation should be interactive, i.\,e. responsive to mouse interaction. 3D annotations are interactive by default. \begin{verbatim} palindrome[=true|false] \end{verbatim} @@ -192,7 +195,6 @@ Forces a particular media player plug-in to be used instead of the default one. \phantom{xxxx}RNWK\_RealPlayer\\ \phantom{xxxx}MSFT\_WindowsMediaPlayer\\ \phantom{xxxx}ADBE\_MCI} (Adobe builtin player) - \begin{verbatim} poster \end{verbatim} @@ -208,7 +210,7 @@ rate= \begin{verbatim} repeat[=] \end{verbatim} -Playback of the media clip will be repeated \verb++ times. Without argument this option causes the player to repeat forever. +Specifies how often the media clip or embedded 3D animation will be played. Without argument this option causes the player to repeat forever. \begin{verbatim} startat= endat= @@ -255,9 +257,9 @@ volume= The meaning of this option should be self explaining. \subsection{Inclusion of 3D objects}\label{sec:3D} -The PDF-1.6 specification, which was introduced with the advent of Adobe Acrobat/Reader 7, allows embedding of 3-dimensional graphic objects, such as CAD models or 3D scientific data, and lets the user interactively manipulate them. At time of writing this documentation, the only supported file format was U3D~\cite{3diforg}, and only one commercial software~\cite{dexp} for exporting into the U3D format, yet from a number of CAD and 3D vector formats, including DXF and VRML, was known. Nevertheless, a try-out version of~\cite{dexp} can be downloaded without charge. +The PDF-1.6 specification, which was introduced with the advent of Adobe Acrobat/Reader 7, allows embedding of 3-dimensional graphic objects, such as CAD models or 3D scientific data, and lets the user interactively manipulate them. At the time of writing this documentation, the only supported file format was U3D~\cite{3diforg}, and only one commercial software~\cite{dexp} for exporting into the U3D format, yet from a number of CAD and 3D vector formats, including DXF and VRML, was known. Nevertheless, a try-out version of~\cite{dexp} can be downloaded without charge. -Selection of the `\verb+3D+' package option enables the 3D feature. Most of the command options listed in section~\ref{usrif} do what they are supposed to do in the case of embedded 3D as well. Other options are ignored, in particular `\verb+repeat+', `\verb+palindrome+', `\verb+startat+', `\verb+endat+', `\verb+rate+' and `\verb+volume+', because they do not make sense and `\verb+mouse+', because 3D objects are interactive by definition. Options `\verb+inline=false+' and `\verb+url+' are supported, but imply option `{\tt{}externalview\-er}', because the 3D Reader plug-in handles embedded files only. +Selection of the `\verb+3D+' package option enables the 3D feature. Most of the command options listed in section~\ref{usrif} do what they are supposed to do in the case of embedded 3D as well. Other options are ignored, in particular `\verb+startat+', `\verb+endat+', `\verb+volume+' and `\verb+playerid+'. Options `\verb+inline=false+' and `\verb+url+' are supported, but imply option `{\tt{}ex\-ter\-nal\-view\-er}', because the 3D Reader plug-in handles embedded files only. There are a few options to \verb+\includemovie+ which define how the 3D object is positioned within the view port of a virtual camera, or conversely, how the virtual camera is positioned and oriented within a coordinate system, called `The World', which bears the 3D object at a fixed position. Fig.~\ref{3dscene} should help to visualize the scenery: The virtual camera is orbiting at a distance of $ROO$ around the centre of orbit, specified by the position vector $\overrightarrow{COO}$; $\sphericalangle AAC$ is the camera's aperture angle. In addition, the direction vector $\overrightarrow{C2C}$ is needed to specify the initial camera position. \begin{figure}[ht] @@ -301,16 +303,35 @@ Instead of or in addition to the default view, further \emph{named views} can be []{ }{ }{}{}{} \end{verbatim} The \verb++ entry is optional. If \verb++ is not given, a default name consisting of `View' followed by the number of the current entry in the list is formed. For \verb++, \verb++, \verb++, \verb++, \verb++, \verb++, \verb++, \verb++ and \verb++ the same rules as for the corresponding options `\verb+3Dcoo+', `\verb+3Dc2c+', `\verb+3Droo+', `\verb+3Droll+' and `\verb+3Daac+' apply. Empty braces, \verb+{}+, are possible and cause default values to be used. Trailing spaces or comment signs (\%) are allowed. Reading of the file stops either at its end, at the first empty line encountered or at the first line containing nothing but spaces and/or a comment sign followed by arbitrary stuff. See option `\verb+3Dgetview+' of \verb+\movieref+ on how to get the camera settings of the current view in the Reader, which can be used to populate a file of additional views. - \begin{verbatim} 3Dbg= \end{verbatim} This option sets the background colour of the canvas. Only fixed point real numbers in the range from 0 to 1 are allowed for the colour components. - +\begin{verbatim} +3Dlights= +\end{verbatim} +Sets the default lighting scheme. The following values are honoured: `\verb+None+', `\verb+White+', `\verb+Day+', `\verb+Night+', `\verb+Hard+', `\verb+Primary+', `\verb+Blue+', `\verb+Red+', `\verb+Cube+', `\verb+CAD+', `\verb+HeadLamp+'. The default is to use the lighting scheme as specified within the 3D artwork. \begin{verbatim} 3Djscript= \end{verbatim} -Things like animation, lighting, background colour etc. may also be script driven. Option `\verb+3Djscript+' associates \verb++ with the 3D object. The script will be executed upon activation of the object. Refer to the Acrobat 3D JavaScript Reference~\cite{jscript3D} for details. Directory `\verb+doc/javascript+' contains JavaScript example files for animation and rotation control. The files work off-the-shelf with any 3D file and may be concatenated to combine their effects. +Things like animation, lighting, background etc. may also be script driven. Option `\verb+3Djscript+' associates \verb++ with the 3D object. The script will be executed upon activation of the object. Refer to the Acrobat 3D JavaScript Reference~\cite{jscript3D} for details. Directory `\verb+doc/javascript+' contains JavaScript example files for animation and rotation control. The files work off-the-shelf with any 3D file and may be concatenated to combine their effects. If animation is to be managed by JavaScript, option `\verb+repeat+' must be set to zero, i.\,e. `\verb+repeat=0+'. +\begin{verbatim} +3Dresource=[, 3Dresource= [, ...]] +\end{verbatim} +Embeds additional 3D or \emph{rasterized} image files that can be used as resources while rendering the 3D artwork. Possible file types are U3D, Postscript (\LaTeX{} + \verb+dvips+) and PDF/JPEG/PNG (pdf\LaTeX). Embedded resources must be loaded by the JavaScript method +\begin{verbatim} + Resource("pdf://") +\end{verbatim} +where {\tt} stands for the path to the resource file as specified by the `\verb+3Dresource+' option. The following JavaScript loads an image file that was attached by `\verb+3Dresource=images/sunset.jpg+' as the background. +\begin{verbatim} + sunset = new Image(new Resource("pdf://images/sunset.jpg")); + reh = new RenderEventHandler(); + reh.onEvent = function(event) { + runtime.removeEventHandler(this); + event.canvas.background.setImage(sunset); + } + runtime.addEventHandler(reh); +\end{verbatim} \subsection{Media hyperlinks}\label{hyperlinks} A movie, sound or 3D object may serve as the destination of hyperlinks, which are inserted into the document using the command @@ -349,12 +370,11 @@ close \end{verbatim} Immediately closes the media player. -\emph{In 3D context}, \verb+\movieref+ can be used to define an additional view of the object, to access a particular view from the list of predefined views or to run a JavaScript. Moreover, a link can be created for calculating the camera settings `\verb+3Droo+' and `\verb+3Dcoo+', instead of finding them manually. The following options are recognized: +\emph{In 3D context}, \verb+\movieref+ can be used to define an additional view of the object, to access a particular view from the list of predefined views or to run a JavaScript. Moreover, a link can be created for calculating optimal camera settings `\verb+3Droo+' and `\verb+3Dcoo+', instead of finding them manually. The following options are recognized: \begin{verbatim} 3Dviewindex= \end{verbatim} Go to a predefined view of the 3D object. \verb++ can take `\verb+F+', `\verb+L+', `\verb+N+' or `\verb+P+' to access the first, last, next or previous element of the list of additional views, see option `\verb+3Dviews+' of {\tt \string\include\-movie}, or an integer specifying an index into the list. In the case of `\verb+N+' and `\verb+P+', repeated clicking onto the hyperlink allows to cycle through the list in forward or backward direction. `\verb+D+' gives access to the default view. - \begin{verbatim} 3Daac= 3Dc2c= @@ -363,21 +383,18 @@ Go to a predefined view of the 3D object. \verb++ can take `\verb+F+', `\ 3Droo= \end{verbatim} Instead of referencing an existing view of the 3D object, a new one can be defined using any of these options. See section~\ref{sec:3D}. - \begin{verbatim} 3Dcalculate[=] \end{verbatim} -Mainly used during document authoring. Creates a link for calculating `\verb+3Droo+' and `\verb+3Dcoo+' settings of the virtual camera, which may be used to define a default view. Clicking the link opens a dialogue box from which the settings can be copied to the clipboard for later insertion into the option list of \verb+\includemovie+. The default aperture angle of $30$\textdegree{} is used for the calculation unless an optional \verb++ has been provided. - +Mainly used during document authoring. Creates a link for calculating optimal `\verb+3Droo+' and `\verb+3Dcoo+' settings of the virtual camera, which may be used to define a default view. Clicking the link opens a dialogue box from which the settings can be copied to the clipboard for later insertion into the option list of \verb+\includemovie+. The default aperture angle of $30$\textdegree{} is used for the calculation unless an optional \verb++ has been provided. \begin{verbatim} 3Dgetview \end{verbatim} Mainly used during document authoring. Camera settings corresponding to the current view in the Reader are printed to a dialogue box. The output is readily formatted to be inserted into a file of predefined views. See option `\verb+3Dviews+'. - \begin{verbatim} 3Djscript= \end{verbatim} -Runs the script \verb++ after clicking the link. Unlike the script that has been associated with the 3D annotation during object embedding, this JavaScript is not directly run by the JavaScript engine of the 3D plug-in, but is run by Acrobat's own scripting engine. However, full access to the API of the 3D script engine is provided through the `\verb+context3D+' property of the `\verb+Annot3D+' object. For convenience, an associative array `\verb+annot3D+' has been provided for use within \verb++, in order to easily access the `\verb+Annot3D+' object of the annotation the enclosing link is pointing to. The particular element of the array is referenced by the annotation's label \verb+