Exemple #1
0
void Atlas::packUV(const AtlasRegion& _region, uint8_t* _vertexBuffer, uint32_t _offset, uint32_t _stride) const
{
	int16_t x0 = (int16_t)( ( (float)_region.x * m_texelSize + m_texelOffset[0]) - float(INT16_MAX) );
	int16_t y0 = (int16_t)( ( (float)_region.y * m_texelSize + m_texelOffset[1]) - float(INT16_MAX) );
	int16_t x1 = (int16_t)( ( ( (float)_region.x + _region.width) * m_texelSize + m_texelOffset[0]) - float(INT16_MAX) );
	int16_t y1 = (int16_t)( ( ( (float)_region.y + _region.height) * m_texelSize + m_texelOffset[1]) - float(INT16_MAX) );
	int16_t ww = (int16_t)( (float(INT16_MAX) / 4.0f) * (float)_region.getComponentIndex() );

	_vertexBuffer += _offset;
	switch (_region.getFaceIndex() )
	{
	case 0: // +X
		x0 = -x0;
		x1 = -x1;
		y0 = -y0;
		y1 = -y1;
		writeUV(_vertexBuffer, INT16_MAX, y0, x0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MAX, y1, x0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MAX, y1, x1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MAX, y0, x1, ww); _vertexBuffer += _stride;
		break;

	case 1: // -X
		y0 = -y0;
		y1 = -y1;
		writeUV(_vertexBuffer, INT16_MIN, y0, x0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MIN, y1, x0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MIN, y1, x1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, INT16_MIN, y0, x1, ww); _vertexBuffer += _stride;
		break;

	case 2: // +Y
		writeUV(_vertexBuffer, x0, INT16_MAX, y0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x0, INT16_MAX, y1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, INT16_MAX, y1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, INT16_MAX, y0, ww); _vertexBuffer += _stride;
		break;

	case 3: // -Y
		y0 = -y0;
		y1 = -y1;
		writeUV(_vertexBuffer, x0, INT16_MIN, y0, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x0, INT16_MIN, y1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, INT16_MIN, y1, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, INT16_MIN, y0, ww); _vertexBuffer += _stride;
		break;

	case 4: // +Z
		y0 = -y0;
		y1 = -y1;
		writeUV(_vertexBuffer, x0, y0, INT16_MAX, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x0, y1, INT16_MAX, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, y1, INT16_MAX, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, y0, INT16_MAX, ww); _vertexBuffer += _stride;
		break;

	case 5: // -Z
		x0 = -x0;
		x1 = -x1;
		y0 = -y0;
		y1 = -y1;
		writeUV(_vertexBuffer, x0, y0, INT16_MIN, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x0, y1, INT16_MIN, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, y1, INT16_MIN, ww); _vertexBuffer += _stride;
		writeUV(_vertexBuffer, x1, y0, INT16_MIN, ww); _vertexBuffer += _stride;
		break;
	}
}
Exemple #2
0
void serializeFBX(FILE_INTERFACE *fph,MeshSystem *ms)
{

	fi_fprintf(fph,"; FBX 6.1.0 project file\r\n");
	fi_fprintf(fph,"; Copyright (C) 1997-2008 Autodesk Inc. and/or its licensors.\r\n");
	fi_fprintf(fph,"; All rights reserved.\r\n");
	fi_fprintf(fph,"; ----------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"FBXHeaderExtension:  {\r\n");
	fi_fprintf(fph,"    FBXHeaderVersion: 1003\r\n");
	fi_fprintf(fph,"    FBXVersion: 6100\r\n");
	fi_fprintf(fph,"    CreationTimeStamp:  {\r\n");
	fi_fprintf(fph,"        Version: 1000\r\n");
	fi_fprintf(fph,"        Year: 2009\r\n");
	fi_fprintf(fph,"        Month: 12\r\n");
	fi_fprintf(fph,"        Day: 3\r\n");
	fi_fprintf(fph,"        Hour: 18\r\n");
	fi_fprintf(fph,"        Minute: 6\r\n");
	fi_fprintf(fph,"        Second: 18\r\n");
	fi_fprintf(fph,"        Millisecond: 532\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    Creator: \"FBX SDK/FBX Plugins version 2010.2\"\r\n");
	fi_fprintf(fph,"    OtherFlags:  {\r\n");
	fi_fprintf(fph,"        FlagPLE: 0\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,"CreationTime: \"2009-12-03 18:06:18:532\"\r\n");
	fi_fprintf(fph,"Creator: \"FBX SDK/FBX Plugins build 20090731\"\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"; Document Description\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Document:  {\r\n");
	fi_fprintf(fph,"    Name: \"\"\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"; Document References\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"References:  {\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"; Object definitions\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Definitions:  {\r\n");
	fi_fprintf(fph,"    Version: 100\r\n");
	fi_fprintf(fph,"    Count: 5\r\n");
	fi_fprintf(fph,"    ObjectType: \"Model\" {\r\n");
	fi_fprintf(fph,"        Count: 2\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    ObjectType: \"Material\" {\r\n");
	fi_fprintf(fph,"        Count: 1\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    ObjectType: \"SceneInfo\" {\r\n");
	fi_fprintf(fph,"        Count: 1\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    ObjectType: \"GlobalSettings\" {\r\n");
	fi_fprintf(fph,"        Count: 1\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"; Object properties\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Objects:  {\r\n");
	fi_fprintf(fph,"    Model: \"Model::aconcave_root\", \"Null\" {\r\n");
	fi_fprintf(fph,"        Version: 232\r\n");
	fi_fprintf(fph,"        Properties60:  {\r\n");
	fi_fprintf(fph,"            Property: \"QuaternionInterpolate\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationOffset\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationPivot\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingOffset\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingPivot\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMin\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMax\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationOrder\", \"enum\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationSpaceForLimitOnly\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"AxisLen\", \"double\", \"\",10\r\n");
	fi_fprintf(fph,"            Property: \"PreRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"PostRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMin\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMax\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"InheritType\", \"enum\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMin\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMax\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricTranslation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricScaling\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"LookAtProperty\", \"object\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"UpVectorProperty\", \"object\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Show\", \"bool\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"NegativePercentShapeSupport\", \"bool\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"DefaultAttributeIndex\", \"int\", \"\",-1\r\n");
	fi_fprintf(fph,"            Property: \"Freeze\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"LODBox\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Translation\", \"Lcl Translation\", \"A+\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Rotation\", \"Lcl Rotation\", \"A+\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Scaling\", \"Lcl Scaling\", \"A+\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"Visibility\", \"Visibility\", \"A+\",1\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        MultiLayer: 0\r\n");
	fi_fprintf(fph,"        MultiTake: 1\r\n");
	fi_fprintf(fph,"        Shading: Y\r\n");
	fi_fprintf(fph,"        Culling: \"CullingOff\"\r\n");
	fi_fprintf(fph,"        TypeFlags: \"Null\"\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    Model: \"Model::Box01\", \"Mesh\" {\r\n");
	fi_fprintf(fph,"        Version: 232\r\n");
	fi_fprintf(fph,"        Properties60:  {\r\n");
	fi_fprintf(fph,"            Property: \"QuaternionInterpolate\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationOffset\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationPivot\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingOffset\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingPivot\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMin\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMax\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"TranslationMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationOrder\", \"enum\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationSpaceForLimitOnly\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationStiffnessZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"AxisLen\", \"double\", \"\",10\r\n");
	fi_fprintf(fph,"            Property: \"PreRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"PostRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMin\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMax\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"RotationMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"InheritType\", \"enum\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingActive\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMin\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMax\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMinZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxX\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxY\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"ScalingMaxZ\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricTranslation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricRotation\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"GeometricScaling\", \"Vector3D\", \"\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampRangeZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampRangeZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MinDampStrengthZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"MaxDampStrengthZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleX\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleY\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"PreferedAngleZ\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"LookAtProperty\", \"object\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"UpVectorProperty\", \"object\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Show\", \"bool\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"NegativePercentShapeSupport\", \"bool\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"DefaultAttributeIndex\", \"int\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"Freeze\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"LODBox\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Translation\", \"Lcl Translation\", \"A+\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Rotation\", \"Lcl Rotation\", \"A+\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"Lcl Scaling\", \"Lcl Scaling\", \"A+\",1,1,1\r\n");
	fi_fprintf(fph,"            Property: \"Visibility\", \"Visibility\", \"A+\",1\r\n");
	fi_fprintf(fph,"            Property: \"Color\", \"ColorRGB\", \"N\",0.8,0.8,0.8\r\n");
	fi_fprintf(fph,"            Property: \"BBoxMin\", \"Vector3D\", \"N\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"BBoxMax\", \"Vector3D\", \"N\",0,0,0\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        MultiLayer: 0\r\n");
	fi_fprintf(fph,"        MultiTake: 1\r\n");
	fi_fprintf(fph,"        Shading: Y\r\n");
	fi_fprintf(fph,"        Culling: \"CullingOff\"\r\n");

	if ( ms->mMeshCount )
	{
		Mesh *mesh = ms->mMeshes[0];
		writeVertices(fph,mesh);
		writePolygonVertexIndex(fph,mesh);

		fi_fprintf(fph,"        GeometryVersion: 124\r\n");

		writeUV(fph,mesh);
	}


	fi_fprintf(fph,"        LayerElementMaterial: 0 {\r\n");
	fi_fprintf(fph,"            Version: 101\r\n");
	fi_fprintf(fph,"            Name: \"\"\r\n");
	fi_fprintf(fph,"            MappingInformationType: \"AllSame\"\r\n");
	fi_fprintf(fph,"            ReferenceInformationType: \"IndexToDirect\"\r\n");
	fi_fprintf(fph,"            Materials: 0\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        LayerElementTexture: 0 {\r\n");
	fi_fprintf(fph,"            Version: 101\r\n");
	fi_fprintf(fph,"            Name: \"\"\r\n");
	fi_fprintf(fph,"            MappingInformationType: \"NoMappingInformation\"\r\n");
	fi_fprintf(fph,"            ReferenceInformationType: \"IndexToDirect\"\r\n");
	fi_fprintf(fph,"            BlendMode: \"Translucent\"\r\n");
	fi_fprintf(fph,"            TextureAlpha: 1\r\n");
	fi_fprintf(fph,"            TextureId:\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        Layer: 0 {\r\n");
	fi_fprintf(fph,"            Version: 100\r\n");
	fi_fprintf(fph,"            LayerElement:  {\r\n");
	fi_fprintf(fph,"                Type: \"LayerElementMaterial\"\r\n");
	fi_fprintf(fph,"                TypedIndex: 0\r\n");
	fi_fprintf(fph,"            }\r\n");
	fi_fprintf(fph,"            LayerElement:  {\r\n");
	fi_fprintf(fph,"                Type: \"LayerElementTexture\"\r\n");
	fi_fprintf(fph,"                TypedIndex: 0\r\n");
	fi_fprintf(fph,"            }\r\n");
	fi_fprintf(fph,"            LayerElement:  {\r\n");
	fi_fprintf(fph,"                Type: \"LayerElementUV\"\r\n");
	fi_fprintf(fph,"                TypedIndex: 0\r\n");
	fi_fprintf(fph,"            }\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        NodeAttributeName: \"Geometry::Box01_ncl1_1\"\r\n");
	fi_fprintf(fph,"    }\r\n");

	fi_fprintf(fph,"    SceneInfo: \"SceneInfo::GlobalInfo\", \"UserData\" {\r\n");
	fi_fprintf(fph,"        Type: \"UserData\"\r\n");
	fi_fprintf(fph,"        Version: 100\r\n");
	fi_fprintf(fph,"        MetaData:  {\r\n");
	fi_fprintf(fph,"            Version: 100\r\n");
	fi_fprintf(fph,"            Title: \"\"\r\n");
	fi_fprintf(fph,"            Subject: \"\"\r\n");
	fi_fprintf(fph,"            Author: \"\"\r\n");
	fi_fprintf(fph,"            Keywords: \"\"\r\n");
	fi_fprintf(fph,"            Revision: \"\"\r\n");
	fi_fprintf(fph,"            Comment: \"\"\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"        Properties60:  {\r\n");
	fi_fprintf(fph,"            Property: \"DocumentUrl\", \"KString\", \"\", \"aconcave.fbx\"\r\n");
	fi_fprintf(fph,"            Property: \"SrcDocumentUrl\", \"KString\", \"\", \"aconcave.fbx\"\r\n");
	fi_fprintf(fph,"            Property: \"Original\", \"Compound\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Original|ApplicationVendor\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Original|ApplicationName\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Original|ApplicationVersion\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Original|DateTime_GMT\", \"DateTime\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"Original|FileName\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"LastSaved\", \"Compound\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"LastSaved|ApplicationVendor\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"LastSaved|ApplicationName\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"LastSaved|ApplicationVersion\", \"KString\", \"\", \"\"\r\n");
	fi_fprintf(fph,"            Property: \"LastSaved|DateTime_GMT\", \"DateTime\", \"\", \"\"\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    Material: \"Material::Box01Mat\", \"\" {\r\n");
	fi_fprintf(fph,"        Version: 102\r\n");
	fi_fprintf(fph,"        ShadingModel: \"phong\"\r\n");
	fi_fprintf(fph,"        MultiLayer: 0\r\n");
	fi_fprintf(fph,"        Properties60:  {\r\n");
	fi_fprintf(fph,"            Property: \"ShadingModel\", \"KString\", \"\", \"Phong\"\r\n");
	fi_fprintf(fph,"            Property: \"MultiLayer\", \"bool\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"EmissiveColor\", \"ColorRGB\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"EmissiveFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"AmbientColor\", \"ColorRGB\", \"\",0.2,0.2,0.2\r\n");
	fi_fprintf(fph,"            Property: \"AmbientFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"DiffuseColor\", \"ColorRGB\", \"\",0.8,0.8,0.8\r\n");
	fi_fprintf(fph,"            Property: \"DiffuseFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"Bump\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"NormalMap\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"BumpFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"TransparentColor\", \"ColorRGB\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"TransparencyFactor\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"DisplacementColor\", \"ColorRGB\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"DisplacementFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"SpecularColor\", \"ColorRGB\", \"\",0.2,0.2,0.2\r\n");
	fi_fprintf(fph,"            Property: \"SpecularFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"ShininessExponent\", \"double\", \"\",20\r\n");
	fi_fprintf(fph,"            Property: \"ReflectionColor\", \"ColorRGB\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"ReflectionFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"Emissive\", \"Vector3D\", \"\",0,0,0\r\n");
	fi_fprintf(fph,"            Property: \"Ambient\", \"Vector3D\", \"\",0.2,0.2,0.2\r\n");
	fi_fprintf(fph,"            Property: \"Diffuse\", \"Vector3D\", \"\",0.8,0.8,0.8\r\n");
	fi_fprintf(fph,"            Property: \"Specular\", \"Vector3D\", \"\",0.2,0.2,0.2\r\n");
	fi_fprintf(fph,"            Property: \"Shininess\", \"double\", \"\",20\r\n");
	fi_fprintf(fph,"            Property: \"Opacity\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"Reflectivity\", \"double\", \"\",0\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    GlobalSettings:  {\r\n");
	fi_fprintf(fph,"        Version: 1000\r\n");
	fi_fprintf(fph,"        Properties60:  {\r\n");
	fi_fprintf(fph,"            Property: \"UpAxis\", \"int\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"UpAxisSign\", \"int\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"FrontAxis\", \"int\", \"\",2\r\n");
	fi_fprintf(fph,"            Property: \"FrontAxisSign\", \"int\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"CoordAxis\", \"int\", \"\",0\r\n");
	fi_fprintf(fph,"            Property: \"CoordAxisSign\", \"int\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"OriginalUpAxis\", \"int\", \"\",-1\r\n");
	fi_fprintf(fph,"            Property: \"OriginalUpAxisSign\", \"int\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"UnitScaleFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"            Property: \"OriginalUnitScaleFactor\", \"double\", \"\",1\r\n");
	fi_fprintf(fph,"        }\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"; Object connections\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Connections:  {\r\n");
	fi_fprintf(fph,"    Connect: \"OO\", \"Model::aconcave_root\", \"Model::Scene\"\r\n");
	fi_fprintf(fph,"    Connect: \"OO\", \"Model::Box01\", \"Model::aconcave_root\"\r\n");
	fi_fprintf(fph,"    Connect: \"OO\", \"Material::Box01Mat\", \"Model::Box01\"\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,";Takes and animation section\r\n");
	fi_fprintf(fph,";----------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Takes:  {\r\n");
	fi_fprintf(fph,"    Current: \"\"\r\n");
	fi_fprintf(fph,"}\r\n");
	fi_fprintf(fph,";Version 5 settings\r\n");
	fi_fprintf(fph,";------------------------------------------------------------------\r\n");
	fi_fprintf(fph,"\r\n");
	fi_fprintf(fph,"Version5:  {\r\n");
	fi_fprintf(fph,"    AmbientRenderSettings:  {\r\n");
	fi_fprintf(fph,"        Version: 101\r\n");
	fi_fprintf(fph,"        AmbientLightColor: 0.4,0.4,0.4,0\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    FogOptions:  {\r\n");
	fi_fprintf(fph,"        FlogEnable: 0\r\n");
	fi_fprintf(fph,"        FogMode: 0\r\n");
	fi_fprintf(fph,"        FogDensity: 0.002\r\n");
	fi_fprintf(fph,"        FogStart: 0.3\r\n");
	fi_fprintf(fph,"        FogEnd: 1000\r\n");
	fi_fprintf(fph,"        FogColor: 1,1,1,1\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    Settings:  {\r\n");
	fi_fprintf(fph,"        FrameRate: \"30\"\r\n");
	fi_fprintf(fph,"        TimeFormat: 1\r\n");
	fi_fprintf(fph,"        SnapOnFrames: 0\r\n");
	fi_fprintf(fph,"        ReferenceTimeIndex: -1\r\n");
	fi_fprintf(fph,"        TimeLineStartTime: 0\r\n");
	fi_fprintf(fph,"        TimeLineStopTime: 46186158000\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"    RendererSetting:  {\r\n");
	fi_fprintf(fph,"        DefaultCamera: \"\"\r\n");
	fi_fprintf(fph,"        DefaultViewingMode: 0\r\n");
	fi_fprintf(fph,"    }\r\n");
	fi_fprintf(fph,"}\r\n");


}