Michelle Yuan-- Mark up language
FEGML DTD:
<!--
###############################################################
# Facial emotion and gusture avator DTD, #
# Usage: <!DOCTYPE FEGML SYSTEM FEGML.dtd> #
# FileName: FEGML.dtd #
# Students: Jing Yuan #
# Date: 03/21/2002 HW#3 #
###############################################################
-->
<!-- **** -- Some ENTITIES for an abstracter view -- ****
New facialAnimation, facialEmotion, and Guesture elements are added here
and specified below. All actions have duration, intensity, and wait attribute.
-->
<!-- ************************************************************************************
**** ----- Elements in facialAnimation ----- *
* <look-left> <look-right> <look-up> <look-down> *
* Turns both the eyes and head to look left, right, up, and down. *
* *
**** <eyes-left> <eyes-right> <eyes-up> <eyes-down> *
* The eyes trun left, right, up, and down while the head remains in its position. *
* *
**** <head-right> <head-left> <head-up> <head-down> *
* Head trun right, left, up, and down while eyes remain in its position. *
* *
* *
**** <head-roll-right> <head-roll-left> *
* Head rolls to the left or right in the axial plane for adding *
* realism to the player such as agree or disagree with head movements. *
* *
**** <eyebrow-up> <eyebrow-down> *
* Vertical movement upwards with the whole eyebrow. *
* *
**** <eye-blink> *
* Animates a blink with both eyes. Both the upper and lower eyelids are affected. *
* The intensity value specifies how much of the eyes that should be closed. *
* *
**** <wink> *
* Animates a wink of one eye. *
* *
**** <open-jaw> <close-jaw> *
* Opens or closes the jaw on a Virtual Human. *
************************************************************************************ -->
<!ENTITY % facialAnimation "look-left | look-right | look-up |look-down |
eyes-left | eyes-right |eyes-up | eyes-down |
head-left | head-right |head-up | head-down |
head-roll-right | head-roll-left |eyebrow-up |
eyebrow-down | eye-blink | wink | open-jaw |
close-jaw" >
<!-- ************************************************************************
**** --> Elements in facialEmotion <-- ****
**** <afraid> <angry> <confused> <dazed> <disgusted> ****
**** <happy> <neutral> <sad> <surprised> <default-emotion> ****
************************************************************************ -->
<!ENTITY % facialEmotion "afraid | angry | confused | dazed | disgusted |
happy | neutral | sad | surprised | default-emotion" >
<!-- ************************************************************************
**** --> Elements in Guesture <-- ****
**** <agree> <disagree> <concentrate> <emphasis> <smile> ****
**** <sigh> <shrug>: Mimics the facial "I don't know". ****
************************************************************************ -->
<!ENTITY % guesture "agree | disagree | concentrate | emphasis | sigh |
smile | shrug" >
<!-- **** Define attributes *** -->
<!ENTITY % emotionAttributes
"duration %secs-or-msecs; #IMPLIED
intensity %intensityvalue; 'medium'
wait %secs-or-msecs; #IMPLIED" >
<!ENTITY % facialAnimationAttributes
"%emotionAttributes;">
<!ENTITY % gustureAttributes
"%emotionAttributes;">
<!ENTITY % inlines
"( %facialAnimation | %facialEmotion | %gusture; )*">
<!-- **** Define variable **** -->
<!ENTITY % intensityvalue "CDATA">
<!ENTITY % secs-or-msecs "CDATA" >
<!--
****************************************
* Element in FEGML *
****************************************
-->
<!-- Root element can only occur once. -->
<!ELEMENT FEGML (game)+ >
<!ATTLIST FEGL
xml:lang NMTOKEN #IMPLIED>
>
<!--
****************************************
* Element in game *
****************************************
-->
<!ELEMENT game (player, player)+ >
<!-- attributes of game may add later as needed -->
<!ATTLIST game
>
<!--
****************************************
* Element of player *
****************************************
-->
<!ELEMENT player %inlines; >
<!ATTLIST player
name CDATA #REQUIRED
position CDATA #REQUIRED
%emotionAttributes
>
<!--
****************************************
* Element in facialAnimation *
****************************************
-->
<!ELEMENT look-left %inlines; >
<!ATTLIST look-left
%facialAnimationAttributes; >
<!ELEMENT look-right %inlines;>
<!ATTLIST look-right
%facialAnimationAttributes; >
<!ELEMENT look-up %inlines;>
<!ATTLIST look-up
%facialAnimationAttributes; >
<!ELEMENT look-down %inlines;>
<!ATTLIST look-down
%facialAnimationAttributes; >
<!ELEMENT eyes-left %inlines;>
<!ATTLIST eyes-left
%facialAnimationAttributes; >
<!ELEMENT eyes-right %inlines;>
<!ATTLIST eyes-right
%facialAnimationAttributes; >
<!ELEMENT eyes-up %inlines;>
<!ATTLIST eyes-up
%facialAnimationAttributes; >
<!ELEMENT eyes-down %inlines;>
<!ATTLIST eyes-down
%facialAnimationAttributes; >
<!ELEMENT head-right %inlines;>
<!ATTLIST head-right
%facialAnimationAttributes; >
<!ELEMENT head-left %inlines;>
<!ATTLIST head-left
%facialAnimationAttributes; >
<!ELEMENT head-up %inlines;>
<!ATTLIST head-up
%facialAnimationAttributes; >
<!ELEMENT head-down %inlines;>
<!ATTLIST head-down
d %facialAnimationAttributes; >
<!ELEMENT head-roll-right %inlines;>
<!ATTLIST head-roll-right
%facialAnimationAttributes; >
<!ELEMENT head-roll-left %inlines;>
<!ATTLIST head-roll-left
%facialAnimationAttributes; >
<!ELEMENT eyebrow-up %inlines;>
<!ATTLIST eyebrow-up
%facialAnimationAttributes;
which (both | left | right) 'both' >
<!ELEMENT eyebrow-down %inlines;>
<!ATTLIST eyebrow-down
%facialAnimationAttributes;
which (both | left | right) 'both' >
<!ELEMENT eye-blink %inlines;>
<!ATTLIST eye-blink
%facialAnimationAttributes;
repeat %integer; '1' >
<!ELEMENT wink %inlines;>
<!ATTLIST wink
%facialAnimationAttributes;
which (both | left | right) 'both'
repeat %integer; '1' >
<!ELEMENT open-jaw %inlines;>
<!ATTLIST open-jaw
%facialAnimationAttributes; >
<!ELEMENT close-jaw %inlines;>
<!ATTLIST close-jaw
%facialAnimationAttributes; >
<!--
****************************************
* Element in gusture *
****************************************
-->
<!ELEMENT agree %inlines; >
<!ATTLIST agree
%gustureAttributes;
repeat %integer; '1'>
<!ELEMENT disagree %inlines; >
<!ATTLIST disagree
%gustureAttributes;
repeat %integer; '1'>
<!ELEMENT concentrate %inlines; >
<!ATTLIST concentrate
%gustureAttributes; >
<!ELEMENT emphasis %inlines; >
<!ATTLIST emphasis
%gustureAttributes; >
<!ELEMENT sigh %inlines; >
<!ATTLIST sigh
%gustureAttributes; >
<!ELEMENT smile %inlines; >
<!ATTLIST smile
%gustureAttributes; >
<!ELEMENT shrug %inlines; >
<!ATTLIST shrug
%gustureAttributes;
repeat %integer; '1'>
<!--
****************************************
* Element in emotion *
****************************************
-->
<!ELEMENT afraid %inlines; >
<!ATTLIST afraid
%emotionAttributes; >
<!ELEMENT angry %inlines; >
<!ATTLIST angry
%emotionAttributes; >
<!ELEMENT confused %inlines; >
<!ATTLIST confused
%emotion-attributes; >
<!ELEMENT dazed %inlines; >
<!ATTLIST dazed
%emotionAttributes; >
<!ELEMENT disgusted %inlines; >
<!ATTLIST disgusted
%emotionAttributes; >
<!ELEMENT happy %inlines; >
<!ATTLIST happy
%emotionAttributes; >
<!ELEMENT neutral %inlines; >
<!ATTLIST neutral
%emotionAttributes; >
<!ELEMENT sad %inlines; >
<!ATTLIST sad
%emotionAttributes; >
<!ELEMENT surprised %inlines; >
<!ATTLIST surprised
%emotionAttributes; >
<!ELEMENT default-emotion %inlines; >
<!ATTLIST default-emotion
%emotionAttributes; >
An example XML file:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE FEGML SYSTEM "FEGML.dtd">
<?xml-stylesheet type="text/xsl" href="FEGML.xsl"?>
<!--
##################################################################
# Virtual Game with Facial animation, emotion, and guesture XML. #
# FileName: FEGML.xml #
# Student: Jing Yuan #
# Date: 03/19/2002 HW#3 #
##################################################################
-->
<!-- ****************************************
* F stands for Facial. *
* E stands for Emotion. *
* G stands for Guesture. *
**************************************** -->
<FEGML>
<game>
<player name="Jone" position="1">
<angry duration="6s">
<eye-brow-up duration="3s" />
<confused duration="4s" intensity="low" wait="4s" />
<disagree intensity="30">
<head-roll-left />
<head-roll-right />
</disagree>
</angry>
<happy>
<smile>
<agree>
<head-down />
<head-up />
</agree>
</smile>
</happy>
</player>
<player name="Alex" position="2">
<neutral>
<disgusted>
<wink> </wink>
<open-jaw> </open-jaw>
<close-jaw> </close-jaw>
</disgusted>
<concentrate wait="400ms"> </concentrate>
<agree>
<emphasis>
</emphasis>
</agree>
</neutral>
</player>
<player name="Mark" position="3">
<default-emotion>
<afraid intensity="40">
<look-down duration="10s" />
<sigh> </sigh>
</afraid>
</default-emotion>
</player>
<player name="Smith" position="4">
<default-emotion>
<look-up> </look-up>
<look-down> </look-down>
<disagree>
<shrug duration="10000"> </shrug>
</disagree>
</default-emotion>
</player>
<player />
<player />
<player />
</game>
</FEGML>
|