<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 sp1 (http://www.altova.com) by Kevin Curry (private) -->
<xs:schema xmlns:sgn="SgNode" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:n="Node" xmlns:a="Attribute" xmlns:ax="Attributes" targetNamespace="SgNode" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="Attributes" schemaLocation="../Attribute/Attributes.xsd"/>
	<xs:import namespace="Node" schemaLocation="../Node/Node.xsd"/>
	<xs:complexType name="SGNodeType" mixed="true">
		<xs:complexContent mixed="true">
			<xs:extension base="n:NodeType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="CameraType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of AttributeContainer containing attributes generic to all types of camera</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:ParentableMotionType">
				<xs:sequence minOccurs="0">
					<xs:element name="viewVolume" type="ax:ViewVolumeAttrType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="nearDistance" type="xs:float" use="optional" default=".25"/>
				<xs:attribute name="farDistance" type="xs:float" use="optional" default="100"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="ClipPlane">
		<xs:annotation>
			<xs:documentation>ParentableMotionElement that removes geometry on the negative side of the plane (opposite direction of normals)</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:ParentableMotionType">
					<xs:sequence minOccurs="0">
						<xs:element name="plane" type="ax:PlaneAttrType"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="CompoundTransform">
		<xs:annotation>
			<xs:documentation>Transform containing attributes used for applying a transformation to a subtree</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:element name="translation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
						<xs:element name="rotation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
						<xs:element name="scale" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
						<xs:element name="pivot" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="DirectionalLight">
		<xs:annotation>
			<xs:documentation>Light containing an attribute specific to directional light</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:LightType"/>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Dissolve">
		<xs:annotation>
			<xs:documentation>SceneGraph Node containing an attribute for surface opacity</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="n:NodeType">
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:any namespace="SgNode" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="dissolve" type="xs:float" use="optional" default="0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Fog">
		<xs:annotation>
			<xs:documentation>A SceneGraph Node containing attributes that simulate environmental fog</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:SGNodeType">
					<xs:sequence minOccurs="0">
						<xs:element name="color" type="ax:ColorAttrType" minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="density" type="xs:float" use="optional" default="0"/>
					<xs:attribute name="end" type="xs:float" use="optional" default="1"/>
					<xs:attribute name="mode" type="xs:integer" use="optional" default="1"/>
					<xs:attribute name="start" type="xs:float" use="optional" default="0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="GeometryType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Node that contains attributes generic to all types of geometry</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:ParentableMotionType">
				<xs:sequence minOccurs="0">
					<xs:element name="bbox" type="ax:BBoxAttrType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="show" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="selectable" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="cullable" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="approximationLevels" type="xs:int" use="optional" default="0"/>
				<xs:attribute name="showApproximationLevel" type="xs:int" use="optional" default="1"/>
				<xs:attribute name="alphaSortEnabled" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="distanceSortEnabled" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="polygonSortEnabled" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="intersectee" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="intersector" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="renderSequenceSlot" type="xs:unsignedInt" use="optional" default="0"/>
				<xs:attribute name="shadowCaster" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="stationary" type="xs:boolean" use="optional" default="false"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="GlobalIllumination" abstract="false">
		<xs:annotation>
			<xs:documentation>Node containing an attribute specific to global lighting</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="n:NodeType">
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:element name="ambient" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="diffuse" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="specular" type="ax:ColorAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Group">
		<xs:annotation>
			<xs:documentation>Base GroupType</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:GroupType"/>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="GroupType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Node that classifies (i.e, contains no attributes) all types of Group</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:SGNodeType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IndexedGeometry" abstract="true">
		<xs:annotation>
			<xs:documentation>Abstract IndexedGeometryType</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:IndexedGeometryType">
					<xs:sequence minOccurs="0">
						<xs:element name="vertexIndices" type="ax:IntegerArrayAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="IndexedGeometryType">
		<xs:annotation>
			<xs:documentation>Type of Vertex Geometry containing an attribute specific to an indexed geometry</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="sgn:VertexGeometryType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IndexedLineList">
		<xs:annotation>
			<xs:documentation>IndexedGeometry containing an attribute specific to an indexed line list</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:IndexedGeometryType">
					<xs:attribute name="width" type="xs:float" use="optional" default="1"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IndexedPointList">
		<xs:annotation>
			<xs:documentation>IndexedGeometry containing an attribute specific to an indexed point list</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:IndexedGeometryType">
					<xs:attribute name="size" type="xs:float" use="optional" default="1"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IndexedTriList" type="sgn:IndexedGeometryType">
		<xs:annotation>
			<xs:documentation>IndexedGeometry containing an attribute specific to an indexed triangle list</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Isolator">
		<xs:annotation>
			<xs:documentation>Base IsolatorType</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:IsolatorType"/>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="IsolatorType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Node containing attributes for isolating subtree calculations (i.e., prevents them from being compounded)</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:GroupType">
				<xs:attribute name="isolateTransforms" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="isolateClipPlanes" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateDissolves" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="isolateFog" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateLightModels" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateLights" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateMaterials" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateTextures" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="isolateGlobalIllumination" type="xs:boolean" use="optional" default="false"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="LightModel">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:SGNodeType">
					<xs:attribute name="lightModel" type="xs:integer" use="optional" default="0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="LightType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Node that contains attributes generic to all types of light</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:ParentableMotionType">
				<xs:sequence minOccurs="0">
					<xs:element name="ambient" type="ax:ColorAttrType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The RGB color property that is "non-directional and distributed uniformally throughout the space"</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="diffuse" type="ax:ColorAttrType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The RGB color property that affects how a light is scattered across surfaces.  This is combined with the direction and intensity of the light and the reflectivity of any surfaces the light hits</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="specular" type="ax:ColorAttrType" minOccurs="0">
						<xs:annotation>
							<xs:documentation>The RGB color property that affects the shininess of reflective surfaces</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="constantAttenuation" type="xs:float" minOccurs="0">
						<xs:annotation>
							<xs:documentation>[constant] decay</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="linearAttenuation" type="xs:float" minOccurs="0">
						<xs:annotation>
							<xs:documentation>[linear] decay</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="quadraticAttenuation" type="xs:float" minOccurs="0">
						<xs:annotation>
							<xs:documentation>[quadratic] decay</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="constantAttentuation" type="xs:float" use="optional" default="1.0"/>
				<xs:attribute name="linearAttentuation" type="xs:float" use="optional" default="0.0"/>
				<xs:attribute name="quadraticAttentuation" type="xs:float" use="optional" default="0.0"/>
				<xs:attribute name="shadowCaster" type="xs:boolean" use="optional" default="false"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="LineList">
		<xs:annotation>
			<xs:documentation>Node containing attributes specific to a non-indexed line list</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:VertexGeometryType">
					<xs:attribute name="width" type="xs:float" use="optional" default="1.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Material">
		<xs:annotation>
			<xs:documentation>Node containing attributes generic to all type of material</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="n:NodeType">
					<xs:sequence minOccurs="0">
						<xs:element name="ambient" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="color" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="diffuse" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="emissive" type="ax:ColorAttrType" minOccurs="0"/>
						<xs:element name="specular" type="ax:ColorAttrType" minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="ambientLevel" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="diffuseLevel" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="doubleSided" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="emissiveLevel" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="glossiness" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="opacity" type="xs:float" use="optional" default="1.0"/>
					<xs:attribute name="specularLevel" type="xs:float" use="optional" default="0.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="NullObject">
		<xs:annotation>
			<xs:documentation>Type of ParentableMotionElement that has no other properties (such as geometry, light color, etc)</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:ParentableMotionType"/>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="OrthographicCamera">
		<xs:annotation>
			<xs:documentation>Camera that does not distort appearance of objects relative to their distance from the view perspective</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:CameraType">
					<xs:attribute name="width" type="xs:float" use="optional" default="2.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="OrthographicProjector">
		<xs:annotation>
			<xs:documentation>Projector that does not distort the shape of the projection relative to its perspective toward the projection surface</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:ProjectorType">
					<xs:attribute name="width" type="xs:float" use="optional" default="0.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="ParentableMotionType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of AttributeContainer that contains attributes generic to all Nodes that can have heirarchical transforms</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:SGNodeType">
				<xs:sequence minOccurs="0" maxOccurs="unbounded">
					<xs:element name="position" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="rotation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="scale" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="pivot" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="center" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="worldPosition" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="worldRotation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="worldScale" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="worldTransform" type="ax:Matrix4x4FloatAttrType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="inheritPivot_X" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritPivot_Y" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritPivot_Z" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritPosition_X" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritPosition_Y" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritPosition_Z" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritRotation_X" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritRotation_Y" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritRotation_Z" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritScale_X" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritScale_Y" type="xs:boolean" use="optional" default="true"/>
				<xs:attribute name="inheritScale_Z" type="xs:boolean" use="optional" default="true"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="PerspectiveCamera" abstract="false">
		<xs:annotation>
			<xs:documentation>Camera containing and attribute specific to a perspective camera</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:CameraType">
					<xs:attribute name="zoom" type="xs:float" use="optional" default="0.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="PointLight">
		<xs:annotation>
			<xs:documentation>Light containing attributes specific to a point light</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:LightType">
					<xs:sequence minOccurs="0">
						<xs:element name="range" type="xs:float" minOccurs="0"/>
					</xs:sequence>
					<xs:attribute name="range" type="xs:float" use="optional" default="0.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="PointList">
		<xs:annotation>
			<xs:documentation>VertexGeometry</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:VertexGeometryType">
					<xs:attribute name="size" type="xs:float" use="optional" default="1.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="ProjectorType" mixed="true">
		<xs:annotation>
			<xs:documentation>ParentableMotionElement that projects an image onto any number of surfaces within the frustum of the projector</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:ParentableMotionType">
				<xs:sequence minOccurs="0">
					<xs:element name="biasFactor" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					<xs:element name="scaleFactor" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="aspectRatio" type="xs:float" use="optional" default="1.0"/>
				<xs:attribute name="farDistance" type="xs:float" use="optional" default="0.0"/>
				<xs:attribute name="nearDistance" type="xs:float" use="optional" default="0.0"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="QuaternionRotate">
		<xs:annotation>
			<xs:documentation>Transform that contains an attribute for applying a rotation to a quaternion</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0">
						<xs:element name="rotationQuat" type="ax:QuaternionFloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Rotate">
		<xs:annotation>
			<xs:documentation>Transform containing an attribute for applying rotation to a subtree</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0">
						<xs:element name="rotation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Scale">
		<xs:annotation>
			<xs:documentation>Transform containing an attribute for applying scale to a subtree</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0">
						<xs:element name="scale" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Selector">
		<xs:annotation>
			<xs:documentation>Group containing an attribute for selecting a single child node in a traversal</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:GroupType">
					<xs:attribute name="selectee" type="xs:integer" use="optional" default="0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Sequencer">
		<xs:annotation>
			<xs:documentation>Group identifying a subtree that should be traversed in sequence from 0 to numChildren - 1</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="sgn:GroupType"/>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="SpotLight">
		<xs:annotation>
			<xs:documentation>Light containing attributes specific to a spot light</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:LightType">
					<xs:attribute name="coneFalloff" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="innerConeDegrees" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="outerConeDegrees" type="xs:float" use="optional" default="0.0"/>
					<xs:attribute name="range" type="xs:float" use="optional" default="0.0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="Texture" type="sgn:TextureType">
		<xs:annotation>
			<xs:documentation>Abstract TextureType</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="TextureType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Node containing attributes that define a texture applied to a Surface</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="n:NodeType">
				<xs:sequence minOccurs="0">
					<xs:element name="image" type="ax:ImageAttrType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="heightWrap" type="xs:integer" use="optional" default="0"/>
				<xs:attribute name="mipmappingEnabled" type="xs:boolean" use="optional" default="false"/>
				<xs:attribute name="opacity" type="xs:float" use="optional" default="1.0"/>
				<xs:attribute name="textureType" type="xs:integer" use="optional" default="0"/>
				<xs:attribute name="widthWrap" type="xs:integer" use="optional" default="0"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="Transform" abstract="true">
		<xs:annotation>
			<xs:documentation>Node containing attributes generic to all types of transform</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0">
						<xs:element name="matrix" type="ax:Matrix4x4FloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="TransformType">
		<xs:annotation>
			<xs:documentation>Type of Node containing attributes that define a  transformation applied to a subtree</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="n:NodeType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="Translate">
		<xs:annotation>
			<xs:documentation>Transform containing an attribute for applying translation to a subtree</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:TransformType">
					<xs:sequence minOccurs="0">
						<xs:element name="translation" type="ax:Vector3DFloatAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="TriList" type="sgn:VertexGeometryType">
		<xs:annotation>
			<xs:documentation>VertexGeometry containing an attribute specific to a non-indexed triangle list</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="VertexGeometry">
		<xs:annotation>
			<xs:documentation>Abstract VertexGeometryType</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:complexContent mixed="true">
				<xs:extension base="sgn:VertexGeometryType">
					<xs:sequence minOccurs="0">
						<xs:element name="vertexColors" type="ax:FloatArrayAttrType" minOccurs="0"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="VertexGeometryType" mixed="true">
		<xs:annotation>
			<xs:documentation>Type of Geometry containing an attribute specific to a vertex geometry</xs:documentation>
		</xs:annotation>
		<xs:complexContent mixed="true">
			<xs:extension base="sgn:GeometryType">
				<xs:sequence>
					<xs:element name="vertices">
						<xs:complexType>
							<xs:anyAttribute namespace="##other"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="normals" type="ax:FloatArrayAttrType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>
