User Tools

Site Tools


formats:modules:derigxml:xml_rig_file_.rig.xml

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
formats:modules:derigxml:xml_rig_file_.rig.xml [2008/03/21 00:26] dragonlordformats:modules:derigxml:xml_rig_file_.rig.xml [2020/10/26 23:03] (current) – [Sample file] dragonlord
Line 1: Line 1:
-====== Rig File format ====== +{{tag>physics rig fileformat}} 
-The rig file format is recognized by the [[http://dragengine.rptd.ch/module.php?id=8|Rig XML Module]]. The file is an XML file with a simple structure to define a rig to be used for a component. Rigs are used for two different purpose. First they are used to deform a model using bone weighted vertices. Second they are used to define physics properties for a rig or component collider. The bones in the rig file are connected to each other forming a skeleton starting at one or more root bones. Usually only one root bone is used but depenging on the use of the rig more than one root bone can be specified. The bones are stored in the rig file in their relaxed position hence the position where they have no translation, rotation and no scaling relative to the origin of the entire rig. Physics properties can be specified for the entire rig and/or individual bones. Shapes define the individual enclosing shape for the entire rig and/or each individual bone. Shapes can be simple ( one shape ) or complex ( multiple shapes ) in which case the union of the shapes becomes the final shape.+<WRAP youarehere> 
 +[[:start|Start Page]] >> [[:gamedev|Game Development with the Drag[en]gine]] >> **Rig File Format** 
 +</WRAP>
  
 +====== Rig File Format (*.derig) ======
  
 +The rig file format is recognized by the [[http://dragengine.rptd.ch/module.php?id=8|Rig XML Module]]. The file is an XML file with a simple structure to define a rig to be used for a component. Rigs are used for two different purpose. First they are used to deform a model using bone weighted vertices. Second they are used to define physics properties for a rig or component collider. The bones in the rig file are connected to each other forming a skeleton starting at one or more root bones. Usually only one root bone is used but depenging on the use of the rig more than one root bone can be specified. The bones are stored in the rig file in their relaxed position hence the position where they have no translation, rotation and no scaling relative to the origin of the entire rig. Physics properties can be specified for the entire rig and/or individual bones. Shapes define the individual enclosing shape for the entire rig and/or each individual bone. Shapes can be simple ( one shape ) or complex ( multiple shapes ) in which case the union of the shapes becomes the final shape.
  
 +====== Structure ======
  
- 
-====== Structure ====== 
   * rig   * rig
     * comments     * comments
Line 20: Line 23:
       * dynamic       * dynamic
       * parent       * parent
-      * sphere +      * <shapes> 
-        * position +    * <shapes> 
-          * x, y, z + 
-        * radius +Where <shapes> can be: 
-      * box +  * sphere 
-        * position +    * position 
-          * x, y, z +      * x, y, z 
-        * rotation +    * radius 
-          * x, y, z +  * box 
-        * halfExtends +    * position 
-          * x, y, z +      * x, y, z 
-      * cylinder +    * rotation 
-        * position +      * x, y, z 
-          * x, y, z +    * halfExtends 
-        * rotation +      * x, y, z 
-          * x, y, z +  * cylinder 
-        * topRadius +    * position 
-        * bottomRadius +      * x, y, z 
-      * capsule +    * rotation 
-        * position +      * x, y, z 
-          * x, y, z +    * halfHeight 
-        * rotation +    * topRadius 
-          * x, y, z +    * bottomRadius 
-        * topRadius +    * radius 
-        * bottomRadius+  * capsule 
 +    * position 
 +      * x, y, z 
 +    * rotation 
 +      * x, y, z 
 +    * halfHeight 
 +    * topRadius 
 +    * bottomRadius 
 +    * radius
  
 ====== Tags ====== ====== Tags ======
 +
 ^Tag^Description^Required^Occurance^Default^ ^Tag^Description^Required^Occurance^Default^
 |rig|Defines the properties of the entire rig.|yes|once|-| |rig|Defines the properties of the entire rig.|yes|once|-|
-|author|Can be used to store the author of the rig or any other kind of comments.|no|once|<empty>+|comments|Comments about the file, the author, credits and other things.|no|once|<empty>
-|bone|Defines a bone in the rig. Order is not important since the engine determines the correct links between the rig bones. Just do never produce loops as this is going to make the file fail upon loading. Each bone has an attribute "name" with the unique name of the bone. Loading fails if two bones have the same name or an empty name.|no|multiple|-| +|bone|Defines a bone in the rig. Order is not important since the engine determines the correct links between the rig bones. Just do never produce loops as this is going to make the file fail upon loading.|no|multiple|-| 
-|position|Defines the position of a bone. Requires three attributes "x", "y" and "z" for the respective coordinate axis.|no|once|(0,0,0)| +|bone.name|Defines the unique name of the bone. Has to be the first tag.|yes|once|-| 
-|rotation|Defines the rotation of a bone. Requires three attribures "x""y" and "z" for the respective coordinate axis. Rotation is counter clockwise for all axes and is measured in degrees.|no|once|(0,0,0)| +|position|Defines the position of a bone.|no|once|(0,0,0)| 
-|centralMassPoint|Defines the location of the central mass point of the the rig or bone. Requires three attributes "x", "y" and "z" for the respective coordinate axis.|no|once|(0,0,0)|+|x,y,z|Defines the x, y or value of various vector type tags.|no|once|-| 
 +|rotation|Defines the rotation of a bone. Rotation is counter clockwise for all axes and is measured in degrees.|no|once|(0,0,0)| 
 +|centralMassPoint|Defines the location of the central mass point of the the rig or bone.|no|once|(0,0,0)|
 |mass|Defines the mass in kg of the entire rig or a bone.|no|once|0| |mass|Defines the mass in kg of the entire rig or a bone.|no|once|0|
 |dynamic|Defines if the rig or bone is kinematic or dynamic. If dynamic it is subject to physics simulation. If kinematic it is driven by user specified linear and angular velocities. Kinematic is best used for rigs which have animations applied. Value is "true" if dynamic behavior is required or "false" otherwise.|no|once|false| |dynamic|Defines if the rig or bone is kinematic or dynamic. If dynamic it is subject to physics simulation. If kinematic it is driven by user specified linear and angular velocities. Kinematic is best used for rigs which have animations applied. Value is "true" if dynamic behavior is required or "false" otherwise.|no|once|false|
 |parent|Defines the parent bone. If empty the bone has no parent. Otherwise the name of a bone has to be specified. Do not create loops or the loading fails.|no|once|<empty>| |parent|Defines the parent bone. If empty the bone has no parent. Otherwise the name of a bone has to be specified. Do not create loops or the loading fails.|no|once|<empty>|
 +|sphere|Defines a sphere shape.|no|multiple|-|
 +|sphere.position|Position of the sphere shape.|no|once|(0,0,0)|
 +|sphere.radius|Radius of the sphere shape.|no|once|1|
 |box|Defines a box shape.|no|multiple|-| |box|Defines a box shape.|no|multiple|-|
-|box.center|Defines the center of box shape. If not specified (0,0,0) is assumedRequires three attributes "x", "y" and "z" for the respective coordinate axis.|no|once|(0,0,0)| +|box.position|Position of the box shape.|no|once|(0,0,0)
-|box.halfSize|Defines the extends of box shape. If not specified (1,1,1) is assumedRequires three attributes "x""y" and "z" for the respective coordinate axis. This is not the entire size of the box but the extends from the center to the border ( hence half the size ).|no|once|(1,1,1)|+|box.rotation|Rotation of the shape. Rotation is counter clockwise for all axes and is measured in degrees.|no|once|(0,0,0)| 
 +|box.halfExtends|Half extends of the box shape. This is not the entire size of the box but half the size.|no|once|(0.5,0.5,0.5)
 +|cylinder|Defines a cylinder shape. The cylinder is oriented along the Y axis and has a top and a bottom radiusFor a uniform cylinder both are the same.|no|multiple|-| 
 +|cylinder.position|Position of the cylinder shape.|no|once|(0,0,0)| 
 +|cylinder.rotation|Rotation of the cylinder shape. Rotation is counter clockwise for all axes and is measured in degrees.|no|once|(0,0,0)| 
 +|cylinder.halfHeight|Half height of the cylinder. This is half the length of the top part of the cylinder to the bottom part.|no|once|0.5| 
 +|cylinder.topRadius|Radius of the top part of the cylinder.|no|once|0.5| 
 +|cylinder.bottomRadius|Radius of the bottom part of the cylinder.|no|once|0.5| 
 +|cylinder.radius|Shortcut to define the top and bottom radius of the cylinder to the same value.|no|once|0.5| 
 +|capsule|Defines a capsule shape. The capsule is oriented along the Y axis and has a top and a bottom radius. For a uniform capsule both are the same.|no|multiple|-| 
 +|capsule.position|Position of the capsule shape.|no|once|(0,0,0)
 +|capsule.rotation|Rotation of the capsule shape. Rotation is counter clockwise for all axes and is measured in degrees.|no|once|(0,0,0)| 
 +|capsule.halfHeight|Half height of the capsule. This is half the length of the top sphere center of the cylinder to the bottom one.|no|once|0.5| 
 +|capsule.topRadius|Radius of the top part of the capsule.|no|once|0.5| 
 +|capsule.bottomRadius|Radius of the bottom part of the capsule.|no|once|0.5| 
 +|capsule.radius|Shortcut to define the top and bottom radius of the capsule to the same value.|no|once|0.5| 
  
 ====== Sample file ====== ====== Sample file ======
 +
 <code xml><?xml version="1.0" encoding="ISO-8859-1"?> <code xml><?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE rig SYSTEM "DragengineRig.dtd"> 
 <rig> <rig>
 + <comment>A test rig by RPTD (roland@rptd.ch)</comment>
   
- <author>RPTD (roland@rptd.ch)</author> + <bone> 
-  + <name>rootBone</name> 
- <bone name="origin"+ <position
- <position x="0.0" y="0.0" z="0.0"/> + <x>0</x> <y>0</y> <z>0</z> 
- <rotation x="0.0" y="0.0" z="0.0"/> + </position
- <centralMassPoint x="0.0" y="0.2z="0.0"/>+ <rotation
 + <x>0</x> <y>0</y> <z>0</z> 
 + </rotation
 + <centralMassPoint
 + <x>0</x> <y>0.2</y> <z>0</z> 
 + </centralMassPoint>
  <box>  <box>
- <center x="0.0y="0.0z="0.0"/> + <position> 
- <halfSize x="0.2y="0.4z="0.1"/>+ <x>0</x> <y>0</y> <z>0</z
 + </position> 
 + <halfExtends> 
 + <x>0.2</x> <y>0.4</y> <z>0.1</z> 
 + </halfExtends>
  </box>  </box>
  <mass>5.5</mass>  <mass>5.5</mass>
Line 80: Line 123:
  </bone>  </bone>
   
- <bone name="head"+ <bone
- <position x="0.0" y="0.6z="0.0"/> + <name>childBone</name
- <rotation x="0.0" y="0.0" z="0.0"/> + <parent>rootBone</parent
- <parent>origin</parent+ <position
- <centralMassPoint x="0.0" y="0.75z="0.0"/> + <x>0</x> <y>0.6</y> <z>0</z> 
- <box+ </position
- <center x="0.0y="0.0z="0.0"/> + <rotation
- <halfSize x="0.1" y="0.15" z="0.08"/> + <x>0</x> <y>0</y> <z>0</z
- </box>+ </rotation
 + <centralMassPoint
 + <x>0</x> <y>0.75</y> <z>0</z
 + </centralMassPoint> 
 + <capsule
 + <position> 
 + <x>0</x> <y>0</y> <z>0</z> 
 + </position> 
 + <rotation> 
 + <x>0</x> <y>90</y> <z>0</z> 
 + </rotation> 
 + <halfHeight>0.5</halfHeight
 + <topRadius>0.1</topRadius> 
 + <bottomRadius>0.2</bottomRadius
 + </capsule>
  <mass>2.5</mass>  <mass>2.5</mass>
  <dynamic>true</dynamic>  <dynamic>true</dynamic>
Line 95: Line 152:
 </rig> </rig>
 </code> </code>
- 
-====== Links ====== 
-  * [[gamedev:main|Game Development Informations]] 
-  * [[:start|Main page]] 
formats/modules/derigxml/xml_rig_file_.rig.xml.1206059176.txt.gz · Last modified: 2008/03/21 00:26 by dragonlord