-
Notifications
You must be signed in to change notification settings - Fork 25
Xflow
XFlow is a declarative language for data processing based on XML. It is part of the XML3D specification, but can also be used separately. In XML3D, it is currently only used for mesh processing. Image Processing, Surface Shading and general data processing on large data sets are other possible applications in the future.
First we will describe how data is declared and connected to the scene graph.
Several elements inside the scene graph, including <mesh>, <shader> and <lightshader> use generic data content, e.g. like this:
<mesh type="triangles">
<int name="index">0 1 2 2 3 0 4 ... </int>
<float3 name="position">-1.0 -1.0 -1.0 ... </float3>
<float3 name="normal">0.0 0.0 -1.0 0.0 0.0 ... </float3>
<float2 name="texcoord">1.0 0.0 ... </float2>
</mesh>Generic data is declared with a list of typed Value Elements, e.g. <float>, <float3>, <int> and so on. Each Value Element is assigned with a name via its name attribute.
In XML3D, it is also possible to declare generic data that is not directly used inside the scene graph. For this, we use the <data> element:
<data id="cubeMeshData" >
<int name="index">0 1 2 2 3 0 4 ... </int>
<float3 name="position">-1.0 -1.0 -1.0 ... </float3>
<float3 name="normal">0.0 0.0 -1.0 0.0 0.0 ... </float3>
<float2 name="texcoord">1.0 0.0 ... </float2>
</data>
...
<group style="transform: translateX(-5px)" >
<mesh type="triangle" src="#cubeMeshData" />
</group>
<group style="transform: translateX(5px)" >
<mesh type="triangle" src="#cubeMeshData" />
</group>Here, we declared the generic data inside a <data> element and reused it for two meshes, by referring the <data> node via its document id cubeMeshData inside the src attribute of <mesh>.