--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+ MikuMikuDance
+ motion-data(*.vmd) on XML
+ DTD definition
+
+ License : The MIT License
+ Copyright(c) 2011 MikuToga Partners
+
+ SYSTEM ID: http://mikutoga.sourceforge.jp/xml/dtd/vmdxml-110820.dtd
+-->
+
+
+<!--
+ ROOT
+-->
+<!ELEMENT vmdMotion (
+ meta*,
+ (
+ ( modelName, boneMotionSequence, morphSequence )
+ | ( cameraSequence, luminousSequence, shadowSequence )
+ )
+) >
+<!ATTLIST vmdMotion
+ xmlns CDATA #IMPLIED
+ xmlns:xsi CDATA #IMPLIED
+ xsi:schemaLocation CDATA #IMPLIED
+ version CDATA #FIXED "110820"
+>
+
+
+<!--
+ Meta-information of model.
+ Use free.
+ but, some meta-name has recommended usage.
+ + "generator" (Generator application name)
+ + "siteURL" (Website URL)
+-->
+<!ELEMENT meta EMPTY >
+<!ATTLIST meta
+ name CDATA #REQUIRED
+ content CDATA #REQUIRED
+>
+
+
+<!--
+ bezier cubic curve parameters for interpolation.
+ p0=(0, 0) p3=(127, 127) [implicit points]
+ P1 and P2 points are required.
+-->
+<!ELEMENT bezier EMPTY >
+<!ATTLIST bezier
+ p1x CDATA #REQUIRED
+ p1y CDATA #REQUIRED
+ p2x CDATA #REQUIRED
+ p2y CDATA #REQUIRED
+>
+
+
+<!--
+ default linear bezier curve for interpolation.
+ p0=(0, 0) p1=(20, 20) p2=(107, 107) p3=(127, 127)
+-->
+<!ELEMENT defLinear EMPTY >
+
+
+<!--
+ default ease-in-out bezier curve for interpolation.
+ p0=(0, 0) p1=(64, 0) p2=(64, 127) p3=(127, 127)
+-->
+<!ELEMENT defEaseInOut EMPTY >
+
+
+<!--
+ model name.
+-->
+<!ELEMENT modelName EMPTY>
+<!ATTLIST modelName name CDATA #REQUIRED>
+
+
+<!--
+ bone motion sequence
+-->
+<!ELEMENT boneMotionSequence (
+ bonePart*
+) >
+
+
+<!--
+ bone part grouped by bone-name
+-->
+<!ELEMENT bonePart (
+ boneMotion*
+) >
+<!ATTLIST bonePart name CDATA #REQUIRED>
+
+
+<!--
+ bone motion
+-->
+<!ELEMENT boneMotion (
+ bonePosition?, ( boneRotQuat | boneRotEyxz )
+) >
+<!ATTLIST boneMotion frame CDATA #REQUIRED>
+
+
+<!--
+ bone position
+ with XYZ *3 interpolations.
+-->
+<!ELEMENT bonePosition (
+ ( ( bezier | defLinear | defEaseInOut ),
+ ( bezier | defLinear | defEaseInOut ),
+ ( bezier | defLinear | defEaseInOut ) )?
+) >
+<!ATTLIST bonePosition
+ xPos CDATA #REQUIRED
+ yPos CDATA #REQUIRED
+ zPos CDATA #REQUIRED
+>
+
+
+<!--
+ bone rotation [Quaternion]
+-->
+<!ELEMENT boneRotQuat (
+ ( bezier | defLinear | defEaseInOut )?
+) >
+<!ATTLIST boneRotQuat
+ qx CDATA #REQUIRED
+ qy CDATA #REQUIRED
+ qz CDATA #REQUIRED
+ qw CDATA #REQUIRED
+>
+
+
+<!--
+ bone rotation [YXZ-Euler]
+ degree but not radian
+-->
+<!ELEMENT boneRotEyxz (
+ ( bezier | defLinear | defEaseInOut )?
+) >
+<!ATTLIST boneRotEyxz
+ xDeg CDATA #REQUIRED
+ yDeg CDATA #REQUIRED
+ zDeg CDATA #REQUIRED
+>
+
+
+<!--
+ morph sequence
+-->
+<!ELEMENT morphSequence (
+ morphPart*
+) >
+
+
+<!--
+ morph part grouped by morph-name
+-->
+<!ELEMENT morphPart (
+ morphMotion*
+) >
+<!ATTLIST morphPart name CDATA #REQUIRED>
+
+
+<!--
+ morph motion
+ flex : morph flexible value. [0.0-1.0]
+-->
+<!ELEMENT morphMotion EMPTY >
+<!ATTLIST morphMotion
+ frame CDATA #REQUIRED
+ flex CDATA #REQUIRED
+>
+
+
+<!--
+ camera sequence
+-->
+<!ELEMENT cameraSequence (
+ cameraMotion*
+) >
+
+
+<!--
+ camera motion
+-->
+<!ELEMENT cameraMotion (
+ cameraTarget, cameraRotation, cameraRange, projection
+) >
+<!ATTLIST cameraMotion
+ frame CDATA #REQUIRED
+ hasPerspective ( true | false | 1 | 0 ) "true"
+>
+
+
+<!--
+ camera target position
+ with XYZ *3 interpolations.
+-->
+<!ELEMENT cameraTarget (
+ ( ( bezier | defLinear | defEaseInOut ),
+ ( bezier | defLinear | defEaseInOut ),
+ ( bezier | defLinear | defEaseInOut ) )?
+) >
+<!ATTLIST cameraTarget
+ xPos CDATA #REQUIRED
+ yPos CDATA #REQUIRED
+ zPos CDATA #REQUIRED
+>
+
+
+<!--
+ camera-rotation around camera-target
+ with polar-coordinates parameters.
+
+ xRad = -radian(UI_X) [latitude]
+ yRad = radian(UI_Y) [longitude]
+ zRad = radian(UI_Z) [roll]
+-->
+<!ELEMENT cameraRotation (
+ ( bezier | defLinear | defEaseInOut )?
+) >
+<!ATTLIST cameraRotation
+ xRad CDATA #REQUIRED
+ yRad CDATA #REQUIRED
+ zRad CDATA #REQUIRED
+>
+
+
+<!--
+ camera range.
+ sign was negated from UI_RANGE.
+-->
+<!ELEMENT cameraRange (
+ ( bezier | defLinear | defEaseInOut )?
+) >
+<!ATTLIST cameraRange range CDATA #REQUIRED >
+
+
+<!--
+ screen-projection data.
+ vertDeg : vertical screen-projection angle by degree.
+-->
+<!ELEMENT projection (
+ ( bezier | defLinear | defEaseInOut )?
+) >
+<!ATTLIST projection vertDeg CDATA #REQUIRED >
+
+
+<!--
+ luminous sequence
+-->
+<!ELEMENT luminousSequence (
+ luminousAct*
+) >
+
+
+<!--
+ luminous act
+-->
+<!ELEMENT luminousAct (
+ lumiColor, lumiDirection
+) >
+<!ATTLIST luminousAct frame CDATA #REQUIRED >
+
+
+<!--
+ luminous color by RGB color space.
+ color component value. [0.0-1.0]
+-->
+<!ELEMENT lumiColor EMPTY >
+<!ATTLIST lumiColor
+ rCol CDATA #REQUIRED
+ gCol CDATA #REQUIRED
+ bCol CDATA #REQUIRED
+>
+
+
+<!--
+ luminous direction by vector
+ vector component [0.0-1.0]
+-->
+<!ELEMENT lumiDirection EMPTY >
+<!ATTLIST lumiDirection
+ xVec CDATA #REQUIRED
+ yVec CDATA #REQUIRED
+ zVec CDATA #REQUIRED
+>
+
+
+<!--
+ shadow sequence
+-->
+<!ELEMENT shadowSequence (
+ shadowAct*
+) >
+
+
+<!--
+ shadow act
+
+ mode : type of shadow
+ + NONE : no self-shadow
+ + MODE_1 : reduce shadow-quality suddenly at range
+ + MODE_2 : reduce shadow-quality gradually with range
+
+ rawParam : shadow range raw value.
+ UI_VALUE = EFFECTIVE_RANGE * 100 ???
+ rawParam = 0.1 - (UI_VALUE / 1.0E+5)
+
+ UI_VALUE:0 => rawParam:0.1
+ UI_VALUE:8875 => rawParam:0.01125
+ UI_VALUE:9999 => rawParam:1.0E-5
+-->
+<!ELEMENT shadowAct EMPTY >
+<!ATTLIST shadowAct
+ frame CDATA #REQUIRED
+ mode ( NONE | MODE_1 | MODE_2 ) #REQUIRED
+ rawParam CDATA #REQUIRED
+>
+
+
+<!-- EOF -->
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+ MikuMikuDance
+ motion-data(*.vmd) on XML
+ schema definition
+
+ License : The MIT License
+ Copyright(c) 2011 MikuToga Partners
+-->
+
+
+<!DOCTYPE xsd:schema [
+ <!ENTITY schemaVer "110820" >
+ <!ENTITY schemaNS "http://mikutoga.sourceforge.jp/xml/ns/vmdxml/110820" >
+]>
+
+
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
+ targetNamespace="&schemaNS;"
+ xmlns:tns ="&schemaNS;"
+
+ elementFormDefault="qualified"
+ version="&schemaVer;"
+>
+
+ <xsd:annotation>
+ <xsd:documentation>
+ MikuMikuDance motion-data(*.vmd) on XML.
+ License : The MIT License
+ Copyright(c) 2011 MikuToga Partners
+ </xsd:documentation>
+ </xsd:annotation>
+
+
+ <!-- ROOT element for motion -->
+ <xsd:element name="vmdMotion" >
+ <xsd:annotation>
+ <xsd:documentation>
+ Root element.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:meta"
+ minOccurs="0" maxOccurs="unbounded" />
+ <xsd:choice>
+ <xsd:sequence> <!-- model motion -->
+ <xsd:element ref="tns:modelName" />
+ <xsd:element ref="tns:boneMotionSequence" />
+ <xsd:element ref="tns:morphSequence" />
+ </xsd:sequence>
+ <xsd:sequence> <!-- stage act -->
+ <xsd:element ref="tns:cameraSequence" />
+ <xsd:element ref="tns:luminousSequence" />
+ <xsd:element ref="tns:shadowSequence" />
+ </xsd:sequence>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute
+ name="version"
+ type="xsd:token"
+ use="required"
+ fixed="&schemaVer;" />
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:simpleType name="FrameNo" >
+ <xsd:annotation>
+ <xsd:documentation>
+ frame No.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:int" >
+<!--
+ <xsd:minInclusive value="0" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="MorphFlex" >
+ <xsd:annotation>
+ <xsd:documentation>
+ morph flexible value. [0.0-1.0]
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:float" >
+ <xsd:minInclusive value="-0.0" />
+<!--
+ <xsd:maxInclusive value="1.0" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="ProjectionAngle" >
+ <xsd:annotation>
+ <xsd:documentation>
+ screen-projection angle(degree).
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:int" >
+<!--
+ <xsd:minInclusive value="-0" />
+ <xsd:maxInclusive value="+180" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="ColorComponent" >
+ <xsd:annotation>
+ <xsd:documentation>
+ color component value.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:float" >
+<!--
+ <xsd:minInclusive value="-0.0" />
+ <xsd:maxInclusive value="1.0" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="DirVecComponent" >
+ <xsd:annotation>
+ <xsd:documentation>
+ direction vector component value.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:float" >
+<!--
+ <xsd:minInclusive value="-1.0" />
+ <xsd:maxInclusive value="+1.0" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="ShadowType" >
+ <xsd:annotation>
+ <xsd:documentation>
+ type of shadow
+ + NONE : no self-shadow
+ + MODE_1 : reduce shadow-quality suddenly at range
+ + MODE_2 : reduce shadow-quality gradually with range
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:string" >
+ <xsd:enumeration value="NONE" />
+ <xsd:enumeration value="MODE_1" />
+ <xsd:enumeration value="MODE_2" />
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="ShadowRawParam" >
+ <xsd:annotation>
+ <xsd:documentation>
+ shadow range raw value.
+
+ UI_VALUE = EFFECTIVE_RANGE * 100 ???
+ rawParam = 0.1 - (UI_VALUE / 1.0E+5)
+
+ UI_VALUE:0 => rawParam:0.1
+ UI_VALUE:8875 => rawParam:0.01125
+ UI_VALUE:9999 => rawParam:1.0E-5
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:float" >
+<!--
+ <xsd:minInclusive value="-0.0" />
+ <xsd:maxInclusive value="0.1" />
+-->
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:simpleType name="BezPt" >
+ <xsd:annotation>
+ <xsd:documentation>
+ Bezier points coordinates value. [XY:0-127]
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:restriction base="xsd:byte" >
+ <xsd:minInclusive value= "0" />
+ <xsd:maxInclusive value="127" />
+ </xsd:restriction>
+
+ </xsd:simpleType>
+
+
+ <xsd:complexType name="FrameNumbered" >
+ <xsd:annotation>
+ <xsd:documentation>
+ frame numbered type.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:attribute name="frame" type="tns:FrameNo" use="required" />
+
+ </xsd:complexType>
+
+
+ <xsd:complexType name="BezParam" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bezier cubic curve parameters.
+ p0=(0, 0) p3=(127, 127) [implicit points]
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:attribute name="p1x" type="tns:BezPt" use="optional" />
+ <xsd:attribute name="p1y" type="tns:BezPt" use="optional" />
+ <xsd:attribute name="p2x" type="tns:BezPt" use="optional" />
+ <xsd:attribute name="p2y" type="tns:BezPt" use="optional" />
+
+ </xsd:complexType>
+
+
+ <xsd:element name="bezier" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bezier cubic curve parameters.
+ p0=(0, 0) p3=(127, 127) [implicit points]
+ P1 and P2 points are required.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="tns:BezParam" >
+ <xsd:attribute name="p1x" type="tns:BezPt" use="required" />
+ <xsd:attribute name="p1y" type="tns:BezPt" use="required" />
+ <xsd:attribute name="p2x" type="tns:BezPt" use="required" />
+ <xsd:attribute name="p2y" type="tns:BezPt" use="required" />
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="defLinear" >
+ <xsd:annotation>
+ <xsd:documentation>
+ default linear bezier curve.
+ p0=(0, 0) p1=(20, 20) p2=(107, 107) p3=(127, 127)
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="tns:BezParam" >
+ <xsd:attribute name="p1x" use="prohibited" fixed= "20" />
+ <xsd:attribute name="p1y" use="prohibited" fixed= "20" />
+ <xsd:attribute name="p2x" use="prohibited" fixed="107" />
+ <xsd:attribute name="p2y" use="prohibited" fixed="107" />
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="defEaseInOut" >
+ <xsd:annotation>
+ <xsd:documentation>
+ default ease-in-out bezier curve.
+ p0=(0, 0) p1=(64, 0) p2=(64, 127) p3=(127, 127)
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="tns:BezParam" >
+ <xsd:attribute name="p1x" use="prohibited" fixed= "64" />
+ <xsd:attribute name="p1y" use="prohibited" fixed= "0" />
+ <xsd:attribute name="p2x" use="prohibited" fixed= "64" />
+ <xsd:attribute name="p2y" use="prohibited" fixed="127" />
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:complexType name="InterpolationSingle" >
+ <xsd:annotation>
+ <xsd:documentation>
+ has single interpolation curve.
+ If omitted, it means default linear curve.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:choice minOccurs="0" >
+ <xsd:element ref="tns:bezier" />
+ <xsd:element ref="tns:defLinear" />
+ <xsd:element ref="tns:defEaseInOut" />
+ </xsd:choice>
+
+ </xsd:complexType>
+
+
+ <xsd:complexType name="PosWithInterpolation" >
+ <xsd:annotation>
+ <xsd:documentation>
+ 3D-position with XYZ-interpolation curve.
+ If omitted, it means default linear curve *3 [XYZ].
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:sequence minOccurs="0" maxOccurs="1" >
+ <xsd:choice minOccurs="3" maxOccurs="3" >
+ <xsd:element ref="tns:bezier" />
+ <xsd:element ref="tns:defLinear" />
+ <xsd:element ref="tns:defEaseInOut" />
+ </xsd:choice>
+ </xsd:sequence>
+
+ <xsd:attribute name="xPos" type="xsd:float" use="required" />
+ <xsd:attribute name="yPos" type="xsd:float" use="required" />
+ <xsd:attribute name="zPos" type="xsd:float" use="required" />
+
+ </xsd:complexType>
+
+
+ <xsd:element name="meta" >
+ <xsd:annotation>
+ <xsd:documentation>
+ Meta-information of motion.
+ Use free.
+ but, some meta-name has recommended usage.
+ + "generator" (Generator application name)
+ + "siteURL" (about motion creator)
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:attribute
+ name="name"
+ type="xsd:NCName"
+ use="required" />
+ <xsd:attribute
+ name="content"
+ type="xsd:string"
+ use="required" />
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="modelName" >
+ <xsd:annotation>
+ <xsd:documentation>
+ name of motion-model.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:attribute
+ name="name"
+ type="xsd:string"
+ use="required" />
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="boneMotionSequence" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone motion data sequence.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:bonePart"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:unique name="BoneName" >
+ <xsd:selector xpath="./tns:bonePart" />
+ <xsd:field xpath="@name" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="bonePart" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone motion data group by bone-name.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:boneMotion"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+
+ <xsd:attribute
+ name="name"
+ type="xsd:string"
+ use="required" />
+ </xsd:complexType>
+
+ <xsd:unique name="BoneFrameNo" >
+ <xsd:selector xpath="./tns:boneMotion" />
+ <xsd:field xpath="@frame" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="boneMotion" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone motion data.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:FrameNumbered" >
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:bonePosition"
+ minOccurs="0" maxOccurs="1" />
+ <xsd:choice>
+ <xsd:element ref="tns:boneRotQuat" />
+ <xsd:element ref="tns:boneRotEyxz" />
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="bonePosition" type="tns:PosWithInterpolation" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone position.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ </xsd:element>
+
+
+ <xsd:element name="boneRotQuat" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone rotation. (Quaternion parameters)
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:InterpolationSingle" >
+ <xsd:attribute name="qx" type="xsd:float" use="required" />
+ <xsd:attribute name="qy" type="xsd:float" use="required" />
+ <xsd:attribute name="qz" type="xsd:float" use="required" />
+ <xsd:attribute name="qw" type="xsd:float" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="boneRotEyxz" >
+ <xsd:annotation>
+ <xsd:documentation>
+ bone rotation. (YXZ-Euler rotation parameters)
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:InterpolationSingle" >
+ <xsd:attribute name="xDeg" type="xsd:float" use="required" />
+ <xsd:attribute name="yDeg" type="xsd:float" use="required" />
+ <xsd:attribute name="zDeg" type="xsd:float" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="morphSequence" >
+ <xsd:annotation>
+ <xsd:documentation>
+ morphing data sequence.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:morphPart"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:unique name="MorphName" >
+ <xsd:selector xpath="./tns:morphPart" />
+ <xsd:field xpath="@name" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="morphPart" >
+ <xsd:annotation>
+ <xsd:documentation>
+ morphing data group by morph-name.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:morphMotion"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+
+ <xsd:attribute
+ name="name"
+ type="xsd:string"
+ use="required" />
+ </xsd:complexType>
+
+ <xsd:unique name="MorphFrameNo" >
+ <xsd:selector xpath="./tns:morphMotion" />
+ <xsd:field xpath="@frame" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="morphMotion" >
+ <xsd:annotation>
+ <xsd:documentation>
+ morphing data.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:FrameNumbered" >
+ <xsd:attribute
+ name="flex"
+ type="tns:MorphFlex"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="cameraSequence" >
+ <xsd:annotation>
+ <xsd:documentation>
+ camera sequence.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:cameraMotion"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:unique name="CameraFrameNo" >
+ <xsd:selector xpath="./tns:cameraMotion" />
+ <xsd:field xpath="@frame" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="cameraMotion" >
+ <xsd:annotation>
+ <xsd:documentation>
+ camera data.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:FrameNumbered" >
+ <xsd:sequence>
+ <xsd:element ref="tns:cameraTarget" />
+ <xsd:element ref="tns:cameraRotation" />
+ <xsd:element ref="tns:cameraRange" />
+ <xsd:element ref="tns:projection" />
+ </xsd:sequence>
+ <xsd:attribute
+ name="hasPerspective"
+ type="xsd:boolean"
+ use="optional"
+ default="true" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="cameraTarget" type="tns:PosWithInterpolation" >
+ <xsd:annotation>
+ <xsd:documentation>
+ camera target.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ </xsd:element>
+
+
+ <xsd:element name="cameraRotation" >
+ <xsd:annotation>
+ <xsd:documentation>
+ camera-rotation around camera-target
+ with polar-coordinates parameters.
+
+ xRad = -radian(UI_X) [latitude]
+ yRad = radian(UI_Y) [longitude]
+ zRad = radian(UI_Z) [roll]
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:InterpolationSingle" >
+ <xsd:attribute name="xRad" type="xsd:float" use="required" />
+ <xsd:attribute name="yRad" type="xsd:float" use="required" />
+ <xsd:attribute name="zRad" type="xsd:float" use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="cameraRange" >
+ <xsd:annotation>
+ <xsd:documentation>
+ camera range.
+ sign was negated from UI_RANGE.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:InterpolationSingle" >
+ <xsd:attribute
+ name="range"
+ type="xsd:float"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="projection" >
+ <xsd:annotation>
+ <xsd:documentation>
+ projection data.
+ vertDeg : vertical screen-projection angle by degree.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:InterpolationSingle" >
+ <xsd:attribute
+ name="vertDeg"
+ type="tns:ProjectionAngle"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="luminousSequence" >
+ <xsd:annotation>
+ <xsd:documentation>
+ luminous sequence.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:luminousAct"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:unique name="LuminousFrameNo" >
+ <xsd:selector xpath="./tns:luminousAct" />
+ <xsd:field xpath="@frame" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="luminousAct" >
+ <xsd:annotation>
+ <xsd:documentation>
+ luminous data.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:FrameNumbered" >
+ <xsd:sequence>
+ <xsd:element ref="tns:lumiColor" />
+ <xsd:element ref="tns:lumiDirection" />
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="lumiColor" >
+ <xsd:annotation>
+ <xsd:documentation>
+ luminous color by RGB color space.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:attribute
+ name="rCol"
+ type="tns:ColorComponent"
+ use="required" />
+ <xsd:attribute
+ name="gCol"
+ type="tns:ColorComponent"
+ use="required" />
+ <xsd:attribute
+ name="bCol"
+ type="tns:ColorComponent"
+ use="required" />
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="lumiDirection" >
+ <xsd:annotation>
+ <xsd:documentation>
+ luminous direction by vector.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:attribute
+ name="xVec"
+ type="tns:DirVecComponent"
+ use="required" />
+ <xsd:attribute
+ name="yVec"
+ type="tns:DirVecComponent"
+ use="required" />
+ <xsd:attribute
+ name="zVec"
+ type="tns:DirVecComponent"
+ use="required" />
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+ <xsd:element name="shadowSequence" >
+ <xsd:annotation>
+ <xsd:documentation>
+ shadow sequence.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element
+ ref="tns:shadowAct"
+ minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:unique name="ShadowFrameNo" >
+ <xsd:selector xpath="./tns:shadowAct" />
+ <xsd:field xpath="@frame" />
+ </xsd:unique>
+
+ </xsd:element>
+
+
+ <xsd:element name="shadowAct" >
+ <xsd:annotation>
+ <xsd:documentation>
+ shadow data.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="tns:FrameNumbered" >
+ <xsd:attribute
+ name="mode"
+ type="tns:ShadowType"
+ use="required" />
+ <xsd:attribute
+ name="rawParam"
+ type="tns:ShadowRawParam"
+ use="required" />
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ </xsd:element>
+
+
+</xsd:schema>
+
+
+<!-- EOF -->