Shop Forum More Submit  Join Login
×

This update is to correct a bug in anm_import module which prevents the script from loading an animation if it contains no bone animations.

You can download the zip from my dropbox (I hope) and replace the module anm_import.py in the Blender scripts folder with the one in the zip, or you
can simply correct the error yourself by editing the script you have.

About line 382 in anm_import.py you should find the command raiseIOError "No Bone Animations Loaded."  This should be deleted or commented out.  It was put there by me for debugging purposes and I forgot to remove it.  Sorry about that.

Also, I have added a user note to the readme file.

User Notes:

If you are using the gui, before reloading the Blender default settings, stop the script by hitting escape in the gui.  Failure to do so may lead to Blender crashing when you attempt to execute a tool from the gui.

I have been using tmg_gui for  awhile now, and while it is not ideal for all purposes, I find that it can be a great time saver for many repetitive, routine tasks.  You might be surprised how much time we spend in the file selector navigating through the various folders.





The Vintage Aircraft Package has undergone a complete overhaul.

This package  uses the new JN4 "Jenny" model by Beowulf71 which is optimized for
The Movies Game.  Since this model is incompatible with the old Berringer model,
this is intended as a complete  replacement.  All future scenes for this aircraft
will be based on this model.  All meshes and textures for the old model should be
discarded.

The update is available at lefty2000.com/TheMoviesGame.

From there, go to My Scene Mods to download the complete package (rev 3).



Jenny V00 by lefty2016



This is a follow up to the previous article, "TMG Category Files" in which I had concluded that if you wish to add a new costume to a category, you need the game category file so you can edit same and add your costume to the list.  Unfortunately, no one seems to have those category files;what we have are the category files from the baseline game which do not include the S&E costumes.  One solution is to add the S&E costumes to the list when you add your mod.  That way you will have your mod and not lose any content from the category.  This is easy if you can figure out the costume file names (*.cos) for the corresponding S&E costumes.  There are only two S&E costumes in category_military, and they were easy to identify, f_pilot_us_nam, and m_pilot_us_nam, so it was easy to reconstruct the .ini file for that category. 

Foolishly, I then set out to recreate all of the category_.ini files for all categories so I could add new costumes to any category without losing any S&E costumes.  Also, MED would then be able to recognize those costumes and they could be extracted from the game for editing if so desired.  Alas, it turned out to be a harder task than I was willing to undertake.  Some categories have quite a few S&E costumes and the *.cos files are not so easy to identify.  It's possible, but it would be a lot of work.  It would be nice if someone would do that, but I decided to look for another solution.

One possibility is to avoid messing with the category files would be to create new categories for your modifications, so I decided to try creating a new category called "Fantasy" in which I would place giant and dwarf costumes.  I looked at a couple of examples I had of mods people had made which created new categories and tried to follow the apparent recipe, but for some mysterious reason, the game would not recognize the new category.

I had added the  following to category.ini:

[category_fantasy]
    cat = Fantasy

It took awhile to figure out what was wrong.  What was wrong was that I did not understand what that second line was for.  I had named my category definition file "category_fantasy.ini"  That second line was supposed to tell the god damned game what god damned file to load.  When I finally realized my error, and renamed "category_fantasy.ini" to "Fantasy.ini," the category appeared in the game.

But Lionhead wasn't done with me yet.  After a successful test run, I was prepared to celebrate having learned something, so I started shutting down the game.  Instead of a graceful exit, however, I got that dreaded message from Microsoft: "Your stupid program has stopped working."  That's not supposed to happen!  I could not live with that.  So I  abandoned my attempt to create a new category Fantasy for several months, but finally I decided to try again, with a different category called Aviation which would include Beowulf's new aviator costumes.  The same thing happened, the new category worked fine, but the game crashed on exit.  After some experimenting I found that problem is caused by having a costume appear in more than one category.  I removed Beowulf's costumes from the category military and the crash on exit went away.  I restored my category Fantasy, removed the giant and dwarf costumes from where I had originally installed them, category_future and category_monster (giant gorilla).  No more crash on exit.

We learn from our mistakes if the consequences are serious enough and we can learn from the mistakes of others.  Also, it is a good idea to write down what  you have learned in case you forget it.  That's what this is.

