
Facial Animation System:

	Legal Stuff;

	This rendering system uses equations developed
	by Waters and also by Carol Wang.

	I thank them much for providing some original
	code (also on this FTP server). My main interest in 
	facial animation is in the control systems, unfortunately
	there were no ready to go muscle based animation systems,
	so I made this one and am willing to let people use it
	for non-commercial uses only. 
	
	I take no responsibily any damages etc....
	This work cannot be sold to anyone...it must be
	given for free with appropriate credits. 


	Copyright 1992
	Steve Franks
	Sony COmputer Science Lab
	stevef@csl.sony.co.jp


Summary Instructions on Operating the Animation System:


	1) The directory Face contains the Animation/Rendering System

		- cd Face
		- main

	You can make the facial display window any size you want. In the
	upper right corner a control panel will appear, and only the eyes
	will  be displayed in the Face Display window.

	- The "Lighting" button turns on/off shading.
	- The "Texture Map" turns on/off texture mapping

	Now, any combination of these can be used, if lighting and texture
	mapping are both on then the colors are blended. 

	- Write Movie causes the system to save an RGB snapshot of each 
	rendered frame into a disk file. It is painfully slow...it beeps 
	after every saved frame.



	*** Keyboard Controls ****

	- The Numeric Keypad controls the "Camera" position.
	
	5: Center Head to original position
	4: Move camera left
	6: Move camera right
	8: Move camera up
	2: Move camera down
	1: Move camera forward
	3: Move camera backwards (farther away from face)
	7,9: Twist face about Z axis

	- Arrow Keys:	Translate the head about coordinate

	- Mouse Keys: (Must be in Face Display Window )

		Left Mouse: 	Display as wire mesh
		Right Mouse: 	Display a filled polygons (surface)
		Middle Mouse:   Pick a vertex and display info (in text window)

	
	Using these you can you the head from a variety of angles,
	

	Show Muscle Position shows where some of the muscles are located
	on the face (looks best in wire mesh mode)

	and Show Muscle Chart tells there names.


	**** To Actually Animate the Face****

	This system Has no Control Functions, it receives animation
	instruction either from a disk file, or an InterNet Socket connected
	to a Scripting program.


	There are 2 scripting programs:
		Slider-Control  - which is very basic for testing
		Control		- Spline based control.

	To connect to these, push the INET Connect Button,
	after you push this, no window or Control panel events will
	be processed until after you exit the remote control program.
	This is easy to change, but its much faster this way (?)

	



	2) Using the Slider-Control System

		cd Slider-Control
		main

	< It expects the Face program to be running, and the user to have
	pushed the INET Connet button, it will continue to loop until
	the INET Connect button on the Renderer Control Panel is pushed>

	A "Master Form" control panel will pop up under the mouse.
	
	The crosshairs control head position.
	This program is really just for testing, but maybe you want to use
	the muscles controls, so push "Show Muscle Controls"

	A bunch of sliders appear, every time a slider changes position a
	new face is rendered. Now, sphinctor is being reconstructed.

	Note: The control panel just pops, sometimes covering control
	panel, use a window manager funciton to move it, then click
	the QUIT button to exit. The Face renderer will now respond
	to its control panel and X events again.\


	SPline-Based Control::
	
	This is the package that should be used for making little movies
	and whatnot:

	It is written in C++ and uses 1 IMSL routine, so the compiled
	version is included. The IMSL routine solves a 3rd order equation
	and should be easy to write yourself.

	Anyway: to start the program type: test

	A query box will ask if you want to Connect via INET, if yes
	then you can interactively view you animation work (just like the
	previous example with the SLider Controls), if you hit no
	then instead of sending information to the Renderer it is written
	directly to a disk file which can be read later by the Rendering
	system (using the "Play File" button).

	Assuming you type Yes and have pushed INET Connect on Renderer Panel:
			
		hmm...this part really needs a manual but, the Control
		panel buttons due the following:

	Load:	Load a scene description from disk
	Save:	Save a scene description from disk
	
	* WHen a scene is loaded it will be listed in the List of boards.

	The Current board is the one now being viewed (almost always).
	To View a board, listed in the lower box (default list only
	contains "Scratch", simply click on the name.

	When loading scenes check the directories: Control/Scenes and
	../Scenes for some examples.
	
	For this example case: Click Scenes, then choose  Blank2
	"Blank" should appear on the board list.
	Click on the work Blank and a bunch of	splines will appear.
	
	Each spline is mapped to one or more facial animation paramets.
	Now, alot of the splines are mapped to two muscles, left and right
	side of the face, so mostly symmetric expressions are created.

	Each little window has the following:
		Yellow control points
		Red Spline

	The X-axis corresponds to time, the Y axis corresponds (generally)
	to muscle activity level (high is muscle pulled, low = no muscle)

	RIGHT MOUSE:	Moves the control points under the mouse
	MIDDLE MOUSE:	Adds a control points, or if clicked on top
			of an existing point deletes it.


	Back to the control panel:

	The evaluate control panel send the entire script
	to the renderer for display.

	Preview scene let you look at still frames of the
	animation.

	Display Control: Some utilities for viewing the splines,
	now each spline is scaled in realtion to itself.

	Append:	Appends a board to the current board.
	Prepend: Same but prepends.

	Reset Script:
		- resets the script, this is old and hasn;t
		been updated, I wouldn';t use it.

	There are head position controls and eye controls, since
	the program is modular it is easy to add new controls for stuff.




** Note: The camera position and head rotation are independant.
	That is: your script may rotate the head, but you can view it
	from differnt camera angles just like real life (tm),


Well, This really isn;t fit for public release yet,
	if you have any questions:

	stevef@csl.sony.co.jp


	

	



