OSDN Git Service

vmd用スキーマ導入
authorOlyutorskii <olyutorskii@users.osdn.me>
Tue, 23 Aug 2011 16:14:11 +0000 (01:14 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Tue, 23 Aug 2011 16:14:11 +0000 (01:14 +0900)
src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.dtd [new file with mode: 0644]
src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.xsd [new file with mode: 0644]

diff --git a/src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.dtd b/src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.dtd
new file mode 100644 (file)
index 0000000..8092eef
--- /dev/null
@@ -0,0 +1,327 @@
+<?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 -->
diff --git a/src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.xsd b/src/main/resources/jp/sourceforge/mikutoga/vmd/model/xml/resources/vmdxml-110820.xsd
new file mode 100644 (file)
index 0000000..3f74ed3
--- /dev/null
@@ -0,0 +1,868 @@
+<?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 -->