Sourceforge Page  |  Author's website  |  Home
 

Specifications

Proposed Milestones

v0.1 - White Rabbit system that simply displays the avatar to the screen with option to display a text box

v0.2 - Introduction of "Bunny Farm" theme creator in QT that can load and display skeletons, textures, characters, etc.

v0.3 - Finalize the theme file/data structure and preliminary personality theme system

v0.4 - Completed personality system

v0.5 - Add the ability to load more types of files into Bunny Farm (see main page for formats) and other fluff

v1.0 - Completely finished and fully-featured Bunny Farm and White Rabbit with personality systems and personality authoring built into Bunny Farm


Preliminary header file (Read me and comment!)

Bunny Farm

Bunny farm will be a KDE-based theme editing program.  Here's a mock up of what I'm thinking for the screen layout:

There will be a standard library of skeletons (small files, so it's not an issue even with ~100 skeletons) that will represent all of the standard biological body frames.  Then there will be a way to open meshes from a variety of sources (e.g. 3ds).  Then the model's final touch will be applying materials/images to the wire-mesh frame.  Once the material is applied to it, double clicking on the polygon that holds the material should bring up an embedded image viewer (using DCOP, I guess).

The final output will be a machine-readable binary file format with a .wr extension.  It will be a tightly compressed compilation of all skeletons, meshes, images, options, sounds, and personality formats that are necessary for the theme to be used.  When a theme is compiled into this format, all of the necessary checks and fall-through options will be added.  For example, if the theme doesn't handle a certain emotional state, the fall-through option will be set to do nothing upon request for a change to that emotional state.  This way, emotional states can be added by the user and to the pertinent themes that the user wants to use these states in without introducing nondeterministic results from asking older themes for the new abilities.  If the neglected state is mandatory, the system should refuse to output a theme file.


White Rabbit

Themes (what they must include):

dialog box
  • The main idea here is displaying a PNG or an MNG at a constantly updated location (always a certain number of pixels away from the avatar's mouth.  For this, there will be a focus point built into the model that represents the mouth location.
  • It will need: length and width of the texture, length and width of the text drawing area, and coordinates of the text drawing area.  This way, the animation/image can be drawn to the screen and text can be added to it.

 

meshes/textures
  • a mesh model in cal3d's format
  • a list of accessory models that this model can use and where to attach them (e.g. a model for a cigarette to be placed in the mouth of the character, a walking stick model for a decrepit old man model)
  • a list of textures and where they are (would be nice to have a standard "library" of accessory models...)
  • The model must have two points specifically defined on the skeletal structure.  The points are: mouth point (where the center of the mouth is, which will be necessary if the mouth system becomes modular and outside of cal3d) and gravity center point (where the center of gravity for the body frame should be located).
personality
 
Mouth Animation Images  (stolen from here)
Mouth Position Sample Image Representation
Closed
 
Normal mouth closed shape.
Also used for phonemes such as "m" as in "mom," "b" as in "bob," "f" as in "fife."
Open-wide 1
 
Mouth is slightly open, at full width.
Used for phonemes such as "g" as in "gag," "l" as in "lull," "ear" as in "hear."
Open-wide 2
 
Mouth is partially open, at full width.
Used for phonemes such as "n" as in "nun," "d" as in "dad," "t" as in "tot."
Open-wide 3
 
Mouth is open, at full width.
Used for phonemes such as "u" as in "hut," "ea" as in "head," "ur" as in "hurt."
Open-wide 4
 
Mouth is completely open, at full width.
Used for phonemes such as "a" as in "hat," "ow" as in "how."
Open-medium
 
Mouth is open at half width.
Used for phonemes such as "oy" as in "ahoy," "o" as in "hot."
Open-narrow
 
Mouth is open at narrow width.
Used for phonemes such as "o" as in "hoop", "o" as in "hope," "w" as in "wet."
  • have mixer combinations that represent different states: base (no movement), focus (some event to freshly wake up the character, be it mouse clicks or new mail or whatever), blur (go to sleep after a timer tells it to), sleep (take a nap after blurred for a long time, usually going off-screen), dialogue (how to handle asking the user a question, be it in TTS or in a text box that the character holds)
  • Must be able to define sounds inside of the character's theme.  e.g. ducks should quack occasionally.
  • TODO: figure out how the hell to do the rest of this

What will we need to ask a character to do?

Use Cases

 

SourceForge Logo