diff options
Diffstat (limited to 'texmf-dist/doc/latex/rmannot/examples/rm3da')
-rw-r--r-- | texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3d | bin | 0 -> 160672 bytes | |||
-rw-r--r-- | texmf-dist/doc/latex/rmannot/examples/rm3da/js/turntable.js | 63 | ||||
-rw-r--r-- | texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdf | bin | 0 -> 119094 bytes | |||
-rw-r--r-- | texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.tex | 123 | ||||
-rw-r--r-- | texmf-dist/doc/latex/rmannot/examples/rm3da/views/dice.vws | 30 |
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 Binary files differnew file mode 100644 index 00000000..ae14b756 --- /dev/null +++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/3dmodels/dice.u3d 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 Binary files differnew file mode 100644 index 00000000..97927cfa --- /dev/null +++ b/texmf-dist/doc/latex/rmannot/examples/rm3da/tst_rm3da.pdf 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 |