Process SMIL directives in XML data: Difference between revisions

From Rosetta Code
Content added Content deleted
m (moved OpenGL/Loading Animated Data to Loading Animated 3D Data: do not imply a particular technology)
(do not force to use OpenGL)
Line 22: Line 22:
</X3D></lang>
</X3D></lang>


And here is the same datas with additional Smil statments that you should load, display and animate with OpenGL:
And here is the same datas with additional Smil statments that you should load, display and animate with OpenGL (or something else):


<lang xml><?xml version="1.0" ?>
<lang xml><?xml version="1.0" ?>

Revision as of 19:26, 3 January 2010

One very common task in OpenGL is to load data from a file that contains geometry. These datas most often also contain additional informations, for example animation informations. In this task we propose to load X3D geometric datas with additional Smil animation statments. X3D is not particularly supposed to be mixed with Smil, but Smil is supposed to be mixable with any XML format.

Here is the pure X3D base of our file containing only geometry:

<lang xml><?xml version="1.0" ?> <X3D>

 <Scene>
   <Viewpoint orientation="0 0 1 0" position="0 0 0"/>
   <PointLight color='1 1 1' location='0 2 0'/>
   <Transform translation='0.0 0.0 -3.0' scale='1 1 1'>
     <Shape>
       <Box size='2 1 2'/>
       <Appearance>
         <Material diffuseColor='0.0 0.6 1.0'/>
       </Appearance>
     </Shape>
   </Transform>
 </Scene>

</X3D></lang>

And here is the same datas with additional Smil statments that you should load, display and animate with OpenGL (or something else):

<lang xml><?xml version="1.0" ?> <smil> <X3D>

 <Scene>
   <Viewpoint orientation="0 0 1 0" position="0 0 0"/>
   <PointLight color='1 1 1' location='0 2 0'/>
   <Transform translation='0.0 0.0 -3.0' scale='1 1 1'>
     <Shape>
       <Box size='2 1 2'>
         <animate attributeName="size" from="2 1 2"
                                         to="1 2 1" begin="0s" dur="10s"/>
       </Box>
       <Appearance>
         <Material diffuseColor='0.0 0.6 1.0'>
           <animate attributeName="diffuseColor" from="0.0 0.6 1.0"
                                                   to="1.0 0.4 0.0" begin="0s" dur="10s"/>
         </Material>
       </Appearance>
     </Shape>
   </Transform>
 </Scene>

</X3D></smil></lang>

Try to make it possible to insert "animate" tags for animating every attribute of the base file.

In the example file, there is only a <Box> primitive, try to implement the primitives below too: <lang xml> <Sphere radius="1"/>

 <Cylinder radius="1" height="2"/>
 <Cone bottomRadius="1" height="2"/></lang>

If you are in shape, try to implement the <seq> tag too (def, ex.), we could for example put successivelly a Box, a Sphere, a Cone into it.

For this task the more important is to focus on the data structure with inserted timelines.


Warnings:

  • this task is a draft, you can modify it if you find a way to enhance it,
  • the coordinates in the X3D datas are probably not relavant, for example the box is perhaps not positioned in front of the viewpoint, please fix this if you can.