This is a distillation of Phil Lavery's http://jmvp.pbwiki.com/How-to-%253A-build-a-show
A Present3D presentation file is written in XML, which like HTML, uses opening and closing tags between which you place the variable information. You must always ensure that your tags are completed and that there is a space between option in the opening tag or your xml will not parse correctly.
<?xml version="1.0" encoding="UTF-8"?> <!-- Document : fileName.xml Created on : date Author : demonstration Description : demonstration --> <presentation> <duration>1.0</duration> <name>example1</name> <bgcolor>BLACK</bgcolor> <textcolor>WHITE</textcolor> </presentation>
- Slide Loader (required)
<holding_slide>
<duration></duration> <!-- Leave blank -->
<background></background> <!-- Leave blank -->
<title></title> <!-- Leave blank : image|mov loaded later -->
<layer>
<image position="0.5 0.5 0.25" scale="0.55">images/image.png</image>
</layer>
</holding_slide>
- Like a Slide in PowerPoint, you compose media (compositing) <slide> <background></background> <!-- optional RGBA : inherits presentation's --> <title></title> <!-- as per holding slide behaviour --> <duration>30</duration> <!-- in seconds --> <key>3</key> <!-- See note following <layer> <image position="0.3 0.9 0.2" fade="0 0 1 1 4 1 6 0" scale="0.5">titles/movie.mov</image> <model coordinate_frame="slide" scale="0.5" >model/model.osg</model> </layer> </slide>
Layers allow a slide to built up by introducing objects into the slide on keypress. They are containers for media objects, including, models, images, stereo images, movies and stereo movies.
<slide> <background></background> <title></title> <duration>30</duration> <layer> <!-- Each slide can have multiple layers --> <duration>15</duration> <!-- Not duration - time offset, when the slide appears (secs.) --> <bullet>text</bullet> <!-- Wotitsez - optionally can be given coords --> <model coordinate_frame="slide">model/model.osg</model> <!-- See Model note following --> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.jpg</image> <!-- See img note following -> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.mov</image> <!-- stereo image --> <stereo_pair scale_x="1" scale_y="1" fade="18 0 20 1"> <image_left>stereographs/image_l.jpg</image_left> <image_right>stereographs/image_r.jpg</image_right> </stereo_pair> <!-- side by side stereo image or movie --> <stereo_pair fade="0 0.999" position="0.5 0.5 0" rotate="0.01 1 0 0" scale="1"> <image_left region="0.0 0.0 0.5 1.0" >stereographs/movie.mov</image_left> <image_right region="0.5 0.0 1.0 1.0" >stereographs/movie.mov</image_right> </stereo_pair> </layer> <layer> <model coordinate_frame="slide" scale="0.5" >model/model.osg</model> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.jpg</image> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.mov</image> </layer> <clean_layer> <model coordinate_frame="slide" scale="0.5" >model/model.osg</model> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.jpg</image> <image path="slider.path" fade="12 0 14 1 18 1 20 0" scale="0.35">image.mov</image> </clean_layer> </slide>
There are several threading issue with movies introduced in clean layer. All movies must be applied to every clean layer or this movie will not be closed when the slide is changed. These movies can however have a fade of fade="0 0" applied to them in the layer which the movie is not to be seen. Also the looping function can not be used on a clean layer as the movie will not exit properly and will continue to play until the presentation is exited. Images or movies when alpha channels, fade must be non-zero - between fade="0 0.1" and fade="0 0.999" for alpha channels to be recognized.
OpenFlight .flt, TerraPage .txp, 3D Studio .3ds, LightWave object .lwo, LightWave scene . lws, Alias Wavefront .obj, COLLADA .dae, OpenSceneGraph ascii osg, OpenSceneGraph binary ive, Performer .pfb, Inventor .iv, VRML .wrl, Quake model .md2, Point stream . 3dc, .ac3d, DirectX scene file .directx, Designer Workbench .dw, Geo .geo,
: tga , tiff , QuickTime , rgb , pic , png , psd , pnm , bmp , dds , gdal , gif , jp2 , jpeg , mpeg
: (via freetype) - TrueType and more. ( I d/ld Freetype binary and dependencies for win in W:/Software
Objects can have effects such as start position, scale, fade, rotation. e.g...
<model coordinate_frame="slide" scale="250" position="0.5 0.5 0" fade="0 0 3 1" rotate="60 1 0 0">model.osg</model>
<model position="0 -26078137 0" coordinate_frame="model" rotation="1 0 0 0.2">model.ive</model>
<image position="0.5 0.5 0" fade="0 0 1 1" scale="1" looping="ON" >movie.mov</image>
Media objects can have motion paths (external files) applied to them for translates and flythroughs. <model path="name.path" path_time_offset="2">model/model.ive</model> <image animation_material="name.material" animation_material_time_offset="2">movie.mov</image> <model path="name.rotation_path">model.osg</model> <image camera_path="name.path">image.jpg</image>
a .path, .material or .rotation_path extension. (What's the 4th path type?) These paths can be applied to any of the supported media types.
Present3D also allows menus for remote (SSH) access to presentations and utilities.
The examples given are for Mac. I use PuTTy's Plink - a command line ssh utility for windows. How: W:/ref/reference/sshPuTTy.txt
Currently following this page (translating it to Windows: http://www.openscenegraph.org/projects/Present3D/wiki/Support/ssh
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : menu.xml
Created on :
Author : John Montgomery
Description: Menu for local file
-->
<presentation>
<name>Opticore Menu</name>
<bgcolor>BLACK</bgcolor>
<textcolor>WHITE</textcolor>
<slide>
<background></background>
<title>Demo Menu</title>
<layer>
<!-- remotely -->
<click_to_run>ssh user@host.local /path/runmyapp present3D file.xml &</click_to_run>
<bullet>Button</bullet>
<!-- locally -->
<click_to_run>/path/runmyapp present3D file.xml &</click_to_run>
<image>images/image.png</image>
</layer>
</slide>
</presentation>
The menu file works on due to the <click_to_run></click_to_run> function. This will run an external script allowing other application to be launched. The object that follows the click to run function is used as a clickable button which enables the click to run. This can be any of the Present3D supported media files. To launch another Present3D xml presentation a file called runmyapp is need to allow the xml file to be launched. This file should be place in the directory along with the xml presentation file. This file looks like:
cd /full/path/to/file/directory
setenv DISPLAY :0.0
#export DISPLAY=:0.0
$1 $2
The purpose of this file is set the point at which the present3D file.xml command is applied, also sets up the display setup as this may vary when using remotely. This file should not have any extension.
When using a menu remotely, it is recommended that ssh automatic login is used, detail can be found here.
Present3D offers the ability to produce presentation within minutes that would up till very recently have taken teams of programmers months to produce. This amazing presentation tool allows users to showcase their work and creatively in the best possible light. Also with the ease at which complex stereo presentation can be produced with Present3D, stereo is now easily within the reach.