The category files are loaded from the PAK files, if there is no corresponding category file in the game directory.  If you wish to add a new costume to this category, you will need to copy the baseline category file to the game directory and add your new costume to it.  The name of the new costume is the name of the .cos file, without the suffix.  For example, f_pilote.cos would be listed in the category_military.ini file as "f_pilote" and "m_pilot.cos" would be added as "m_pilot." 

If there is no category_military.ini file in the game directory, the game constructs one from the PAK files, but we do not know exactly how it does this.  What we do know, is that if you have "stunts and effects" installed and there is no category_military.ini file in the game directory, there will be 2 new costumes added to the original game, the m_pilot_us_nam costume and the f_pilot_us_nam.  The baseline category_military.ini file does not include these two costumes, so if you add a new costume to this category, you will need to add the S&E pilot costumes to the list as well as your new costume.  If you do not do this, when you add your new costume, the S&E costumes will disappear from the game, but your new costume will appear.

This is probably true for any category, so if you modify any category file, be sure to check to see if all of the S&E costumes are explicitly listed before you copy your new category file to the game directory.

If you use Movies Editor to extract the category files from the PAK files, you will find that the category file extracted does not necessarily include the S&E costumes.  Again, if you need to create a category file for a mod, you MUST explicitly enter the names of the S&E costumes in the new category file in addition to your new costume.

Blah, blah, blah.

More bad news.  The Blender 2.4 manual is no longer listed in Blender Wiki.  I have searched the site for it and have not been able to find it.  The 2.4 blender python API was still there, as of this morning.  I happened to have on my hard drive a PDF version of the manual and you can obtain if here.
I am out of ideas, so I am making the prototype tmg_gui package available for download.



There user will need to modify the code to configure the script for his computer environment, i.e., he will have to enter the locations of mesh files, anm files, and applications into the code.  Hopefully, the enclosed readme file will explain what you need to do to make the script work on your computer with your setup.



Gui Screen by lefty2016

I have added a few more buttons to the Prototype Movies Game Graphical Interface for Blender.  These buttons allow you to run an external application from Blender.  There is a button for The Movies Editor, FLM Reader, and The Movies Game.  These buttons can be handy, but the downside is, you can use only one tool from the GUI at a time.  If you start an application, you have to close it before you can do anything else in Blender.

This afternoon I tried using the GUI to do a real job, something I have been putting off.  The new JN4 airplane model by Beowulf71 is great, but the geometry is slightly different from the old model, which sits closer to the ground.  In order to replace the old model Jenny with the new model, some adjustment to the animation files are necessary, so I decided to update the plane_warmup scene to use Beowulf's model.

To make a long story short, it worked.

You can take my word for it, or, you can watch this rough cut video of the whole process.

