summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/latex/rmannot/examples/rm3da
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/doc/latex/rmannot/examples/rm3da')
-rw-r--r--texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3dbin0 -> 160672 bytes
-rw-r--r--texmf-dist/doc/latex/rmannot/examples/rm3da/js/turntable.js63
-rw-r--r--texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdfbin0 -> 119094 bytes
-rw-r--r--texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.tex123
-rw-r--r--texmf-dist/doc/latex/rmannot/examples/rm3da/views/dice.vws30
5 files changed, 216 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3d b/texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3d
new file mode 100644
index 00000000..ae14b756
--- /dev/null
+++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3d
Binary files differ
diff --git a/texmf-dist/doc/latex/rmannot/examples/rm3da/js/turntable.js b/texmf-dist/doc/latex/rmannot/examples/rm3da/js/turntable.js
new file mode 100644
index 00000000..62d62752
--- /dev/null
+++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/js/turntable.js
@@ -0,0 +1,63 @@
+/////////////////////////////////////////////////////////////////////
+//
+// 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.
+//
+/////////////////////////////////////////////////////////////////////
+console.println("turntable.js");
+// 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);
+camera.axis_up = camera.up.subtract(camera.position);
+camera.axis_up.normalize();
+
+//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) {
+ runtime.setCurrentTool(runtime.TOOL_NAME_ROTATE);
+ 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/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdf b/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdf
new file mode 100644
index 00000000..97927cfa
--- /dev/null
+++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.tex b/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.tex
new file mode 100644
index 00000000..71a612af
--- /dev/null
+++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.tex
@@ -0,0 +1,123 @@
+\documentclass{article}
+\usepackage{amsmath}
+%
+% the driver line is not necessary if you
+% have aebpro.cfg configured to your driver.
+%
+\usepackage[%
+% driver=dvips,
+ web={pro,tight,usesf,designv},
+ eforms,graphicxsp={showembeds},aebxmp
+]{aeb_pro}
+\usepackage[use3D]{rmannot}
+\usepackage{eforms}
+
+% Alexander Grahn a.grahn@web.de
+
+%\margins{1in}{1in}{.5in}{.5in} % left,right,top, bottom
+%\screensize{11in}{8.5in} % height,width dimensions
+
+\DeclareDocInfo
+{
+ title=The \texttt{rmannot} Package\texorpdfstring{\\[1ex]}{: } Demo of 3D and RMA,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject={Demo of the rmannot package, 3D and RMA},
+ keywords={Adobe Acrobat, RMA, 3D},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={Dec 2011},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\def\AcroTeX{Acro\!\TeX}
+
+% Place \AcroVer{11} in rmannot.cfg, or uncomment line below
+% The argument corresponds to the version of Acrobat you have
+
+%
+% Convenience command pointing to the rich media files, this needs
+% to be edited to point to its location on your system.
+%
+\definePath{\myPath}{C:/Users/Public/Documents/%
+ My TeX Files/tex/latex/aeb/aebpro/rmannot/%
+ examples/rm3da}
+\definePath{\myRMFiles}{%
+ C:/Users/Public/Documents/My TeX Files/%
+ tex/latex/aeb/aebpro/rmannot/RMfiles}
+\saveNamedPath{myDice}{\myPath/3dmodels/dice.u3d}
+\saveNamedPath{turntableJS}{\myPath/js/turntable.js}
+\saveNamedPath{AcroAd}{\myRMFiles/Acro_Advertiser.swf}
+
+\newcommand{\cs}[1]{\texttt{\char`\\#1}}
+
+\parindent=0pt\parskip6pt\pagestyle{empty}
+
+\begin{document}
+\begin{center}\large\bfseries
+RMA and 3D Annotations
+\end{center}
+Using the 3D feature of \textsf{rmannot}, you can not only embed 3D
+models, such as \texttt{dice.u3d}, as distributed with the
+\textsf{movie15} package (author, Alexander Grahn), but you can bind SWF
+applications to the background, foreground, or to a material.
+
+%--------------
+
+\setRmOptions3D{my3DDice}{%
+ 3DOptions={%
+ 3Droo=40,
+ 3Dlights=CAD,
+ 3Drender=Solid,
+ 3Djscript=turntableJS,
+% 3Dbg=1 0 0,
+ 3Dviews=views/dice.vws,
+ },%
+ 3DResources={%
+% background={rName=AcroAd}
+% foreground={rName=AcroAd}
+ }%
+}
+
+% Comment out the background line, and uncomment the foreground line and
+% recompile. Try viewing in a window and in fullscreen. You can see that you
+% can manipulate the dice through the foreground SWF, swave!
+
+\begin{center}
+\rmAnnot[name=my3DDice,toolbar]{.67\textwidth}{2in}{myDice}
+\end{center}
+The following two button illustrates how to control the view. Two methods
+are used, the left button uses the GoTo3DView action, the one uses the
+method \texttt{setView()}, available through the 3D JS engine.
+
+\newcommand{\gotoNamedView}[2]{%
+\JS{var rm=this.getAnnotRichMedia(this.pageNum,"#1");\r
+ rm.activated=true;}\Next{%
+ /S/GoTo3DView/TA \RefObjRm{#1}/V (#2)}%
+}
+\makebox[\linewidth][c]{%
+ \pushButton[\CA{Front View}\TU{Uses GoTo3DView action}
+ \A{\gotoNamedView{my3DDice}{Front View}}]{frontView1}{}{11bp}\kern1bp
+ \pushButton[\CA{Front View}\TU{Uses setView from 3D JS engine}\A{\JS{%
+ var rm=this.getAnnotRichMedia(this.pageNum,"my3DDice");\r
+ rm.activated=true;\r
+ if (rm.subtype=="3D") {\r\t
+ var c3d=rm.context3D;\r\t
+ c3d.runtime.setView("Front View", true);\r
+ }
+ }}]{frontView2}{}{11bp}%
+}
+One significant difference in dealing with RM3D annotations, it that the
+annotation is a rich media annotation not a 3D annotation. This is seen in
+some of the code of the buttons, where we say, for example,
+\begin{verbatim}
+ var rm=this.getAnnotRichMedia(this.pageNum,"my3DDice");
+\end{verbatim}
+that is, we use \texttt{Doc.getAnnotRichMedia} (or \texttt{Doc.getAnnotsRichMedia})
+instead of the 3D method of \texttt{Doc.getAnnot3D} (or \texttt{Doc.getAnnots3D}).
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/rmannot/examples/rm3da/views/dice.vws b/texmf-dist/doc/latex/rmannot/examples/rm3da/views/dice.vws
new file mode 100644
index 00000000..de9f57a6
--- /dev/null
+++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/views/dice.vws
@@ -0,0 +1,30 @@
+VIEW={Front View}
+ %using defaults for COO, C2C, ROLL and AAC
+ ROO=27
+ PART={object14}
+ RENDERMODE=Wireframe
+ END
+ CROSSSECT
+ CENTER=0 0 0
+ ORIENTATION=-30 null 0
+ END
+END
+VIEW={Back}
+ ROO=27
+ C2C=0 1 0
+END
+VIEW={Left}
+ ROO=27
+ C2C=-1 0 0
+END
+VIEW={Right}
+ ROO=27
+ C2C=1 0 0
+END
+VIEW={Top}
+ ROO=27
+ C2C=0 0 1
+END
+VIEW={Fish Eye at Centre}
+ AAC=130
+END