SourceForge.net Logo
Home
Documentation
    GLwrapper
    Items
    Armature
    LumFile
Tutorials
Links
Support This Project
OpenGL
Lumina file format

This is the documentation about the lumina file format:

Example for a simple Cube:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE lumina>
<lumina version="0.3">
<node name="Node">
<mesh name="Cube" vertices="8">
<component name="Vertex" type="vertex" dim="3" format="float">
1.000000 1.000000 1.000000
1.000000 1.000000 -1.000000
-1.000000 1.000000 -1.000000
-1.000000 1.000000 1.000000
1.000000 -1.000000 1.000000
1.000000 -1.000000 -1.000000
-1.000000 -1.000000 -1.000000
-1.000000 -1.000000 1.000000
</component>
<component name="Normal" type="vector" dim="3" format="float">
0.577349 0.577349 0.577349
0.577349 0.577349 -0.577349
-0.577349 0.577349 -0.577349
-0.577349 0.577349 0.577349
0.577349 -0.577349 0.577349
0.577349 -0.577349 -0.577349
-0.577349 -0.577349 -0.577349
-0.577349 -0.577349 0.577349
</component>
<index name="Index" primitive="3">
0 1 2
0 2 3
4 7 5
7 6 5
0 4 1
4 5 1
1 5 2
5 6 2
2 6 7
2 7 3
4 0 7
0 3 7
</index>
</mesh>
<texture name="Texture" filename="cube_mipmap.dds"/>
<texture name="Tex2" width="1024" cubemap="true" mipmap="true" format="RGB8">
Base64 encoded data
</texture>
<script name="Script" run="true">
//ECMA Script code
</script>
<shader name="Vertexshader" type="vertex">
//Vertexshader code
</shader>
<shader name="Fragmentshader" type="fragment">
//Fragmentshader code
</shader>
</node>
</lumina>


node
can be a child of node or top level
The node is a container to group all other object types.
name string
The name of the node

mesh
can be a child of node
The mesh is a container for vertex data. Each component has the same number of
vertices. Previous versions (< 0.3) uses "stream" objects instead "mesh", this can be
converted by load and store a file.

name string
The mesh name
vertices int
The number of vertices in the components.

component
can be a child of mesh
name string
The components name.
type int
"vertex" "vector" "color" "uvcoords" "bonedep" "quaternion" used for selecting the icon
and default binding.
dim int
The number of dimensions 1,2,3 or 4
format string
The Format should be "float", "byte", "ubyte", "short", "ushort", "int or "uint". In
future "half" or "double" maybe supported too.
keyframes int (added in Lumina 0.3.0)
The keyframe is used for animation or morphing. The size of folowing data will be raised
by the factor of "keyframe". Each component can store a different number of keyframes,
for example, a animation requires alternate sets of position and normals, but not
texcoords per frame.

index
can be a child of mesh
name string
The name of the index
primitive int
The number of vertices per primitive should be 3 for triangles and 4 for quads. 6 Are
also supported for triangles with adjacencies

buffer
can be a child of node. This object is very similar to the meshs component.
differences are the size and not available type.
name string
The buffers name.
size int
number of elements.
dim int
The number of dimensions 1,2,3 or 4
format string
The Format should be "float", "byte", "ubyte", "short", "ushort", "int or "uint". In
future "half" or "double" maybe supported too.
keyframes int
The keyframe is used for animation or morphing.

uniform (added in Lumina 0.3.3)
can be a child of node. This Object is similar to the Buffer object, but the data
are stored on the Client side of Opengl.
name string
The buffers name.
size int
number of elements.
dim int
The number of dimensions 1,2,3,4,9 (mat3) or 16 (mat4)
format string
The Format only "float" or "int"
keyframes int
The keyframe is used for animation or morphing. Also usefully for interpolated uniform
variables.

texture
can be a child of node
Currently it's not supported to store a texture in a lum file.
name string
The textures name
filename string
A filename or path to the texture

ideas for future to store the textures in lum files:
format string
The texture format name without "GL_" prefix
width int
texture width
height int
textures height. 1 or not set for 1D textures. Ignored for cubemaps
depth int
textures depth. 1 or not set for 1D 2D textures. Ignored for cubemaps
cubemap bool
"true" for cubemaps
mipmaps bool
true for mipmaps

filters are not part of the texture


script
can be a child of node
name string
The name
run bool
"true" if the script should run after loading the lum file
The encapsulated text is the ECMA Script code.

shader
can be a child of node
name string
The name...
type string "vertex" "fragment" or "geometry"
The encapsulated text is the GLSL shader code

armature
can be a child of node
name
The Armatures Name

bone
a Bone can be a child of bone or armature
name string
Bones name (only important for editing)
id int
Bone number (0 is reserved for the Armature)
jointx float
X position of joint
jointy float
Y position of joint
jointz float
Z position of joint

EDIT