It took three tries to get it done, and there were a couple of Blender crashes, but I am used to that so I am not deterred.
Some of us have been kicking around the idea of using Graphical User Interfaces (GUI's) to help structure and improve the work flow (at least in part) of modifying content in the The Movies Game.  Recently, I decided to put some effort into studying the way GUI's can be implemented in Blender (2.49) using python.  This article describes my first attempt to put together a GUI to perform some basic tasks; it is not complete and will probably need to be redone in the future, but it is a work in progress and represents an opportunity to explore some of the capabilities and pitfalls of GUI's in Blender.

The script is called "tmg_gui.py" and you start it by opening the file in the text window and executing it as a python script.  The first screen shot shows the GUI running in an empty scene.

Ss Gui 01 by lefty2016
Figure 1:  The GUI is started in an empty scene.

The GUI script draws a bunch of buttons and labels in the python console window, then sits there waiting for something to happen, such as a mouse or keyboard event.  As you can see, there are currently 10 buttons.  The current blender directory is displayed as text above the buttons.  The first four buttons allow you to choose one of four predefined directories as the current blender directory.  The idea is to save some of the tedium of navigating around your hard drive in the File Selector looking for files.

The remaining buttons are there to perform a function by running some python code.  For example, if you press "Import Mesh" the GUI will run a script to import a movies game mesh file (MSH).  The script used here is virtually identical to msh_import_2009.py, but a few lines of code were changed to make it a module which can be imported into the GUI program.  With the current directory set as shown, if you press "Import Mesh" the file selector window will open in the Blender program directory and you would then have to navigate to the folder where your meshes are stored.  Instead, you can press one of the first two buttons under "Default Folders" to set the Blender directory to one of your default mesh folders.

I have the Game Meshes button pointing to "C:/TMBlender/data/meshes" which is where I keep a copy of all the mesh files extracted from the game.  The Modified Meshes button points to "C:/The Movies/data/meshes" which is where you place your modified meshes to make them available in the game.  Let's import Woody to simulate an action we might take in creating a mod.  First, press "Game Meshes."

Ss Gui 02 by lefty2016
Figure 2: Press Games Meshes sets the Current Directory to folder containing unmodified game meshes

Nothing much happens except the window now indicates the Current Directory is "C:/TMBlender/data/meshes."


Ss Gui 03 by lefty2016
Figure 3: Pressing Import Mesh causes the file selector to open in the current directory.

Let's just type in "woodenman.msh" and get on with it.

Ss Gui 04 by lefty2016
Figure 4: Select the MSH file to import just as you normally would


Ss Gui 05 by lefty2016
Figure 5: It worked!  So far so good.

Now let's try the TM Preflight test.

Ss Gui 06 by lefty2016
Figure 6: TM Preflight Test results displayed in the browser.

This is basically the standard tm_preflight.py script, slightly modified to be run as a module inside the GUI.

Ss Gui 07 by lefty2016
Figure 7: Pressing the "Game animations" button sets the working current blender directory to our animations folder.

Ss Gui 08 by lefty2016
Figure 8: Press "Import ANM" button and the file selector opens in the current directory.

We select the idle_male.anm file for import.

Ss Gui 09 by lefty2016
Figure 9: The idle male animation is imported.

What you have seen is no more than a crude prototype, a test module, intended to illustrate some of the possibilities for use of Blender GUI's for managing and modifying The Movies Game digital assets.  I don't plan to distribute this very early version but I would like to hear from potential users of such a tool and find out what ideas and suggestions they might have for future development.

Thank you for reading.

PS:
I am including a copy of the "gui_example.py" script which demonstrates basic functionality in Blender GUI's such as a toggle button or a text input capability.  This is the template I used in starting the development of the prototype described in this journal article.
#---------beginning of code
import Blender
from Blender import Draw, BGL

mystring = ""
mymsg = ""
toggle = 0

def event(evt, val):    # the function to handle input events
    global mystring, mymsg

    if not val:  # val = 0: it's a key/mbutton release
      if evt in [Draw.LEFTMOUSE, Draw.MIDDLEMOUSE, Draw.RIGHTMOUSE]:
        mymsg = "You released a mouse button."
        Draw.Redraw(1)
      return

    if evt == Draw.ESCKEY:
      Draw.Exit()                 # exit when user presses ESC
      return

    elif Draw.AKEY <= evt <= Draw.ZKEY: mystring += chr(evt)
    elif evt == Draw.SPACEKEY: mystring += ' '
    elif evt == Draw.BACKSPACEKEY and len(mystring):
      mystring = mystring[:-1]
    else: return # no need to redraw if nothing changed

    Draw.Redraw(1)

  def button_event(evt):  # the function to handle Draw Button events
    global mymsg, toggle
    if evt == 1:
      mymsg = "You pressed the toggle button."
      toggle = 1 - toggle
      Draw.Redraw(1)

def gui():              # the function to draw the screen
    global mystring, mymsg, toggle
    if len(mystring) > 90: mystring = ""
    BGL.glClearColor(0,0,1,1)
    BGL.glClear(BGL.GL_COLOR_BUFFER_BIT)
    BGL.glColor3f(1,1,1)
    Draw.Toggle("Toggle", 1, 10, 10, 55, 20, toggle,"A toggle button")
    BGL.glRasterPos2i(72, 16)
    if toggle: toggle_state = "down"
    else: toggle_state = "up"
    Draw.Text("The toggle button is %s." % toggle_state, "small")
    BGL.glRasterPos2i(10, 230)
    Draw.Text("Type letters from a to z, ESC to leave.")
    BGL.glRasterPos2i(20, 200)
    Draw.Text(mystring)
    BGL.glColor3f(1,0.4,0.3)
    BGL.glRasterPos2i(340, 70)
    Draw.Text(mymsg, "tiny")

Draw.Register(gui, event, button_event)  # registering the 3 callbacks
#----------- end of code

Run the script in a text window so see what it does.
KateWilson by lefty2016

"Kate Wilson" is a Blender implementation of one of my "Starmaker" heads.  I used the the head import script from Sexymaria to import the mesh, but all that gives you is the mesh shape and armature; you need to reapply the materials and textures yourself.  The hair is a a separate mesh, which you have to import using the standard mesh import script.  You can find out the mesh for the hair by viewing the starmaker info file that comes with the head in a hex editor and you can look at the star.hd file in your hex editor to find out what texture is used for the face.

I deleted the "eyelids" mesh for the head; no one has figured out how to make that work as far as I know.  The first real problem was the eyebrows because the basic face texture had none.  I found the eyebrows textures in the data/textures/makeup folder, but the starmaker files did not have any reference to a makeup texture, as far as I could see.  The makeup is probably an integer entry in the starmaker file, but the format of the file is not completely been decoded.  However, there is a slider on the "facial features" page that selects the facial hair and eyebrows.  The first position appears to be "no eyebrows" but slider was set for the second slot when I checked it, so that is probably the first of the eyebrows makeup textures, which is named "mup_feyebrow_v00.dds." 

One way to apply the eyebrows in blender is to use texture stacking in which you add an additional texture layer to your material.  The "mup" texture is transparent except where the facial hair goes, so if you apply it over the face texture, you get nice eyebrows.  I tried that and it works fine, but I decided it was easier to just create a texture externally that already had the facial hair applied.  You can do that in "paint.net" rather simply.  The face and mup textures are exactly the same size, so if you open the face texture in paint.net, you can import the mup texture as a second layer.  You then merge the layers and save the result as a single layered texture with the eyebrows applied and use that in blender to texture the face.

The UVW map for the eyes was edited to change the eye color from the default brown to blue.

Finally, I added some lamps to erase unwanted shadows, set up the rotation and exported the animation using AVI CodeC option in the render window.  I used the free version of Camtasia to convert the AVI file into a GIF. 

Good fun for a leisurely Sunday.
When creating an animation in Blender, it is convenient to parent a prop such
as a gun or sword to the hand bone so the prop will automatically move as the pose of
the figure changes.  The Movies Game, however, does not do things that way.  The animation
of the armature and the animation of the carriable prop are separate blocks of data treated
independently and called Bone Animations and Static Animations respectively.  In order to
export your animation from Blender to The Movies game, you must convert your completed
animation to the same structure.

This can be done using a python script I found in the Blender2.4 manual and adapted for this purpose.

A detailed description of the method is available at lefty2000 (The Movies Game)

Click on the link and read the article "Converting a Bone Animation to a Prop Animation."

Acknowledgement:
Thanks to TheMoviesGame and Beowulf71 for their valuable contributions to this development.
Apparently good lighting is crucial to get nice scene renders in Blender.  What I would like to be able to do is produce renders in Blender that are similar to the results you get in The Movies.  This would allow one to mix media between The Movies and Blender without it being too obvious.  One trick that I stumbled on uses the "emit" adjustment for blender materials.  The following images show a similar scene rendered in two ways:  One with the materials for the main figures set to Emit=0 and, using the same lighting, adjusting to Emit in the range .4-.5 for each of the materials in the figures.


Horse Walk.00 by lefty2016
Emit = 0.
The lighting scheme is really simple: there is a single spot light to give a nice solid ground shadow.  The ambient light parameter (Amb) was cranked up to around .5 for each of the materials in the figures, but it seems to have no effect that I can see.  Maybe something else is not set.





Horse Walk by lefty2016

Emit ~ .4 to .5
The other light settings are unchanged, but just cranking up the Emit parameter on each material brightens up the figures and softens the shadows.  No single setting worked best for all materials; the setting varies a little for each material.

This scene was created by importing the movies animation wes_horse_rider_walk.anm using importanm(5.1).py.  This is one of those animation files that imports very easily; it includes an animation for the human actor and the horse prop.  I used the append setting in the ID property browser and imported enough copies to yield about 5 seconds of video at 25 frames per second.  One tricky problem is that the actor costume must be loaded first,followed by the horse prop.  The script processes the armatures in the order they are stored in blender data.  If you import the horse first, the script will try to apply the animation data to the wrong armature.  I need to fix this someday.

The animation produces a "walk in place" but if you look in the ID property browser and look at the "destination" location, it will tell you how far the container empties need to move for each cycle to produce a nice walk with no foot slipping.

I made three clips at different ranges and spliced them together to make a 40 second video of the rider walking her horse through the forest.  The forest texture is from the game; I attached it to a plane for a backdrop.  The texture for the ground plane is also from the game, it is one of the standard grass textures.

The Video

The video was edited together in Camtasia.  I borrowed the forest ambience sound from the game and added a soft Gaelic themed mp3 I had on my hard drive.
I wanted to import my female pilot character into Blender and do some renders, so I imported the costume mesh.  The default texture rendered thus:
Female Pilot Costume 1 by lefty2016

But I wanted to change the color to option 3.  I tried the obvious thing which was swap the texture for the cover-alls.  This is what I got:
Female Pilot Costume 2 by lefty2016

Argh!  Now the coverall is green but so are the boots and her hands!  That's not gonna work.
While fiddling around with the green texture in the UV image editor, I noticed that when I clicked on the image (in object mode) a little box came up which displayed the RGBA values for the selected pixel.   And the pixels for the hands had an alpha value of 0, which is transparent.  It now seemed obvious that The Movies graphic engine is stacking the textures, so I had to find out how to do that in blender to reproduce the costume.

The answer is in the Doc 2.4 manual (wiki.blender.org/index.php/Doc…)

Following the text, I restored the default costume texture, then added a second diffuse texture that was linked to the green texture, on top of the original texture.

Female Pilot Costume 4 by lefty2016

If you look in the texture tab at the lower right of the screen shot, you see two "diffuse" textures.  The green texture is the second one so it is rendered on top of the red one, but the hands and boots show through the transparent portions of the green texture.

It renders thus:

Female Pilot Costume 3 by lefty2016

This is a fairly simple example, but some of the other costumes are more complex.  I am trying to import the cheerleader costume to blender.  That's not hard, but the default texture has long sleeves and I wanted short sleeves.  I am still struggling with that one.
Where it's at

My Scene Mods:
   Review -- A commander reviews his mounted troops
   2 Vintage Aircraft Scenes -- start the engine and warm it up.
   Dwarf Inspection -- A commander inspects his/her dwarven troops (dwarf costume and anm included).

My Hats Mods:
   Vintage Aviator Helmet for civilian pilot costume (goggles up and goggles down)

I was planning on including my Giant mod, but I am missing the FLM file.  I'll have to reconstruct it before I can upload it.
Start And Warmup  by lefty2016



The Video

I finally have two vintage airplane scenes working in The Movies Game.  One is a scene in which the plane is hand propped to start the engine and in the other the two pilots are sitting in their cockpits while the engine idles.  Click on the link to see a demo.  Turn on your sound to get the full effect.

All of the files needed for these two scenes (excluding the set dressing) can now be downloaded at lefty2000.com.  The set dressings (hangar props) came from sexymaria.
The Movies animation files (*.anm) contain bone animations and prop animations.  Bone animations use an armature and the location and orientation of each bone is specified for each frame in the animation.  Since most armatures have lots of bones and animations can have hundreds of frames, that amounts to a lot of data.  In order to save space in the files, the key frame data is compressed to fit into a 16 bit signed integer.

    int16 = float/compression

where "compression" is the largest absolute value in the data.

For rotation data, the range of angles is restricted to -180 to 180.  The compression factor is 180, so all stored values are between -1 and 1.  Since any angle can be reduced to the range -180 to + 180, the compression value for angles never changes.


For location data, however, the situation is more complex.  It is desirable to use as small a compression value as possible because that gives more precision in specifying location, but in any case, the compression value must be set so that the compressed values all lie between -1 and 1.  The solution is to scan the location data for the animation, find the largest datum, divide all values by the largest absolute value, and save that value as the compression factor.  When you read the data from the file, you only have to multiply each compressed value by the compression factor to recover the original floating point data (with some loss of precision).


When we edit an ANM file, it is easy to exceed the dynamic range allowed by the original compression factor from the file we read in.  If the compression factor is too small, the out of range data will be truncated to either -1 or +1.  While working on my airplane prop animations, I was forced to deal with this problem because when I tried to put a pilot in the front seat of my Jenny prop, I could not move him high enough off the ground without exceeding the dynamic range of the compressed data.  I had to hack the target file to increase the compression factor.

However, a better way to avoid data truncation problems is to modify the export script to compute the best compression factor for each animation and use that to output the modified ANM file.  You can then freely move the character or prop around the stage, or up and down.  The downside is that the higher the compression factor, the lower the precision of the stored data and closeups might get a little jerky, so don't overdo it.

The bottom line is a new version of anmexport (v. 5.1.4) is now available which will compute the optimum compression factor for each animation in the target file.  You can download the latest package with the updated anmexport script at the link below:

The Movies Game
One of the tasks associated with scene editing is re-positioning and reorienting
actors and animated props on the set.  Scene Re-blocker is useful if you want to move
an entire scene or rotate it by some amount.  FlmFileReader (aka flmreaderzero)
permits one to obtain numerical data on the locations and orientations of objects in
the scene and edit that data.  Calculating the scene coordinates can be tedious, but
while working on my airplane startup animation, I stumbled on a useful trick.
Navigation within a scene is controlled by Action blocks or Mopath blocks.  The action
block specifies an animation to be played as well as a position and rotation.  The
Mopath block specifies an animation to be played and start and stop positions and
rotations.

We can "setup" a scene's elements in blender by importing the mesh objects for the
actors and props, and then positioning them using the data obtained from
flmreaderzero.  The position coordinates are in meters, and the rotation value is in
radians, so convert rotation to degrees and enter them into the Transform Properties
menu. You can then relocate any actor or prop in your blender scene and then read the
set coordinates directly from the transform properties menu (hotkey N) in object mode.
You can then enter these new coordinates into the action block in flmreaderzero and
save the FLM file.

Here is an example.  I wanted to move the pilot in my airplane scene to the nose of
the plane so he could hand prop the engine.  The coordinates of the airplane prop at
engine start up were x = 2.418 meters, y = -7.85 meters , and rotation = 2.566
radians.  In blender you can import the airplane prop and position using these
coordinates.  Next, take woody, and place him at the nose of the plane, like he was
going to hand prop the engine.  You can then read the required coordinates from the
Transform Properties menu.

It works pretty good.

Before, the pilot is posed for the helicopter:
Tailsitters by lefty2016


Blender setup:


Blender Setup by lefty2016
We pose the pilot in front of the plane, ready to hand prop.  The Transform Properties menu gives the
coordinates to be entered into Action Block 645.  Replace "heli_pilot_startup.anm" with the new edited
animation and save the FLM file to the Movies game folder.

After reposing the pilot at the front:

Plot Startup by lefty2016


A similar procedure can be used to move the passenger into the front cockpit where
passengers belong in the Jenny.

This is a lot faster than my old technique of cut and try, cut and try, cut and try.
 
This is the third in a series of videos on creating prop animations using helicopter animations as a template.  The original scene is heli_rotor_start.flm which shows a helicopter starting up before flight.  The scene uses two animation files, heli_rotor_start.anm and heli_rotor_idle.anm.  The first animation shows the rotors beginning to turn at low speed, then the second animation shows the blurry rotor which represents the rotor turning at high speed. 

In the course of the video, we will take our jenny airplane prop, which consists of a fuselage and a propellor, add the blurry rotor to it, and then edit the animation files to show the airplane propellor spooling up and then starting to idle at high speed.  Basically, we are dismantling the helicopter model and the airplane model, and then reassembling a new airplane model than contains three parts, a fuselage, a propellor, and a blurry rotor which represents the fast moving propellor.

Once an animated prop is created in this way, you can take any helicopter animation file and modify its animations to animate your new animated prop.

Mod Madness Part 3

Scripts used in this project are:
msh_import_2009
msh_export_2009
importanm(5.1)
exportanm(5.1.1)
The previous journal entry presented a video called Helicopter Morph to Airplane which outlined the different phases of transformation of a helicopter scene into an airplane scene.

The next video, Mod Madness Part 2, gets into some of the nitty gritty about making these transformations.
The heli_rotor_start.anm animation file contains animations for the rotors in both discrete and blurred form.  It also contains animations for different kinds of helicopters.  The group names are used to match the animations to the objects that are to be animated.  You can have animations in the anm file that are not used if the object they apply to, identified by group name, are not present in the mesh.  An object can also have a flag to make it visible or invisible.

There are 12 static animations in "heli_rotor_start.anm," one for each of the 12 animatible objects.  You can replace any of the mesh objects with your own mesh and you can edit the animations as desired.  You can delete any any mesh object you do not need and the unused animations in the ANM file will be ignored.  This scene is a great template for building new scenes with special effects.

My current project is to develop a process for creating complex prop animations starting with the helicopter start scene and a feasibility study shows that it is a practical way to proceed.

Lessons Learned:

1. Don't forget to create an extrainfo file for your mesh if you are going to animate it.  If you do not do this, the prop will appear, but it will not move.
2. Don't forget to create a propblueprint file for your prop, or it may not show up in the game.

The accompanying video shows a series of steps gone through to morph a helicopter scene into an airplane.  The process is not complete and detailed instructions are not included.  This is a feasibility study and an attempt to show the way forward.  More information will be provided as time goes by.

Helicopter Morph to Airplane
Talking Head Video

The link will take you do a demo of a lip sync test of a script for importing papagayo lip sync files in MOHO format into Blender and applying them to Movies Game heads.  As described in my previous journal entry, I created lip and jaw poses for a head (it was generic_facial_skin) to match the "Moho mouth" pictures.  I then saved the rotation and location data and wrote a script that would read the papagayo file and set the face bones according to the MOHO switch codes.

It appears to work, but I learned to my dismay that it works best for the head you use to create the original face poses.  I used generic_facial_skin to create the face poses, but when I applied them to a starmaker head they looked okay, but not quite the same and not as good.  So perhaps it will be necessary to customize the face poses for different heads.

The system works like this:

1.0 Create 10 facial poses for the MOHO mouths

Moho Mouths by lefty2016

in frames 1-10 of blender using whatever head you want (warning: you need to reassign
the lower teeth vertices to the fa_jaw group so the teeth will move with the jaw).

2.0 Run a script (generate_visemes) which writes out some python code to initialize a viseme dictionary.  This code is  pasted into a script called importmoho.

3.0 Run papagayo to create a moho switch file for a line of dialogue.  Use the graphical user interface to align the words with the waveform of the sound, then export.

4.0 In Blender, load your head (with teeth regrouped to jaw) and run importmoho to animate the head.  You can import the wav file you used in papagayo into blender using the sequence editor.  When you play the timeline, you can see the lips move and check out the timing.

At present, the script only uses a subset of the headbones, those around the lips and the jaw bone.  You can load another animation and apply the lipsync animation on top of it without affecting that which has already been loaded.

You can download papagayo for free and use it to create your lip sync animations.  I will make the python scripts generate_visemes.py and importmoho.py available for download once they have been adequately tested.
My original intention when I got involved in The Movies Modding was to use the game content as a source for graphics assets to make animations and ultimately videos using Blender.  We can import props, sets, costumes and character heads from the game and now we can also import costume and prop animatiions, including horses, dogs, and so on.  The one big thing the game does we cannot yet do in blender is recreate the facial expressions and lip syncing that the game can do, so I am looking into the possibility of using conventional methods to provide these capabilities for Blender animation using The Movies assets.

The Movies Game heads imported from Blender come with bone controls for facial features which are presumably for the purpose of creating expressions and lip syncing.  There is a free program called Papagayo which can be used to generate a file with a list of frame numbers and phonemes from text.  It includes the capability to import a sound file to assist you in  aligning the phonemes with the sound track.  The package includes a set of images which show the mouth expressions for the various phonemes.

These are called "Moho Mouths" because the program is intended to interface with the graphic animation software Moho.  Some animators use this software to lip sync in Blender using a script that reads the Papgayo output file.

Here is an example of the output, which is the line: "I....I forgot where I parked my car."  The numbers are frames and the letters are the names of the phonemes.

MohoSwitch1
2 AI
6 rest
21 rest
22 AI
23 rest
23 rest
24 FV
26 E
28 etc
31 AI
33 etc
35 rest
35 rest
36 WQ
38 E
40 etc
42 rest
42 rest
43 AI
45 MBP
47 AI
49 etc
56 MBP
59 AI
61 etc
63 AI
66 etc

Here are the mouth expressions for each phoneme.

Moho Mouths by lefty2016

So what we need to do is create facial poses for each of the 10 Moho phonemes, using the pictures as a guide, and
write a script to set the face pose for each of the key frames in the Papgayro output file.  If we are willing to be really cheesy, we could just create two poses, moth open and mouth closed.  Do you think anybody would really care?  Probably not.

One thing I noticed looking at The Movies heads is that there is an object consisting of teeth with a "throat" backdrop.  In the game, when the actors talk, the lower teeth move.  The teeth, as imported into Blender are weighted to the controls for the lower eyelids for some reason.  I don't understand that.  If you reassign  them to the jaw control, the lower teeth can be made to move up and down like the chin, which makes sense.  There are bones to move and reshape the lips as well as move the jaw up and down, so by regrouping the lower teeth to the jaw, there is sufficient control to reproduce any of the above facial phoneme expressions.