Commits

Jason McKesson  committed 03c4fd0

Tut08: Added the ship mesh. Probably needs improvement.

  • Participants
  • Parent commits dffd36d

Comments (0)

Files changed (7)

File Documents/Positioning/Tutorial 08.xml

     <section>
         <title>Interpolation</title>
         <para>One other trick you can do with quaternions is this.</para>
+        <para/>
     </section>
     
     <section>

File Meshes/ConvCollada.lua

+
+local realPrint = print;
+--package.cpath = package.cpath..";./?.dll;./?.so;../lib/?.so;../lib/vc_dll/?.dll;../lib/bcc_dll/?.dll;../lib/mingw_dll/?.dll;"
+require("wx")
+print = realPrint;
+
+require "XmlWriter"
+require "vmath"
+require "lfs"
+
+--[[
+Command line format:
+
+lua ConvCollada.lua <inputFile> <meshName> [options]
+
+* <inputFile>: the Collada file to process.
+* <meshName>: the name of the mesh in the Collada file to process.
+
+Options:
+
+* -mapfile <mapFileName>		: Specifies how semantic names map to attribute indices
+* -mapstd						: Equivalent to -mapfile <ConvCollada.lua dir>stdmap.txt
+* -map <semanticName>=<number> ...	:Specifies how semantic names map to attribute indices.
+* -vao <vaoName> <number> <number> ...	:Specifies a named VAO, with attribute indices.
+* -o <outputFilename>
+
+You must provide one of the -map fields. You do not have to provide a -vao or -o. The default
+filename is the <inputFile>.xml.
+]]
+
+--Utility iterator over all child XML nodes. Nodes of ANY type.
+local function ixmlnodes(parNode)
+	local currNode = parNode:GetChildren();
+	return function()
+		local ret = currNode;
+		if(currNode) then currNode = currNode:GetNext() end
+		return ret;
+	end
+end
+
+--Iterator over all child XML elements. ONLY elements.
+local function ixmlelements(parNode, nodeName)
+	local currNode = parNode:GetChildren();
+	if(nodeName) then
+		while(currNode and
+			not (currNode:GetType() == wx.wxXML_ELEMENT_NODE and
+			currNode:GetName() == nodeName)) do
+			
+			currNode = currNode:GetNext();
+		end
+		
+		return function()
+			local ret = currNode;
+			if(currNode) then
+				repeat
+					currNode = currNode:GetNext();
+				until((not currNode) or
+					(currNode:GetType() == wx.wxXML_ELEMENT_NODE and
+					currNode:GetName() == nodeName))
+			end
+			return ret;
+		end
+	else
+		while(currNode and
+			currNode:GetType() ~= wx.wxXML_ELEMENT_NODE) do
+			
+			currNode = currNode:GetNext();
+		end
+		
+		return function()
+			local ret = currNode;
+			if(currNode) then
+				repeat
+					currNode = currNode:GetNext();
+				until((not currNode) or currNode:GetType() == wx.wxXML_ELEMENT_NODE)
+			end
+			return ret;
+		end
+	end
+end
+
+local function findXmlChild(parNode, nodeName)
+	for xChild in ixmlelements(parNode, nodeName) do
+		return xChild;
+	end
+	
+	return nil;
+end
+
+local function popOne(first, ...)
+	return ...
+end
+
+local function popTwo(first, second, ...)
+	return ...
+end
+
+
+local inputFile, meshName = ...;
+assert(inputFile, "You must provide an input file.");
+assert(meshName, "You must provide a mesh name to export.");
+
+local optionProcs = {}
+
+function optionProcs.mapfile(options, optionList, iCurrOption)
+	assert(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-",
+		"You must specify a mapping file name.");
+		
+	local filename = optionList[iCurrOption];
+		
+	local hFile = assert(io.open(filename, "r"),
+		"Could not open the mapping file \"" .. filename .. "\".");
+	
+	for line in hFile:lines() do
+		local semantic, number = line:match("([^%=]+)%=(%d+)");
+		if(semantic) then
+			options.map[semantic] = number;
+		end
+	end
+	
+	hFile:close();
+	
+	return 1;
+end
+
+function optionProcs.mapstd(options, optionList, iCurrOption)
+	local fnameLoc = arg[0]:match([[()[^%\%/]+$]]) - 1;
+	local thisDir = arg[0]:sub(1, fnameLoc)
+	optionProcs.mapfile(options, {thisDir .. "stdmap.txt"}, 1);
+	return 0;
+end
+
+function optionProcs.map(options, optionList, iCurrOption)
+	assert(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-",
+		"You must specify at least one mapping.");
+		
+	local iProcCount = 0;
+	while(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-") do
+		local currOpt = optionList[iCurrOption];
+		local semantic, number = currOpt:match("([^%=]+)%=(%d+)");
+		
+		assert(semantic, "Semantic mapping must be specified as SEMANTIC=attrib.");
+		
+		options.map[semantic] = number;
+		iCurrOption = iCurrOption + 1;
+		iProcCount = iProcCount + 1;
+	end
+	
+	return iProcCount;
+end
+
+function optionProcs.vao(options, optionList, iCurrOption)
+	assert(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-",
+		"You must specify a VAO name.");
+	local vao = {};
+	local vaoName = optionList[iCurrOption];
+	assert(not options.vaos[vaoName], "The VAO named \"" .. vaoName .. "\" has already been specified.");
+	iCurrOption = iCurrOption + 1;
+
+	assert(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-",
+		"You must specify at least one VAO attribute.");
+
+	local iProcCount = 1;
+	while(optionList[iCurrOption] and optionList[iCurrOption]:sub(1, 1) ~= "-") do
+		assert(tonumber(optionList[iCurrOption]),
+			"The VAO attribute must be a valid attribute index.");
+			
+		vao[#vao + 1] = optionList[iCurrOption];
+		iCurrOption = iCurrOption + 1;
+		iProcCount = iProcCount + 1;
+	end
+	
+	options.vaos[vaoName] = vao;
+	
+	return iProcCount;
+end
+
+function optionProcs.o(options, optionList, iCurrOption)
+	options.outputFile = optionList[iCurrOption];
+	return 1;
+end
+
+local function ParseOptions(optionList)
+	local options =
+	{
+		map = {},
+		outputFile = inputFile:gsub("%.[^%.]+$", ".xml"),
+		vaos = {},
+	}
+	
+	local iCurrOption = 1;
+	while(iCurrOption <= #optionList) do
+		local currOpt = optionList[iCurrOption];
+		assert(currOpt:sub(1, 1) == "-",
+			"Malformed option list starting at \"" .. currOpt .. "\"");
+		
+		currOpt = currOpt:sub(2, -1);
+		assert(optionProcs[currOpt], "Unknown option called \"" .. currOpt .. "\"");
+		
+		local iNumSkip = optionProcs[currOpt](options, optionList, iCurrOption + 1);
+		iCurrOption = iCurrOption + 1 + iNumSkip;
+	end
+
+	return options;
+end
+
+
+local options = ParseOptions({popTwo(...)});
+
+local reverseMap = {}
+local bFoundMap = false;
+for semantic, number in pairs(options.map) do
+	reverseMap[number] = semantic;
+	bFoundMap = true;
+end
+
+assert(bFoundMap, "No -map, -mapstd, or -mapfile option was used. Cannot export a mesh.");
+
+--Check to see if any VAOs talk about non-existent attributes.
+for vaoName, vao in pairs(options.vaos) do
+	for j, source in ipairs(vao) do
+		assert(reverseMap[source],
+			"The VAO \"" .. vaoName .. "\" revers to the attribute " .. source .. " which is not in the map.");
+	end
+end
+
+
+local colladaDoc = wx.wxXmlDocument(inputFile);
+assert(colladaDoc, "Could not load XML file \"" .. inputFile .. "\"");
+assert(colladaDoc:GetRoot(), "Could not load XML file \"" .. inputFile .. "\"");
+
+local xColladaElem = colladaDoc:GetRoot();
+
+--Find the library_geometries node.
+local xGeometries = nil;
+for xChild in ixmlelements(xColladaElem) do
+	if(xChild:GetName() == "library_geometries") then
+		xGeometries = xChild;
+		break;
+	end
+end
+
+assert(xGeometries, "There are no meshes in the COLLADA file.");
+
+--Find the 'geometry' node with the name designated for export.
+local xTargetGeom = nil;
+for xChild in ixmlelements(xGeometries, "geometry") do
+	if(xChild:GetPropVal("id", "") == meshName) then
+		xTargetGeom = xChild;
+		break;
+	end
+end
+
+assert(xTargetGeom, "Could not find the geometry with id '" .. meshName .. "' in the document.");
+
+local xMeshToWrite = nil;
+for xChild in ixmlelements(xTargetGeom, "mesh") do
+	assert(xMeshToWrite == nil, "Multiple meshes in a geometry are not yet supported.");
+	xMeshToWrite = xChild;
+end
+
+assert(xMeshToWrite, "Could not find a mesh within the geometry with id '" .. meshName .. "'");
+
+--Collate all of the sources in the mesh.
+local sources = {};
+local bFound = false;
+for xChild in ixmlelements(xMeshToWrite, "source") do
+	local bHasId, id = xChild:GetPropVal("id");
+	assert(bHasId, "Malformed COLLADA. No 'id' attribute on 'source' element.");
+	sources["#" .. id] = xChild;
+	bFound = true;
+end
+
+assert(bFound, "Could not find any 'source' elements in the '" .. meshName .. "'.");
+
+--Get any vertex remappings.
+local vertexRemap = {};
+local vertexRemapId = nil;
+for xChild in ixmlelements(xMeshToWrite, "vertices") do
+	local bHasId, id = xChild:GetPropVal("id");
+	assert(bHasId, "Malformed COLLADA. No 'id' attribute on 'vertices' element.");
+	vertexRemapId = "#" .. id;
+	local bFound = false;
+	for xInput in ixmlelements(xChild, "input") do
+		assert(not bFound, "Cannot process multiple 'vertices' 'input' elements yet.");
+		
+		local bHasId, semantic = xInput:GetPropVal("semantic");
+		assert(bHasId, "An 'input' element on 'vertices' doesn't have a semantic.");
+		local bHasId, source = xInput:GetPropVal("source");
+		assert(bHasId, "An 'input' element on 'vertices' doesn't have a source.");
+		vertexRemap[semantic] = source;
+		bFound = true;
+	end
+end
+
+--Get the triangle data.
+local triangleData = {};
+for xChild in ixmlelements(xMeshToWrite, "polylist") do
+	triangleData.xObj = xChild;
+	triangleData.xIndices = findXmlChild(xChild, "p"):GetChildren();
+	triangleData.inputs = {};
+	triangleData.numInputs = 0;
+	for xInput in ixmlelements(xChild, "input") do
+		local bHasId, semantic = xInput:GetPropVal("semantic");
+		assert(bHasId, "An 'input' element on 'polylist' doesn't have a semantic.");
+		local bHasId, source = xInput:GetPropVal("source");
+		assert(bHasId, "An 'input' element on 'polylist' doesn't have a source.");
+		triangleData.inputs[semantic] = source;
+		
+		triangleData.numInputs = triangleData.numInputs + 1;
+	end
+end
+
+--Our VAO mapping has semantics. Create a mapping between triangle data and 
+-- actual attributes.
+local outputMap = {};
+local outputIndexOffset = {}
+for semantic, source in pairs(triangleData.inputs) do
+	if(options.map[semantic]) then
+		outputMap[semantic] = source;
+		if(source == vertexRemapId) then
+			for vSemantic, vSource in pairs(vertexRemap) do
+				outputMap[semantic] = vSource;
+				break;
+			end
+		end
+
+		for xInput in ixmlelements(triangleData.xObj, "input") do
+			if(semantic == xInput:GetPropVal("semantic", "")) then
+				outputIndexOffset[semantic] = tonumber(xInput:GetPropVal("offset", ""));
+			end
+		end
+	else
+		print("Warning: semantic '" .. semantic ..
+			"' does not have a map entry. It will not be written to the file.");
+	end
+end
+
+--[[
+Retrieves the basic data type and size of an attribute from the COLLADA doc.
+Returns, in order:
+* the MeshFormat "type"
+* the MeshFormat "size", as an integer
+* a Lua pattern string that returns a value. Suitable for use with string.gmatch
+* the XML text node containing the array.
+]]
+local function ParseDataType(xSource)
+	local typeMap = 
+	{
+		float_array = "float",
+	}
+
+	local retType = nil;
+	local valueElem = nil;
+	for colladaType, meshType in pairs(typeMap) do
+		valueElem = findXmlChild(xSource, colladaType);
+		if(valueElem) then
+			retType = meshType;
+			break;
+		end
+	end
+	
+	assert(retType, "Could not find the type for the 'source' named '" ..
+		xSource:GetPropVal("id", "") .. "'.");
+	
+	local xTech = assert(findXmlChild(xSource, "technique_common"),
+		"Malformed COLLADA: Missing 'technique_common' descriptor on 'source'.");
+
+	local xAccess = assert(findXmlChild(xTech, "accessor"),
+		"Malformed COLLADA: Missing 'technique_common' descriptor on 'source'.");
+
+	local bHasProp, stride = xAccess:GetPropVal("stride");
+	assert(bHasProp, "Malformed COLLADA: missing 'stride' on 'accessor'.");
+	
+	stride = tonumber(stride);
+	
+	return retType, stride, "([%+%-]?[%d%.]+)", valueElem:GetChildren();
+end
+
+local function WriteTextForArray(writer, valueArray, stride, indexList, indexOffset)
+	writer:AddText("\n");
+	
+	for i=1, #indexList, triangleData.numInputs do
+		writer:AddText("\t\t")
+		local indexIx = i + indexOffset;
+		local index = indexList[indexIx];
+		index = index * stride;
+		index = index + 1; --Convert to one-base index.
+		for j=1, stride do
+			writer:AddText(valueArray[index], " ");
+			index = index + 1;
+		end
+		writer:AddText("\n");
+	end
+end
+
+--Load the indices into Lua
+local indexList = {}
+local revIndices = {}
+for index in triangleData.xIndices:GetContent():gmatch("(%d+)") do
+	revIndices[#revIndices + 1] = tonumber(index);	--zero-base index
+	
+	--Reverse the winding order.
+	if(#revIndices == triangleData.numInputs * 3) then
+		for vertex=3, 1, -1 do
+			for input=1, triangleData.numInputs do
+				local index = (vertex-1) * triangleData.numInputs + input
+				indexList[#indexList + 1] = revIndices[index];
+			end
+		end
+	
+		revIndices = {};
+	end
+end
+
+assert(#revIndices == 0);
+
+--Write the mesh.
+local writer = XmlWriter.XmlWriter(options.outputFile);
+writer:AddPI("oxygen", [[RNGSchema="../../Documents/meshFormat.rnc" type="compact"]]);
+writer:PushElement("mesh", "http://www.arcsynthesis.com/gltut/mesh");
+
+--Write the attributes, in order of their indices.
+for semantic, source in pairs(outputMap) do
+	writer:PushElement("attribute");
+		writer:AddAttribute("index", tostring(options.map[semantic]));
+		
+		local meshType, stride, pttrn, valueText = ParseDataType(sources[source]);
+		
+		writer:AddAttribute("type", meshType);
+		writer:AddAttribute("size", tostring(stride));
+		
+		local valueArray = {};
+		for value in valueText:GetContent():gmatch(pttrn) do
+			valueArray[#valueArray + 1] = value;
+		end
+		
+		WriteTextForArray(writer, valueArray, stride, indexList, outputIndexOffset[semantic]);
+	writer:PopElement();
+end
+
+--Write the VAOs
+for vaoName, vao in pairs(options.vaos) do
+	writer:PushElement("vao");
+		writer:AddAttribute("name", vaoName);
+		for i, attrib in ipairs(vao) do
+			writer:PushElement("source");
+				writer:AddAttribute("attrib", tostring(attrib));
+			writer:PopElement();
+		end
+	writer:PopElement();
+end
+
+--Write the rendering command(s)
+	writer:PushElement("arrays");
+		writer:AddAttribute("cmd", "triangles");
+		writer:AddAttribute("start", "0");
+		local numTris = tonumber(triangleData.xObj:GetPropVal("count", ""));
+		writer:AddAttribute("count", tostring(numTris * 3));
+	writer:PopElement();
+
+writer:PopElement();
+writer:Close();
+

File Meshes/stdmap.txt

+VERTEX=0
+NORMAL=2
+COLOR=1

File Tut 08 Getting Oriented/GimbalLock.cpp

 	"SmallGimbal.xml",
 };
 
+bool g_bDrawGimbals = true;
+
 void DrawGimbal(Framework::MatrixStack &currMatrix, GimbalAxis eAxis, float fSize, glm::vec4 baseColor)
 {
+	if(!g_bDrawGimbals)
+		return;
+
 	Framework::MatrixStackPusher pusher(currMatrix);
 
 	switch(eAxis)
 	glUseProgram(0);
 }
 
+Framework::Mesh *g_pObject = NULL;
+
 //Called after the window and OpenGL are initialized. Called exactly once, before the main loop.
 void init()
 {
 		{
 			g_Gimbals[iLoop] = new Framework::Mesh(g_strGimbalNames[iLoop]);
 		}
+
+		g_pObject = new Framework::Mesh("test.xml");
 	}
 	catch(std::exception &except)
 	{
 	currMatrix.RotateZ(g_angles.fAngleZ);
 	DrawGimbal(currMatrix, GIMBAL_Z_AXIS, 22.0f, glm::vec4(1.0f, 0.3f, 0.3f, 1.0f));
 
+	glUseProgram(theProgram);
+	currMatrix.Scale(3.0, 3.0, 3.0);
+	currMatrix.RotateX(-90);
+	//Set the base color for this object.
+	glUniform4f(baseColorUnif, 1.0, 1.0, 1.0, 1.0);
+	glUniformMatrix4fv(modelToCameraMatrixUnif, 1, GL_FALSE, glm::value_ptr(currMatrix.Top()));
+
+	g_pObject->Render("tint");
+
+	glUseProgram(0);
+
 	glutSwapBuffers();
 	glutPostRedisplay();
 }
 
 	case 'q': g_angles.fAngleZ += SMALL_ANGLE_INCREMENT; break;
 	case 'e': g_angles.fAngleZ -= SMALL_ANGLE_INCREMENT; break;
+
+	case 32:
+		g_bDrawGimbals = !g_bDrawGimbals;
+		break;
 	}
 }
 

File Tut 08 Getting Oriented/data/Ship.dae

+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
+  <asset>
+    <contributor>
+      <author>Blender User</author>
+      <authoring_tool>Blender 2.56.0 r34076</authoring_tool>
+    </contributor>
+    <created>2011-02-09T18:46:37</created>
+    <modified>2011-02-09T18:46:37</modified>
+    <unit name="meter" meter="1"/>
+    <up_axis>Z_UP</up_axis>
+  </asset>
+  <library_cameras>
+    <camera id="Camera-camera" name="Camera">
+      <optics>
+        <technique_common>
+          <perspective>
+            <xfov>49.13434</xfov>
+            <aspect_ratio>1.777778</aspect_ratio>
+            <znear>0.1</znear>
+            <zfar>100</zfar>
+          </perspective>
+        </technique_common>
+      </optics>
+    </camera>
+  </library_cameras>
+  <library_lights>
+    <light id="Lamp-light" name="Lamp">
+      <technique_common>
+        <point>
+          <color>1 1 1</color>
+          <constant_attenuation>1</constant_attenuation>
+          <linear_attenuation>0</linear_attenuation>
+          <quadratic_attenuation>5.55556e-4</quadratic_attenuation>
+        </point>
+      </technique_common>
+    </light>
+  </library_lights>
+  <library_images/>
+  <library_effects/>
+  <library_materials/>
+  <library_geometries>
+    <geometry id="Plane-mesh">
+      <mesh>
+        <source id="Plane-mesh-positions">
+          <float_array id="Plane-mesh-positions-array" count="174">0.8 0 5.091465 -0.8 0 5.091465 -0.7365548 0.7365548 4.091465 0 0 5.486261 0.7365548 0.7365548 4.091465 -0.7365548 0.7365548 4.091465 0 1 4.091465 0 1.845113 -1.908402 1.845113 -0.6483857 -1.908402 -1.845113 -0.6483857 -1.908402 1.188213 1.188213 -1.908402 -1.188213 1.188213 -1.908402 0 -0.6483857 -1.908402 1.422557 -0.3241928 1.091532 -1.422557 -0.3241928 1.091532 1.516663 0.2699136 -1.908402 -1.516663 0.2699136 -1.908402 1.094106 0.5941064 1.091532 -1.094106 0.5941064 1.091532 2.755336 0.5183109 1.252996 -2.755336 0.5183109 1.252996 3.05465 0.1929539 -1.733622 -3.05465 0.1929539 -1.733622 2.750729 -0.2587609 1.277193 -2.750729 -0.2587609 1.277193 2.904993 0.4069349 -0.2403131 -2.904993 0.4069349 -0.2403131 2.902689 -0.03290349 -0.2282143 -2.902689 -0.03290349 -0.2282143 2.753033 0.2287188 1.265094 -2.753033 0.2287188 1.265094 4.670839 0.2244458 1.458042 -4.670839 0.2244458 1.458042 4.822799 0.4503033 -0.04736506 -4.822799 0.4503033 -0.04736506 4.820496 -0.03717672 -0.03526628 -4.820496 -0.03717672 -0.03526628 0.9623838 0.9623838 1.091532 -0.9623838 0.9623838 1.091532 0.5 -0.3241928 1.091532 -0.5 -0.3241928 1.091532 1.211278 -0.1620964 2.591498 -1.211278 -0.1620964 2.591498 0.7112783 -0.4862892 -0.4084351 -0.7112783 -0.4862892 -0.4084351 1 0 4.091465 0.75 -0.1620964 2.591498 -0.75 -0.1620964 2.591498 0.25 -0.1620964 2.591498 -0.25 -0.1620964 2.591498 0 -0.3241928 1.091532 0.125 -0.405241 0.3415482 -0.125 -0.405241 0.3415482 -1 0 4.091465 -0.25 -0.1620964 2.591498 0 -0.1620964 2.591498 0.25 -0.1620964 2.591498 0 0 4.091465</float_array>
+          <technique_common>
+            <accessor source="#Plane-mesh-positions-array" count="58" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Plane-mesh-normals">
+          <float_array id="Plane-mesh-normals-array" count="174">0.6923124 0.6569414 0.2984405 0 0.9706107 0.2405774 0 0.4494766 0.8932768 -0.5413678 0.6925871 0.4766686 0.7200537 -0.531663 0.4458754 -0.7200537 -0.531663 0.4458754 0.8036439 -0.5703299 0.1697744 -0.568041 -0.8065432 0.1636097 0 -0.9989318 0.04608291 -0.8041628 0.5850704 0.1045564 0.72631 0.6685995 -0.1593676 0 0.4198431 -0.90759 -0.72631 0.6685995 -0.1593676 0.7624744 0.5555894 0.3315531 -0.7624744 0.5555894 0.3315531 0.4916532 0.1722465 -0.8535722 -0.4916532 0.1722465 -0.8535722 0.4027222 -0.7771539 0.4835352 0.4636067 -0.817774 -0.3409833 -0.4636067 -0.817774 -0.3409833 -0.4027222 -0.7771539 0.4835352 0.4004639 0.8580889 -0.3213599 -0.4004639 0.8580889 -0.3213599 0.5471664 0.5945006 0.5891599 -0.5471664 0.5945006 0.5891599 0.9838863 -0.001617431 -0.1786248 -0.9838863 -0.001617431 -0.1786248 0.4582049 -0.8560442 -0.2391125 -0.4582049 -0.8560442 -0.2391125 0.56386 -0.5887936 0.5790887 -0.56386 -0.5887936 0.5790887 0.3905149 -0.2341074 0.8903165 -0.3905149 -0.2341074 0.8903165 0.4132511 -0.7235328 -0.5528733 0.6556292 0.5953856 -0.4643697 0.6358227 0.6805627 0.3640248 -0.6358227 0.6805627 0.3640248 -0.6556292 0.5953856 -0.4643697 -0.4132511 -0.7235328 -0.5528733 0 -0.9301126 -0.3672292 0.7031159 0.7031159 0.1058382 -0.7031159 0.7031159 0.1058382 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0.4867092 -0.8585162 0.1613208 -0.4867092 -0.8585162 0.1613208 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251 0 -0.9942015 0.1074251</float_array>
+          <technique_common>
+            <accessor source="#Plane-mesh-normals-array" count="58" stride="3">
+              <param name="X" type="float"/>
+              <param name="Y" type="float"/>
+              <param name="Z" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <source id="Plane-mesh-colors">
+          <float_array id="Plane-mesh-colors-array" count="1008">0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6705883 0.7607843 0.7607843 0.6705883 0.7607843 0.7607843 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6705883 0.7607843 0.7607843 0.682353 0.772549 0.7411765 0.6666667 0.7607843 0.7647059 0.682353 0.772549 0.7411765 0.6705883 0.7607843 0.7607843 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.3215686 0.3647059 0.3686274 0.4117647 0.4666666 0.4705882 0.3843137 0.4392157 0.4431372 0.3843137 0.4392157 0.4431372 0.4117647 0.4666666 0.4705882 0.3215686 0.3647059 0.3686274 0.4117647 0.4666666 0.4705882 0.3843137 0.4352941 0.4352941 0.3843137 0.4392157 0.4431372 0.3843137 0.4392157 0.4431372 0.3843137 0.4352941 0.4352941 0.4117647 0.4666666 0.4705882 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.6666667 0.7607843 0.7647059 0.7019608 0.772549 0.627451 0.6352941 0.7215687 0.6941177 0.6352941 0.7215687 0.6941177 0.7019608 0.772549 0.627451 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6392157 0.7215687 0.7098039 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6392157 0.7215687 0.7098039 0.6666667 0.7607843 0.7647059 0.7019608 0.772549 0.627451 0.6235294 0.7137255 0.7137255 0.7411765 0.8 0.4941176 0.7411765 0.8 0.4941176 0.6235294 0.7137255 0.7137255 0.7019608 0.772549 0.627451 0.4627451 0.5411765 0.5215687 0.3215686 0.3647059 0.3686274 0.3686274 0.4156863 0.4196078 0.3686274 0.4156863 0.4196078 0.3215686 0.3647059 0.3686274 0.4627451 0.5411765 0.5215687 0.8666667 0.854902 0.6745098 0.7411765 0.8 0.4941176 0.6235294 0.7137255 0.7137255 0.6235294 0.7137255 0.7137255 0.7411765 0.8 0.4941176 0.8666667 0.854902 0.6745098 0.8666667 0.854902 0.682353 0.8666667 0.854902 0.6745098 0.6235294 0.7137255 0.7137255 0.6235294 0.7137255 0.7137255 0.8666667 0.854902 0.6745098 0.8666667 0.854902 0.682353 0.8666667 0.854902 0.6745098 0.5647059 0.6627451 0.6196079 0.7411765 0.8 0.4941176 0.7411765 0.8 0.4941176 0.5647059 0.6627451 0.6196079 0.8666667 0.854902 0.6745098 0.882353 0.8705883 0.6588236 0.3215686 0.3647059 0.3686274 0.372549 0.4156863 0.3803921 0.372549 0.4156863 0.3803921 0.3215686 0.3647059 0.3686274 0.882353 0.8705883 0.6588236 0.8784314 0.8627451 0.6784314 0.882353 0.8705883 0.6588236 0.372549 0.4156863 0.3803921 0.372549 0.4156863 0.3803921 0.882353 0.8705883 0.6588236 0.8784314 0.8627451 0.6784314 0.882353 0.8705883 0.6588236 0.8901961 0.8784314 0.6392157 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.8901961 0.8784314 0.6392157 0.882353 0.8705883 0.6588236 0.8392157 0.8431373 0.6941177 0.6392157 0.7215687 0.7098039 0.6156863 0.7019608 0.7058824 0.6156863 0.7019608 0.7058824 0.6392157 0.7215687 0.7098039 0.8392157 0.8431373 0.6941177 0.7529412 0.8196079 0.6470589 0.827451 0.8392157 0.6980392 0.6156863 0.7019608 0.7058824 0.6156863 0.7019608 0.7058824 0.827451 0.8392157 0.6980392 0.7529412 0.8196079 0.6470589 0.8431373 0.8431373 0.6941177 0.8666667 0.854902 0.682353 0.6196079 0.7098039 0.7137255 0.6196079 0.7098039 0.7137255 0.8666667 0.854902 0.682353 0.8431373 0.8431373 0.6941177 0.8470588 0.8431373 0.6862745 0.8627451 0.854902 0.6745098 0.882353 0.8705883 0.6588236 0.882353 0.8705883 0.6588236 0.8627451 0.854902 0.6745098 0.8470588 0.8431373 0.6862745 0.8666667 0.854902 0.682353 0.8431373 0.8431373 0.6941177 0.8431373 0.8431373 0.6588236 0.8431373 0.8431373 0.6588236 0.8431373 0.8431373 0.6941177 0.8666667 0.854902 0.682353 0.8431373 0.8470588 0.6627451 0.8745098 0.8588235 0.6784314 0.5568628 0.6588236 0.6392157 0.5568628 0.6588236 0.6392157 0.8745098 0.8588235 0.6784314 0.8431373 0.8470588 0.6627451 0.6156863 0.6509804 0.654902 0.6196079 0.654902 0.6588236 0.6078432 0.6431373 0.6470589 0.6078432 0.6431373 0.6470589 0.6196079 0.654902 0.6588236 0.6156863 0.6509804 0.654902 0.9960784 1 0.317647 0.9960784 1 0.317647 0.7411765 0.8 0.4941176 0.7411765 0.8 0.4941176 0.9960784 1 0.317647 0.9960784 1 0.317647 0.9960784 1 0.317647 0.9960784 1 0.317647 0.7411765 0.8 0.4941176 0.7411765 0.8 0.4941176 0.9960784 1 0.317647 0.9960784 1 0.317647 0.9960784 1 0.317647 0.7411765 0.8 0.4941176 0.9960784 1 0.317647 0.9960784 1 0.317647 0.7411765 0.8 0.4941176 0.9960784 1 0.317647 0.6666667 0.7607843 0.7647059 0.6235294 0.7137255 0.7176471 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.6235294 0.7137255 0.7176471 0.6666667 0.7607843 0.7647059 0.6235294 0.7137255 0.7176471 0.7019608 0.772549 0.627451 0.6666667 0.7607843 0.7647059 0.6666667 0.7607843 0.7647059 0.7019608 0.772549 0.627451 0.6235294 0.7137255 0.7176471 0.7019608 0.772549 0.627451 0.7137255 0.7647059 0.7019608 0.6392157 0.7215687 0.7098039 0.6392157 0.7215687 0.7098039 0.7137255 0.7647059 0.7019608 0.7019608 0.772549 0.627451 0.7137255 0.7647059 0.7019608 0.6666667 0.7607843 0.7647059 0.6392157 0.7215687 0.7098039 0.6392157 0.7215687 0.7098039 0.6666667 0.7607843 0.7647059 0.7137255 0.7647059 0.7019608 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3686274 0.4156863 0.4196078 0.3686274 0.4156863 0.4196078 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3686274 0.4156863 0.4196078 0.3686274 0.4156863 0.4196078 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.6666667 0.7607843 0.7647059 0.6039216 0.6901961 0.6941177 0.6392157 0.7215687 0.7098039 0.6392157 0.7215687 0.7098039 0.6039216 0.6901961 0.6941177 0.6666667 0.7607843 0.7647059 0.6039216 0.6901961 0.6941177 0.6980392 0.7529412 0.6980392 0.6392157 0.7215687 0.7098039 0.6392157 0.7215687 0.7098039 0.6980392 0.7529412 0.6980392 0.6039216 0.6901961 0.6941177 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.7058824 0.7450981 0.7450981 0.882353 0.8705883 0.6588236 0.7568628 0.8039216 0.6235294 0.7058824 0.7450981 0.7450981 0.7568628 0.8039216 0.6235294 0.6313726 0.6666667 0.6705883 0.7568628 0.8039216 0.6235294 0.882353 0.8705883 0.6588236 0.7058824 0.7450981 0.7450981 0.7568628 0.8039216 0.6235294 0.7058824 0.7450981 0.7450981 0.6313726 0.6666667 0.6705883 0.6313726 0.6666667 0.6509804 0.8 0.827451 0.6352941 0.6352941 0.6627451 0.6470589 0.8 0.827451 0.6352941 0.8705883 0.8588235 0.6784314 0.6352941 0.6627451 0.6470589 0.8705883 0.8588235 0.6784314 0.8 0.827451 0.6352941 0.6352941 0.6627451 0.6470589 0.8 0.827451 0.6352941 0.6313726 0.6666667 0.6509804 0.6352941 0.6627451 0.6470589 0.6117647 0.6509804 0.6509804 0.8431373 0.8431373 0.6941177 0.8666667 0.854902 0.6745098 0.6117647 0.6509804 0.6509804 0.8666667 0.854902 0.6745098 0.6313726 0.6705883 0.6745098 0.8666667 0.854902 0.6745098 0.8431373 0.8431373 0.6941177 0.6117647 0.6509804 0.6509804 0.8666667 0.854902 0.6745098 0.6117647 0.6509804 0.6509804 0.6313726 0.6705883 0.6745098 0.3529412 0.4 0.4039216 0.3843137 0.4392157 0.4431372 0.3529412 0.4 0.4039216 0.3529412 0.4 0.4039216 0.3215686 0.3647059 0.3686274 0.3529412 0.4 0.4039216 0.3215686 0.3647059 0.3686274 0.3529412 0.4 0.4039216 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3529412 0.4 0.4039216 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3529412 0.4 0.4039216 0.3529412 0.4 0.4039216 0.3529412 0.4 0.4039216 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274 0.3215686 0.3647059 0.3686274</float_array>
+          <technique_common>
+            <accessor source="#Plane-mesh-colors-array" count="336" stride="3">
+              <param name="R" type="float"/>
+              <param name="G" type="float"/>
+              <param name="B" type="float"/>
+            </accessor>
+          </technique_common>
+        </source>
+        <vertices id="Plane-mesh-vertices">
+          <input semantic="POSITION" source="#Plane-mesh-positions"/>
+        </vertices>
+        <polylist count="112">
+          <input semantic="VERTEX" source="#Plane-mesh-vertices" offset="0"/>
+          <input semantic="NORMAL" source="#Plane-mesh-normals" offset="1"/>
+          <input semantic="COLOR" source="#Plane-mesh-colors" offset="2"/>
+          <vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
+          <p>4 0 0 6 1 1 3 2 2 3 2 3 6 1 4 2 3 5 3 2 6 0 4 7 4 0 8 1 5 9 3 2 10 2 3 11 4 0 12 0 4 13 45 6 14 53 7 15 1 5 16 2 3 17 45 6 18 0 4 19 57 8 20 57 8 21 1 5 22 53 7 23 0 4 24 3 2 25 57 8 26 57 8 27 3 2 28 1 5 29 6 1 30 5 9 31 2 3 32 53 7 33 2 3 34 5 9 35 6 1 36 10 10 37 7 11 38 7 11 39 11 12 40 6 1 41 45 6 42 17 13 43 4 0 44 5 9 45 18 14 46 53 7 47 10 10 48 17 13 49 15 15 50 16 16 51 18 14 52 11 12 53 15 15 54 13 17 55 8 18 56 9 19 57 14 20 58 16 16 59 25 21 60 15 15 61 17 13 62 18 14 63 16 16 64 26 22 65 19 23 66 25 21 67 17 13 68 18 14 69 26 22 70 20 24 71 25 21 72 21 25 73 15 15 74 16 16 75 22 26 76 26 22 77 27 27 78 13 17 79 15 15 80 16 16 81 14 20 82 28 28 83 21 25 84 27 27 85 15 15 86 16 16 87 28 28 88 22 26 89 27 27 90 23 29 91 13 17 92 14 20 93 24 30 94 28 28 95 29 31 96 17 13 97 13 17 98 14 20 99 18 14 100 30 32 101 23 29 102 29 31 103 13 17 104 14 20 105 30 32 106 24 30 107 29 31 108 19 23 109 17 13 110 18 14 111 20 24 112 30 32 113 29 31 114 23 29 115 27 27 116 28 28 117 24 30 118 30 32 119 19 23 120 29 31 121 25 21 122 26 22 123 30 32 124 20 24 125 25 21 126 27 27 127 21 25 128 22 26 129 28 28 130 26 22 131 35 33 132 33 34 133 31 35 134 32 36 135 34 37 136 36 38 137 8 18 138 12 39 139 15 15 140 16 16 141 12 39 142 9 19 143 7 11 144 10 10 145 15 15 146 16 16 147 11 12 148 7 11 149 7 11 150 15 15 151 12 39 152 12 39 153 16 16 154 7 11 155 4 0 156 37 40 157 6 1 158 6 1 159 38 41 160 5 9 161 37 40 162 10 10 163 6 1 164 6 1 165 11 12 166 38 41 167 10 10 168 37 40 169 17 13 170 18 14 171 38 41 172 11 12 173 37 40 174 4 0 175 17 13 176 18 14 177 5 9 178 38 41 179 13 17 180 43 42 181 8 18 182 9 19 183 44 43 184 14 20 185 43 42 186 12 39 187 8 18 188 9 19 189 12 39 190 44 43 191 43 42 192 13 17 193 41 44 194 42 45 195 14 20 196 44 43 197 41 44 198 39 46 199 43 42 200 44 43 201 40 47 202 42 45 203 12 39 204 43 42 205 39 46 206 40 47 207 44 43 208 12 39 209 45 6 210 41 44 211 17 13 212 18 14 213 42 45 214 53 7 215 41 44 216 13 17 217 17 13 218 18 14 219 14 20 220 42 45 221 48 48 222 39 46 223 46 49 224 47 50 225 40 47 226 49 51 227 46 49 228 45 6 229 48 48 230 49 51 231 53 7 232 47 50 233 45 6 234 46 49 235 41 44 236 42 45 237 47 50 238 53 7 239 46 49 240 39 46 241 41 44 242 42 45 243 40 47 244 47 50 245 48 48 246 51 52 247 39 46 248 40 47 249 52 53 250 49 51 251 51 52 252 12 39 253 39 46 254 40 47 255 12 39 256 52 53 257 51 52 258 48 48 259 50 54 260 50 54 261 49 51 262 52 53 263 12 39 264 51 52 265 50 54 266 50 54 267 52 53 268 12 39 269 36 38 270 28 28 271 30 32 272 36 38 273 30 32 274 32 36 275 29 31 276 27 27 277 35 33 278 29 31 279 35 33 280 31 35 281 34 37 282 26 22 283 36 38 284 26 22 285 28 28 286 36 38 287 27 27 288 25 21 289 35 33 290 25 21 291 33 34 292 35 33 293 32 36 294 30 32 295 26 22 296 32 36 297 26 22 298 34 37 299 25 21 300 29 31 301 31 35 302 25 21 303 31 35 304 33 34 305 57 8 306 53 7 307 55 55 308 55 55 309 56 56 310 57 8 311 45 6 312 57 8 313 56 56 314 56 56 315 55 55 316 50 54 317 54 57 318 55 55 319 53 7 320 55 55 321 54 57 322 50 54 323 45 6 324 56 56 325 48 48 326 56 56 327 50 54 328 48 48 329 50 54 330 54 57 331 49 51 332 54 57 333 53 7 334 49 51 335</p>
+        </polylist>
+      </mesh>
+    </geometry>
+  </library_geometries>
+  <library_animations/>
+  <library_controllers/>
+  <library_visual_scenes>
+    <visual_scene id="Scene" name="Scene">
+      <node id="Plane" type="NODE">
+        <translate sid="location">0 0 0</translate>
+        <rotate sid="rotationZ">0 0 1 0</rotate>
+        <rotate sid="rotationY">0 1 0 0</rotate>
+        <rotate sid="rotationX">1 0 0 0</rotate>
+        <scale sid="scale">1 1 1</scale>
+        <instance_geometry url="#Plane-mesh"/>
+      </node>
+      <node id="Lamp" type="NODE">
+        <translate sid="location">-3.18831 1.005454 -10.41974</translate>
+        <rotate sid="rotationZ">0 0 1 106.9363</rotate>
+        <rotate sid="rotationY">0 1 0 3.163707</rotate>
+        <rotate sid="rotationX">1 0 0 37.26105</rotate>
+        <scale sid="scale">1 1 1</scale>
+        <instance_light url="#Lamp-light"/>
+      </node>
+      <node id="Camera" type="NODE">
+        <translate sid="location">7.481132 -6.50764 5.343665</translate>
+        <rotate sid="rotationZ">0 0 1 46.69194</rotate>
+        <rotate sid="rotationY">0 1 0 0.6197679</rotate>
+        <rotate sid="rotationX">1 0 0 63.55929</rotate>
+        <scale sid="scale">1 1 1</scale>
+        <instance_camera url="#Camera-camera"/>
+      </node>
+    </visual_scene>
+  </library_visual_scenes>
+  <scene>
+    <instance_visual_scene url="#Scene"/>
+  </scene>
+</COLLADA>

File Tut 08 Getting Oriented/data/Ship.xml

+<?xml version="1.0" encoding="UTF-8"?>
+<?oxygen RNGSchema="../../Documents/meshFormat.rnc" type="compact"?>
+
+<mesh xmlns="http://www.arcsynthesis.com/gltut/mesh" >
+	<attribute index="0" type="float" size="3" >
+		0 0 5.486261 
+		0 1 4.091465 
+		0.7365548 0.7365548 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		0 1 4.091465 
+		0 0 5.486261 
+		0.7365548 0.7365548 4.091465 
+		0.8 0 5.091465 
+		0 0 5.486261 
+		-0.7365548 0.7365548 4.091465 
+		0 0 5.486261 
+		-0.8 0 5.091465 
+		1 0 4.091465 
+		0.8 0 5.091465 
+		0.7365548 0.7365548 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		-0.8 0 5.091465 
+		-1 0 4.091465 
+		0 0 4.091465 
+		0.8 0 5.091465 
+		1 0 4.091465 
+		-1 0 4.091465 
+		-0.8 0 5.091465 
+		0 0 4.091465 
+		0 0 4.091465 
+		0 0 5.486261 
+		0.8 0 5.091465 
+		-0.8 0 5.091465 
+		0 0 5.486261 
+		0 0 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		0 1 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		-1 0 4.091465 
+		0 1.845113 -1.908402 
+		1.188213 1.188213 -1.908402 
+		0 1 4.091465 
+		0 1 4.091465 
+		-1.188213 1.188213 -1.908402 
+		0 1.845113 -1.908402 
+		0.7365548 0.7365548 4.091465 
+		1.094106 0.5941064 1.091532 
+		1 0 4.091465 
+		-1 0 4.091465 
+		-1.094106 0.5941064 1.091532 
+		-0.7365548 0.7365548 4.091465 
+		1.516663 0.2699136 -1.908402 
+		1.094106 0.5941064 1.091532 
+		1.188213 1.188213 -1.908402 
+		-1.188213 1.188213 -1.908402 
+		-1.094106 0.5941064 1.091532 
+		-1.516663 0.2699136 -1.908402 
+		1.845113 -0.6483857 -1.908402 
+		1.422557 -0.3241928 1.091532 
+		1.516663 0.2699136 -1.908402 
+		-1.516663 0.2699136 -1.908402 
+		-1.422557 -0.3241928 1.091532 
+		-1.845113 -0.6483857 -1.908402 
+		1.094106 0.5941064 1.091532 
+		1.516663 0.2699136 -1.908402 
+		2.904993 0.4069349 -0.2403131 
+		-2.904993 0.4069349 -0.2403131 
+		-1.516663 0.2699136 -1.908402 
+		-1.094106 0.5941064 1.091532 
+		1.094106 0.5941064 1.091532 
+		2.904993 0.4069349 -0.2403131 
+		2.755336 0.5183109 1.252996 
+		-2.755336 0.5183109 1.252996 
+		-2.904993 0.4069349 -0.2403131 
+		-1.094106 0.5941064 1.091532 
+		1.516663 0.2699136 -1.908402 
+		3.05465 0.1929539 -1.733622 
+		2.904993 0.4069349 -0.2403131 
+		-2.904993 0.4069349 -0.2403131 
+		-3.05465 0.1929539 -1.733622 
+		-1.516663 0.2699136 -1.908402 
+		1.516663 0.2699136 -1.908402 
+		1.422557 -0.3241928 1.091532 
+		2.902689 -0.03290349 -0.2282143 
+		-2.902689 -0.03290349 -0.2282143 
+		-1.422557 -0.3241928 1.091532 
+		-1.516663 0.2699136 -1.908402 
+		1.516663 0.2699136 -1.908402 
+		2.902689 -0.03290349 -0.2282143 
+		3.05465 0.1929539 -1.733622 
+		-3.05465 0.1929539 -1.733622 
+		-2.902689 -0.03290349 -0.2282143 
+		-1.516663 0.2699136 -1.908402 
+		1.422557 -0.3241928 1.091532 
+		2.750729 -0.2587609 1.277193 
+		2.902689 -0.03290349 -0.2282143 
+		-2.902689 -0.03290349 -0.2282143 
+		-2.750729 -0.2587609 1.277193 
+		-1.422557 -0.3241928 1.091532 
+		1.422557 -0.3241928 1.091532 
+		1.094106 0.5941064 1.091532 
+		2.753033 0.2287188 1.265094 
+		-2.753033 0.2287188 1.265094 
+		-1.094106 0.5941064 1.091532 
+		-1.422557 -0.3241928 1.091532 
+		1.422557 -0.3241928 1.091532 
+		2.753033 0.2287188 1.265094 
+		2.750729 -0.2587609 1.277193 
+		-2.750729 -0.2587609 1.277193 
+		-2.753033 0.2287188 1.265094 
+		-1.422557 -0.3241928 1.091532 
+		1.094106 0.5941064 1.091532 
+		2.755336 0.5183109 1.252996 
+		2.753033 0.2287188 1.265094 
+		-2.753033 0.2287188 1.265094 
+		-2.755336 0.5183109 1.252996 
+		-1.094106 0.5941064 1.091532 
+		2.902689 -0.03290349 -0.2282143 
+		2.750729 -0.2587609 1.277193 
+		2.753033 0.2287188 1.265094 
+		-2.753033 0.2287188 1.265094 
+		-2.750729 -0.2587609 1.277193 
+		-2.902689 -0.03290349 -0.2282143 
+		2.904993 0.4069349 -0.2403131 
+		2.753033 0.2287188 1.265094 
+		2.755336 0.5183109 1.252996 
+		-2.755336 0.5183109 1.252996 
+		-2.753033 0.2287188 1.265094 
+		-2.904993 0.4069349 -0.2403131 
+		3.05465 0.1929539 -1.733622 
+		2.902689 -0.03290349 -0.2282143 
+		2.904993 0.4069349 -0.2403131 
+		-2.904993 0.4069349 -0.2403131 
+		-2.902689 -0.03290349 -0.2282143 
+		-3.05465 0.1929539 -1.733622 
+		4.670839 0.2244458 1.458042 
+		4.822799 0.4503033 -0.04736506 
+		4.820496 -0.03717672 -0.03526628 
+		-4.820496 -0.03717672 -0.03526628 
+		-4.822799 0.4503033 -0.04736506 
+		-4.670839 0.2244458 1.458042 
+		1.516663 0.2699136 -1.908402 
+		0 -0.6483857 -1.908402 
+		1.845113 -0.6483857 -1.908402 
+		-1.845113 -0.6483857 -1.908402 
+		0 -0.6483857 -1.908402 
+		-1.516663 0.2699136 -1.908402 
+		1.516663 0.2699136 -1.908402 
+		1.188213 1.188213 -1.908402 
+		0 1.845113 -1.908402 
+		0 1.845113 -1.908402 
+		-1.188213 1.188213 -1.908402 
+		-1.516663 0.2699136 -1.908402 
+		0 -0.6483857 -1.908402 
+		1.516663 0.2699136 -1.908402 
+		0 1.845113 -1.908402 
+		0 1.845113 -1.908402 
+		-1.516663 0.2699136 -1.908402 
+		0 -0.6483857 -1.908402 
+		0 1 4.091465 
+		0.9623838 0.9623838 1.091532 
+		0.7365548 0.7365548 4.091465 
+		-0.7365548 0.7365548 4.091465 
+		-0.9623838 0.9623838 1.091532 
+		0 1 4.091465 
+		0 1 4.091465 
+		1.188213 1.188213 -1.908402 
+		0.9623838 0.9623838 1.091532 
+		-0.9623838 0.9623838 1.091532 
+		-1.188213 1.188213 -1.908402 
+		0 1 4.091465 
+		1.094106 0.5941064 1.091532 
+		0.9623838 0.9623838 1.091532 
+		1.188213 1.188213 -1.908402 
+		-1.188213 1.188213 -1.908402 
+		-0.9623838 0.9623838 1.091532 
+		-1.094106 0.5941064 1.091532 
+		1.094106 0.5941064 1.091532 
+		0.7365548 0.7365548 4.091465 
+		0.9623838 0.9623838 1.091532 
+		-0.9623838 0.9623838 1.091532 
+		-0.7365548 0.7365548 4.091465 
+		-1.094106 0.5941064 1.091532 
+		1.845113 -0.6483857 -1.908402 
+		0.7112783 -0.4862892 -0.4084351 
+		1.422557 -0.3241928 1.091532 
+		-1.422557 -0.3241928 1.091532 
+		-0.7112783 -0.4862892 -0.4084351 
+		-1.845113 -0.6483857 -1.908402 
+		1.845113 -0.6483857 -1.908402 
+		0 -0.6483857 -1.908402 
+		0.7112783 -0.4862892 -0.4084351 
+		-0.7112783 -0.4862892 -0.4084351 
+		0 -0.6483857 -1.908402 
+		-1.845113 -0.6483857 -1.908402 
+		1.211278 -0.1620964 2.591498 
+		1.422557 -0.3241928 1.091532 
+		0.7112783 -0.4862892 -0.4084351 
+		-0.7112783 -0.4862892 -0.4084351 
+		-1.422557 -0.3241928 1.091532 
+		-1.211278 -0.1620964 2.591498 
+		0.7112783 -0.4862892 -0.4084351 
+		0.5 -0.3241928 1.091532 
+		1.211278 -0.1620964 2.591498 
+		-1.211278 -0.1620964 2.591498 
+		-0.5 -0.3241928 1.091532 
+		-0.7112783 -0.4862892 -0.4084351 
+		0.5 -0.3241928 1.091532 
+		0.7112783 -0.4862892 -0.4084351 
+		0 -0.6483857 -1.908402 
+		0 -0.6483857 -1.908402 
+		-0.7112783 -0.4862892 -0.4084351 
+		-0.5 -0.3241928 1.091532 
+		1.094106 0.5941064 1.091532 
+		1.211278 -0.1620964 2.591498 
+		1 0 4.091465 
+		-1 0 4.091465 
+		-1.211278 -0.1620964 2.591498 
+		-1.094106 0.5941064 1.091532 
+		1.094106 0.5941064 1.091532 
+		1.422557 -0.3241928 1.091532 
+		1.211278 -0.1620964 2.591498 
+		-1.211278 -0.1620964 2.591498 
+		-1.422557 -0.3241928 1.091532 
+		-1.094106 0.5941064 1.091532 
+		0.75 -0.1620964 2.591498 
+		0.5 -0.3241928 1.091532 
+		0.25 -0.1620964 2.591498 
+		-0.25 -0.1620964 2.591498 
+		-0.5 -0.3241928 1.091532 
+		-0.75 -0.1620964 2.591498 
+		0.25 -0.1620964 2.591498 
+		1 0 4.091465 
+		0.75 -0.1620964 2.591498 
+		-0.75 -0.1620964 2.591498 
+		-1 0 4.091465 
+		-0.25 -0.1620964 2.591498 
+		1.211278 -0.1620964 2.591498 
+		0.75 -0.1620964 2.591498 
+		1 0 4.091465 
+		-1 0 4.091465 
+		-0.75 -0.1620964 2.591498 
+		-1.211278 -0.1620964 2.591498 
+		1.211278 -0.1620964 2.591498 
+		0.5 -0.3241928 1.091532 
+		0.75 -0.1620964 2.591498 
+		-0.75 -0.1620964 2.591498 
+		-0.5 -0.3241928 1.091532 
+		-1.211278 -0.1620964 2.591498 
+		0.5 -0.3241928 1.091532 
+		0.125 -0.405241 0.3415482 
+		0.25 -0.1620964 2.591498 
+		-0.25 -0.1620964 2.591498 
+		-0.125 -0.405241 0.3415482 
+		-0.5 -0.3241928 1.091532 
+		0.5 -0.3241928 1.091532 
+		0 -0.6483857 -1.908402 
+		0.125 -0.405241 0.3415482 
+		-0.125 -0.405241 0.3415482 
+		0 -0.6483857 -1.908402 
+		-0.5 -0.3241928 1.091532 
+		0 -0.3241928 1.091532 
+		0.25 -0.1620964 2.591498 
+		0.125 -0.405241 0.3415482 
+		-0.125 -0.405241 0.3415482 
+		-0.25 -0.1620964 2.591498 
+		0 -0.3241928 1.091532 
+		0 -0.3241928 1.091532 
+		0.125 -0.405241 0.3415482 
+		0 -0.6483857 -1.908402 
+		0 -0.6483857 -1.908402 
+		-0.125 -0.405241 0.3415482 
+		0 -0.3241928 1.091532 
+		-2.753033 0.2287188 1.265094 
+		-2.902689 -0.03290349 -0.2282143 
+		-4.820496 -0.03717672 -0.03526628 
+		-4.670839 0.2244458 1.458042 
+		-2.753033 0.2287188 1.265094 
+		-4.820496 -0.03717672 -0.03526628 
+		4.820496 -0.03717672 -0.03526628 
+		2.902689 -0.03290349 -0.2282143 
+		2.753033 0.2287188 1.265094 
+		4.670839 0.2244458 1.458042 
+		4.820496 -0.03717672 -0.03526628 
+		2.753033 0.2287188 1.265094 
+		-4.820496 -0.03717672 -0.03526628 
+		-2.904993 0.4069349 -0.2403131 
+		-4.822799 0.4503033 -0.04736506 
+		-4.820496 -0.03717672 -0.03526628 
+		-2.902689 -0.03290349 -0.2282143 
+		-2.904993 0.4069349 -0.2403131 
+		4.820496 -0.03717672 -0.03526628 
+		2.904993 0.4069349 -0.2403131 
+		2.902689 -0.03290349 -0.2282143 
+		4.820496 -0.03717672 -0.03526628 
+		4.822799 0.4503033 -0.04736506 
+		2.904993 0.4069349 -0.2403131 
+		-2.904993 0.4069349 -0.2403131 
+		-2.753033 0.2287188 1.265094 
+		-4.670839 0.2244458 1.458042 
+		-4.822799 0.4503033 -0.04736506 
+		-2.904993 0.4069349 -0.2403131 
+		-4.670839 0.2244458 1.458042 
+		4.670839 0.2244458 1.458042 
+		2.753033 0.2287188 1.265094 
+		2.904993 0.4069349 -0.2403131 
+		4.822799 0.4503033 -0.04736506 
+		4.670839 0.2244458 1.458042 
+		2.904993 0.4069349 -0.2403131 
+		0 -0.1620964 2.591498 
+		-1 0 4.091465 
+		0 0 4.091465 
+		0 0 4.091465 
+		0.25 -0.1620964 2.591498 
+		0 -0.1620964 2.591498 
+		0.25 -0.1620964 2.591498 
+		0 0 4.091465 
+		1 0 4.091465 
+		0 -0.3241928 1.091532 
+		0 -0.1620964 2.591498 
+		0.25 -0.1620964 2.591498 
+		-1 0 4.091465 
+		0 -0.1620964 2.591498 
+		-0.25 -0.1620964 2.591498 
+		0 -0.3241928 1.091532 
+		-0.25 -0.1620964 2.591498 
+		0 -0.1620964 2.591498 
+		0.25 -0.1620964 2.591498 
+		0.25 -0.1620964 2.591498 
+		1 0 4.091465 
+		0.25 -0.1620964 2.591498 
+		0 -0.3241928 1.091532 
+		0.25 -0.1620964 2.591498 
+		-0.25 -0.1620964 2.591498 
+		-0.25 -0.1620964 2.591498 
+		0 -0.3241928 1.091532 
+		-0.25 -0.1620964 2.591498 
+		-1 0 4.091465 
+		-0.25 -0.1620964 2.591498 
+</attribute>
+	<attribute index="2" type="float" size="3" >
+		0 0.4494766 0.8932768 
+		0 0.9706107 0.2405774 
+		0.6923124 0.6569414 0.2984405 
+		-0.5413678 0.6925871 0.4766686 
+		0 0.9706107 0.2405774 
+		0 0.4494766 0.8932768 
+		0.6923124 0.6569414 0.2984405 
+		0.7200537 -0.531663 0.4458754 
+		0 0.4494766 0.8932768 
+		-0.5413678 0.6925871 0.4766686 
+		0 0.4494766 0.8932768 
+		-0.7200537 -0.531663 0.4458754 
+		0.8036439 -0.5703299 0.1697744 
+		0.7200537 -0.531663 0.4458754 
+		0.6923124 0.6569414 0.2984405 
+		-0.5413678 0.6925871 0.4766686 
+		-0.7200537 -0.531663 0.4458754 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9989318 0.04608291 
+		0.7200537 -0.531663 0.4458754 
+		0.8036439 -0.5703299 0.1697744 
+		-0.568041 -0.8065432 0.1636097 
+		-0.7200537 -0.531663 0.4458754 
+		0 -0.9989318 0.04608291 
+		0 -0.9989318 0.04608291 
+		0 0.4494766 0.8932768 
+		0.7200537 -0.531663 0.4458754 
+		-0.7200537 -0.531663 0.4458754 
+		0 0.4494766 0.8932768 
+		0 -0.9989318 0.04608291 
+		-0.5413678 0.6925871 0.4766686 
+		-0.8041628 0.5850704 0.1045564 
+		0 0.9706107 0.2405774 
+		-0.8041628 0.5850704 0.1045564 
+		-0.5413678 0.6925871 0.4766686 
+		-0.568041 -0.8065432 0.1636097 
+		0 0.4198431 -0.90759 
+		0.72631 0.6685995 -0.1593676 
+		0 0.9706107 0.2405774 
+		0 0.9706107 0.2405774 
+		-0.72631 0.6685995 -0.1593676 
+		0 0.4198431 -0.90759 
+		0.6923124 0.6569414 0.2984405 
+		0.7624744 0.5555894 0.3315531 
+		0.8036439 -0.5703299 0.1697744 
+		-0.568041 -0.8065432 0.1636097 
+		-0.7624744 0.5555894 0.3315531 
+		-0.8041628 0.5850704 0.1045564 
+		0.4916532 0.1722465 -0.8535722 
+		0.7624744 0.5555894 0.3315531 
+		0.72631 0.6685995 -0.1593676 
+		-0.72631 0.6685995 -0.1593676 
+		-0.7624744 0.5555894 0.3315531 
+		-0.4916532 0.1722465 -0.8535722 
+		0.4636067 -0.817774 -0.3409833 
+		0.4027222 -0.7771539 0.4835352 
+		0.4916532 0.1722465 -0.8535722 
+		-0.4916532 0.1722465 -0.8535722 
+		-0.4027222 -0.7771539 0.4835352 
+		-0.4636067 -0.817774 -0.3409833 
+		0.7624744 0.5555894 0.3315531 
+		0.4916532 0.1722465 -0.8535722 
+		0.4004639 0.8580889 -0.3213599 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.4916532 0.1722465 -0.8535722 
+		-0.7624744 0.5555894 0.3315531 
+		0.7624744 0.5555894 0.3315531 
+		0.4004639 0.8580889 -0.3213599 
+		0.5471664 0.5945006 0.5891599 
+		-0.5471664 0.5945006 0.5891599 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.7624744 0.5555894 0.3315531 
+		0.4916532 0.1722465 -0.8535722 
+		0.9838863 -0.001617431 -0.1786248 
+		0.4004639 0.8580889 -0.3213599 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.9838863 -0.001617431 -0.1786248 
+		-0.4916532 0.1722465 -0.8535722 
+		0.4916532 0.1722465 -0.8535722 
+		0.4027222 -0.7771539 0.4835352 
+		0.4582049 -0.8560442 -0.2391125 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.4027222 -0.7771539 0.4835352 
+		-0.4916532 0.1722465 -0.8535722 
+		0.4916532 0.1722465 -0.8535722 
+		0.4582049 -0.8560442 -0.2391125 
+		0.9838863 -0.001617431 -0.1786248 
+		-0.9838863 -0.001617431 -0.1786248 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.4916532 0.1722465 -0.8535722 
+		0.4027222 -0.7771539 0.4835352 
+		0.56386 -0.5887936 0.5790887 
+		0.4582049 -0.8560442 -0.2391125 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.56386 -0.5887936 0.5790887 
+		-0.4027222 -0.7771539 0.4835352 
+		0.4027222 -0.7771539 0.4835352 
+		0.7624744 0.5555894 0.3315531 
+		0.3905149 -0.2341074 0.8903165 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.7624744 0.5555894 0.3315531 
+		-0.4027222 -0.7771539 0.4835352 
+		0.4027222 -0.7771539 0.4835352 
+		0.3905149 -0.2341074 0.8903165 
+		0.56386 -0.5887936 0.5790887 
+		-0.56386 -0.5887936 0.5790887 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.4027222 -0.7771539 0.4835352 
+		0.7624744 0.5555894 0.3315531 
+		0.5471664 0.5945006 0.5891599 
+		0.3905149 -0.2341074 0.8903165 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.5471664 0.5945006 0.5891599 
+		-0.7624744 0.5555894 0.3315531 
+		0.4582049 -0.8560442 -0.2391125 
+		0.56386 -0.5887936 0.5790887 
+		0.3905149 -0.2341074 0.8903165 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.56386 -0.5887936 0.5790887 
+		-0.4582049 -0.8560442 -0.2391125 
+		0.4004639 0.8580889 -0.3213599 
+		0.3905149 -0.2341074 0.8903165 
+		0.5471664 0.5945006 0.5891599 
+		-0.5471664 0.5945006 0.5891599 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.4004639 0.8580889 -0.3213599 
+		0.9838863 -0.001617431 -0.1786248 
+		0.4582049 -0.8560442 -0.2391125 
+		0.4004639 0.8580889 -0.3213599 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.9838863 -0.001617431 -0.1786248 
+		0.6358227 0.6805627 0.3640248 
+		0.6556292 0.5953856 -0.4643697 
+		0.4132511 -0.7235328 -0.5528733 
+		-0.4132511 -0.7235328 -0.5528733 
+		-0.6556292 0.5953856 -0.4643697 
+		-0.6358227 0.6805627 0.3640248 
+		0.4916532 0.1722465 -0.8535722 
+		0 -0.9301126 -0.3672292 
+		0.4636067 -0.817774 -0.3409833 
+		-0.4636067 -0.817774 -0.3409833 
+		0 -0.9301126 -0.3672292 
+		-0.4916532 0.1722465 -0.8535722 
+		0.4916532 0.1722465 -0.8535722 
+		0.72631 0.6685995 -0.1593676 
+		0 0.4198431 -0.90759 
+		0 0.4198431 -0.90759 
+		-0.72631 0.6685995 -0.1593676 
+		-0.4916532 0.1722465 -0.8535722 
+		0 -0.9301126 -0.3672292 
+		0.4916532 0.1722465 -0.8535722 
+		0 0.4198431 -0.90759 
+		0 0.4198431 -0.90759 
+		-0.4916532 0.1722465 -0.8535722 
+		0 -0.9301126 -0.3672292 
+		0 0.9706107 0.2405774 
+		0.7031159 0.7031159 0.1058382 
+		0.6923124 0.6569414 0.2984405 
+		-0.8041628 0.5850704 0.1045564 
+		-0.7031159 0.7031159 0.1058382 
+		0 0.9706107 0.2405774 
+		0 0.9706107 0.2405774 
+		0.72631 0.6685995 -0.1593676 
+		0.7031159 0.7031159 0.1058382 
+		-0.7031159 0.7031159 0.1058382 
+		-0.72631 0.6685995 -0.1593676 
+		0 0.9706107 0.2405774 
+		0.7624744 0.5555894 0.3315531 
+		0.7031159 0.7031159 0.1058382 
+		0.72631 0.6685995 -0.1593676 
+		-0.72631 0.6685995 -0.1593676 
+		-0.7031159 0.7031159 0.1058382 
+		-0.7624744 0.5555894 0.3315531 
+		0.7624744 0.5555894 0.3315531 
+		0.6923124 0.6569414 0.2984405 
+		0.7031159 0.7031159 0.1058382 
+		-0.7031159 0.7031159 0.1058382 
+		-0.8041628 0.5850704 0.1045564 
+		-0.7624744 0.5555894 0.3315531 
+		0.4636067 -0.817774 -0.3409833 
+		0 -0.9942015 0.1074251 
+		0.4027222 -0.7771539 0.4835352 
+		-0.4027222 -0.7771539 0.4835352 
+		0 -0.9942015 0.1074251 
+		-0.4636067 -0.817774 -0.3409833 
+		0.4636067 -0.817774 -0.3409833 
+		0 -0.9301126 -0.3672292 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9301126 -0.3672292 
+		-0.4636067 -0.817774 -0.3409833 
+		0.4867092 -0.8585162 0.1613208 
+		0.4027222 -0.7771539 0.4835352 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.4027222 -0.7771539 0.4835352 
+		-0.4867092 -0.8585162 0.1613208 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0.4867092 -0.8585162 0.1613208 
+		-0.4867092 -0.8585162 0.1613208 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9301126 -0.3672292 
+		0 -0.9301126 -0.3672292 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0.7624744 0.5555894 0.3315531 
+		0.4867092 -0.8585162 0.1613208 
+		0.8036439 -0.5703299 0.1697744 
+		-0.568041 -0.8065432 0.1636097 
+		-0.4867092 -0.8585162 0.1613208 
+		-0.7624744 0.5555894 0.3315531 
+		0.7624744 0.5555894 0.3315531 
+		0.4027222 -0.7771539 0.4835352 
+		0.4867092 -0.8585162 0.1613208 
+		-0.4867092 -0.8585162 0.1613208 
+		-0.4027222 -0.7771539 0.4835352 
+		-0.7624744 0.5555894 0.3315531 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0.8036439 -0.5703299 0.1697744 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9942015 0.1074251 
+		0.4867092 -0.8585162 0.1613208 
+		0 -0.9942015 0.1074251 
+		0.8036439 -0.5703299 0.1697744 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9942015 0.1074251 
+		-0.4867092 -0.8585162 0.1613208 
+		0.4867092 -0.8585162 0.1613208 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.4867092 -0.8585162 0.1613208 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9301126 -0.3672292 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9301126 -0.3672292 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9301126 -0.3672292 
+		0 -0.9301126 -0.3672292 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.4132511 -0.7235328 -0.5528733 
+		-0.6358227 0.6805627 0.3640248 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.4132511 -0.7235328 -0.5528733 
+		0.4132511 -0.7235328 -0.5528733 
+		0.4582049 -0.8560442 -0.2391125 
+		0.3905149 -0.2341074 0.8903165 
+		0.6358227 0.6805627 0.3640248 
+		0.4132511 -0.7235328 -0.5528733 
+		0.3905149 -0.2341074 0.8903165 
+		-0.4132511 -0.7235328 -0.5528733 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.6556292 0.5953856 -0.4643697 
+		-0.4132511 -0.7235328 -0.5528733 
+		-0.4582049 -0.8560442 -0.2391125 
+		-0.4004639 0.8580889 -0.3213599 
+		0.4132511 -0.7235328 -0.5528733 
+		0.4004639 0.8580889 -0.3213599 
+		0.4582049 -0.8560442 -0.2391125 
+		0.4132511 -0.7235328 -0.5528733 
+		0.6556292 0.5953856 -0.4643697 
+		0.4004639 0.8580889 -0.3213599 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.3905149 -0.2341074 0.8903165 
+		-0.6358227 0.6805627 0.3640248 
+		-0.6556292 0.5953856 -0.4643697 
+		-0.4004639 0.8580889 -0.3213599 
+		-0.6358227 0.6805627 0.3640248 
+		0.6358227 0.6805627 0.3640248 
+		0.3905149 -0.2341074 0.8903165 
+		0.4004639 0.8580889 -0.3213599 
+		0.6556292 0.5953856 -0.4643697 
+		0.6358227 0.6805627 0.3640248 
+		0.4004639 0.8580889 -0.3213599 
+		0 -0.9942015 0.1074251 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9989318 0.04608291 
+		0 -0.9989318 0.04608291 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9989318 0.04608291 
+		0.8036439 -0.5703299 0.1697744 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0.8036439 -0.5703299 0.1697744 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		0 -0.9942015 0.1074251 
+		-0.568041 -0.8065432 0.1636097 
+		0 -0.9942015 0.1074251 
+</attribute>
+	<attribute index="1" type="float" size="3" >
+		0.6705883 0.7607843 0.7607843 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6705883 0.7607843 0.7607843 
+		0.6666667 0.7607843 0.7647059 
+		0.682353 0.772549 0.7411765 
+		0.6705883 0.7607843 0.7607843 
+		0.6666667 0.7607843 0.7647059 
+		0.6705883 0.7607843 0.7607843 
+		0.682353 0.772549 0.7411765 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.3843137 0.4392157 0.4431372 
+		0.4117647 0.4666666 0.4705882 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.4117647 0.4666666 0.4705882 
+		0.3843137 0.4392157 0.4431372 
+		0.3843137 0.4392157 0.4431372 
+		0.3843137 0.4352941 0.4352941 
+		0.4117647 0.4666666 0.4705882 
+		0.4117647 0.4666666 0.4705882 
+		0.3843137 0.4352941 0.4352941 
+		0.3843137 0.4392157 0.4431372 
+		1 1 1 
+		1 1 1 
+		1 1 1 
+		1 1 1 
+		1 1 1 
+		1 1 1 
+		0.6352941 0.7215687 0.6941177 
+		0.7019608 0.772549 0.627451 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.7019608 0.772549 0.627451 
+		0.6352941 0.7215687 0.6941177 
+		0.6666667 0.7607843 0.7647059 
+		0.6392157 0.7215687 0.7098039 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6392157 0.7215687 0.7098039 
+		0.6666667 0.7607843 0.7647059 
+		0.7411765 0.8 0.4941176 
+		0.6235294 0.7137255 0.7137255 
+		0.7019608 0.772549 0.627451 
+		0.7019608 0.772549 0.627451 
+		0.6235294 0.7137255 0.7137255 
+		0.7411765 0.8 0.4941176 
+		0.3686274 0.4156863 0.4196078 
+		0.3215686 0.3647059 0.3686274 
+		0.4627451 0.5411765 0.5215687 
+		0.4627451 0.5411765 0.5215687 
+		0.3215686 0.3647059 0.3686274 
+		0.3686274 0.4156863 0.4196078 
+		0.6235294 0.7137255 0.7137255 
+		0.7411765 0.8 0.4941176 
+		0.8666667 0.854902 0.6745098 
+		0.8666667 0.854902 0.6745098 
+		0.7411765 0.8 0.4941176 
+		0.6235294 0.7137255 0.7137255 
+		0.6235294 0.7137255 0.7137255 
+		0.8666667 0.854902 0.6745098 
+		0.8666667 0.854902 0.682353 
+		0.8666667 0.854902 0.682353 
+		0.8666667 0.854902 0.6745098 
+		0.6235294 0.7137255 0.7137255 
+		0.7411765 0.8 0.4941176 
+		0.5647059 0.6627451 0.6196079 
+		0.8666667 0.854902 0.6745098 
+		0.8666667 0.854902 0.6745098 
+		0.5647059 0.6627451 0.6196079 
+		0.7411765 0.8 0.4941176 
+		0.372549 0.4156863 0.3803921 
+		0.3215686 0.3647059 0.3686274 
+		0.882353 0.8705883 0.6588236 
+		0.882353 0.8705883 0.6588236 
+		0.3215686 0.3647059 0.3686274 
+		0.372549 0.4156863 0.3803921 
+		0.372549 0.4156863 0.3803921 
+		0.882353 0.8705883 0.6588236 
+		0.8784314 0.8627451 0.6784314 
+		0.8784314 0.8627451 0.6784314 
+		0.882353 0.8705883 0.6588236 
+		0.372549 0.4156863 0.3803921 
+		0.3215686 0.3647059 0.3686274 
+		0.8901961 0.8784314 0.6392157 
+		0.882353 0.8705883 0.6588236 
+		0.882353 0.8705883 0.6588236 
+		0.8901961 0.8784314 0.6392157 
+		0.3215686 0.3647059 0.3686274 
+		0.6156863 0.7019608 0.7058824 
+		0.6392157 0.7215687 0.7098039 
+		0.8392157 0.8431373 0.6941177 
+		0.8392157 0.8431373 0.6941177 
+		0.6392157 0.7215687 0.7098039 
+		0.6156863 0.7019608 0.7058824 
+		0.6156863 0.7019608 0.7058824 
+		0.827451 0.8392157 0.6980392 
+		0.7529412 0.8196079 0.6470589 
+		0.7529412 0.8196079 0.6470589 
+		0.827451 0.8392157 0.6980392 
+		0.6156863 0.7019608 0.7058824 
+		0.6196079 0.7098039 0.7137255 
+		0.8666667 0.854902 0.682353 
+		0.8431373 0.8431373 0.6941177 
+		0.8431373 0.8431373 0.6941177 
+		0.8666667 0.854902 0.682353 
+		0.6196079 0.7098039 0.7137255 
+		0.882353 0.8705883 0.6588236 
+		0.8627451 0.854902 0.6745098 
+		0.8470588 0.8431373 0.6862745 
+		0.8470588 0.8431373 0.6862745 
+		0.8627451 0.854902 0.6745098 
+		0.882353 0.8705883 0.6588236 
+		0.8431373 0.8431373 0.6588236 
+		0.8431373 0.8431373 0.6941177 
+		0.8666667 0.854902 0.682353 
+		0.8666667 0.854902 0.682353 
+		0.8431373 0.8431373 0.6941177 
+		0.8431373 0.8431373 0.6588236 
+		0.5568628 0.6588236 0.6392157 
+		0.8745098 0.8588235 0.6784314 
+		0.8431373 0.8470588 0.6627451 
+		0.8431373 0.8470588 0.6627451 
+		0.8745098 0.8588235 0.6784314 
+		0.5568628 0.6588236 0.6392157 
+		0.6078432 0.6431373 0.6470589 
+		0.6196079 0.654902 0.6588236 
+		0.6156863 0.6509804 0.654902 
+		0.6156863 0.6509804 0.654902 
+		0.6196079 0.654902 0.6588236 
+		0.6078432 0.6431373 0.6470589 
+		0.7411765 0.8 0.4941176 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.7411765 0.8 0.4941176 
+		0.7411765 0.8 0.4941176 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.7411765 0.8 0.4941176 
+		0.9960784 1 0.317647 
+		0.7411765 0.8 0.4941176 
+		0.9960784 1 0.317647 
+		0.9960784 1 0.317647 
+		0.7411765 0.8 0.4941176 
+		0.9960784 1 0.317647 
+		0.6666667 0.7607843 0.7647059 
+		0.6235294 0.7137255 0.7176471 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6235294 0.7137255 0.7176471 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.7019608 0.772549 0.627451 
+		0.6235294 0.7137255 0.7176471 
+		0.6235294 0.7137255 0.7176471 
+		0.7019608 0.772549 0.627451 
+		0.6666667 0.7607843 0.7647059 
+		0.6392157 0.7215687 0.7098039 
+		0.7137255 0.7647059 0.7019608 
+		0.7019608 0.772549 0.627451 
+		0.7019608 0.772549 0.627451 
+		0.7137255 0.7647059 0.7019608 
+		0.6392157 0.7215687 0.7098039 
+		0.6392157 0.7215687 0.7098039 
+		0.6666667 0.7607843 0.7647059 
+		0.7137255 0.7647059 0.7019608 
+		0.7137255 0.7647059 0.7019608 
+		0.6666667 0.7607843 0.7647059 
+		0.6392157 0.7215687 0.7098039 
+		0.3686274 0.4156863 0.4196078 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3686274 0.4156863 0.4196078 
+		0.3686274 0.4156863 0.4196078 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3686274 0.4156863 0.4196078 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.6392157 0.7215687 0.7098039 
+		0.6039216 0.6901961 0.6941177 
+		0.6666667 0.7607843 0.7647059 
+		0.6666667 0.7607843 0.7647059 
+		0.6039216 0.6901961 0.6941177 
+		0.6392157 0.7215687 0.7098039 
+		0.6392157 0.7215687 0.7098039 
+		0.6980392 0.7529412 0.6980392 
+		0.6039216 0.6901961 0.6941177 
+		0.6039216 0.6901961 0.6941177 
+		0.6980392 0.7529412 0.6980392 
+		0.6392157 0.7215687 0.7098039 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.7568628 0.8039216 0.6235294 
+		0.882353 0.8705883 0.6588236 
+		0.7058824 0.7450981 0.7450981 
+		0.6313726 0.6666667 0.6705883 
+		0.7568628 0.8039216 0.6235294 
+		0.7058824 0.7450981 0.7450981 
+		0.7058824 0.7450981 0.7450981 
+		0.882353 0.8705883 0.6588236 
+		0.7568628 0.8039216 0.6235294 
+		0.6313726 0.6666667 0.6705883 
+		0.7058824 0.7450981 0.7450981 
+		0.7568628 0.8039216 0.6235294 
+		0.6352941 0.6627451 0.6470589 
+		0.8 0.827451 0.6352941 
+		0.6313726 0.6666667 0.6509804 
+		0.6352941 0.6627451 0.6470589 
+		0.8705883 0.8588235 0.6784314 
+		0.8 0.827451 0.6352941 
+		0.6352941 0.6627451 0.6470589 
+		0.8 0.827451 0.6352941 
+		0.8705883 0.8588235 0.6784314 
+		0.6352941 0.6627451 0.6470589 
+		0.6313726 0.6666667 0.6509804 
+		0.8 0.827451 0.6352941 
+		0.8666667 0.854902 0.6745098 
+		0.8431373 0.8431373 0.6941177 
+		0.6117647 0.6509804 0.6509804 
+		0.6313726 0.6705883 0.6745098 
+		0.8666667 0.854902 0.6745098 
+		0.6117647 0.6509804 0.6509804 
+		0.6117647 0.6509804 0.6509804 
+		0.8431373 0.8431373 0.6941177 
+		0.8666667 0.854902 0.6745098 
+		0.6313726 0.6705883 0.6745098 
+		0.6117647 0.6509804 0.6509804 
+		0.8666667 0.854902 0.6745098 
+		0.3529412 0.4 0.4039216 
+		0.3843137 0.4392157 0.4431372 
+		0.3529412 0.4 0.4039216 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3529412 0.4 0.4039216 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3529412 0.4 0.4039216 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+		0.3215686 0.3647059 0.3686274 
+</attribute>
+	<vao name="flat" >
+		<source attrib="0" />
+	</vao>
+	<vao name="tint" >
+		<source attrib="0" />
+		<source attrib="1" />
+	</vao>
+	<arrays cmd="triangles" start="0" count="336" />
+</mesh>

File framework/Mesh.cpp

 	{
 		std::vector<Attribute> attribs;
 		attribs.reserve(16);
+		std::map<GLuint, int> attribIndexMap;	//Maps from attribute indices to 'attribs' indices.
 
 		std::vector<IndexData> indexData;
 
 			while(pProcNode->ValueStr() == "attribute")
 			{
 				attribs.push_back(Attribute(pProcNode));
+				attribIndexMap[attribs.back().iAttribIx] = attribs.size() - 1;
 				pProcNode = pProcNode->NextSiblingElement();
 			}
 
 			for(size_t iAttribIx = 0; iAttribIx < namedVao.second.size(); iAttribIx++)
 			{
 				GLuint iAttrib = namedVao.second[iAttribIx];
-				const Attribute &attrib = attribs[iAttrib];
-				attrib.SetupAttributeArray(attribStartLocs[iAttrib]);
+				int iAttribOffset = -1;
+				for(size_t iCount = 0; iCount < attribs.size(); iCount++)
+				{
+					if(attribs[iCount].iAttribIx == iAttrib)
+					{
+						iAttribOffset = iCount;
+						break;
+					}
+				}
+
+				const Attribute &attrib = attribs[iAttribOffset];
+				attrib.SetupAttributeArray(attribStartLocs[iAttribOffset]);
 			}
 
 			m_pData->namedVAOs[namedVao.first] = vao;