Shop Forum More Submit  Join Login
I usually run "The Movies Game" in sandbox mode since most of them time I am using it for testing mods or making movies.  Even in sandbox mode, however, with the year set to 2000, not all of the hidden assets are available for making movies.  I reached out the community for a solution and the answers have come back, so I am writing this article in order to make this information more widely available.

A specific hidden asset, such as a set, can be made to appear even though the game conditions for unlocking it have not been met through game play.  The way to do this (thanks to benreally for pointing this one out), is to import the set using the Movies Editor from DCModding, rename it, and commit it to the game as a mod.  I have used this method successfully on a couple of examples of hidden sets:

Suburban Diner
Rural Forest

There is also another method using a script called "Unlocking.ini."  The zip file contains directions, but the tricky part is finding the Lionhead appdata folder where the Unlocking.ini is to be installed.  The problem is that the location of this folder varies a bit with your operating system, so the path may be somewhat different from the example given by Vemkeit.

I installed the script, and the original suburban diner and rural forest sets did appear on all of the relevant menus in the game.  I cannot say of my own knowledge that it unlocks everything, but it did work for these assets.

Merged by lefty2016

Camtasia is available in a free version and is a very useful tool.  It not only allows you to capture your computer screen in full motion video with audio, it is also a great video editor and has lots of special effects that are very easy to use.

In the above scene, Sam The Investigator meets Giganta, who is in colossal form, while he is standing on the roof of a castle in the highlands of Africa.  The foreground and background shots composed a short mini movie of two scenes which was exported from the game and edited in Camtasia.

In the Game:

First set up the foreground and background shots in the advance script writing facility.

Foreground by lefty2016
The foreground scene is on the castle roof set (mod by Sexymaria) with the backdrop set to bluescreen.

Background by lefty2016
The background scene is on the blue screen set with the backdrop set to one of the backgrounds for the roof castle set.  To get the perspective right, you can flip back and forth between the two sets in the Advance Scriptwriting facility  and tweak the free cam position until the perspectives appear to as desired.

When ready, shoot the movie and export it as a WMV file, which is then imported in Camtasia.

In Camtasia:

After importing the WMV media, you can cut the film between the foreground and background shots, place the foreground on track 2 and the background on track 1 and line them up.  To blend them, drop a "remove color" widget from the video effects menu on the left and drop it on the foreground track.  A color chooser will appear on the right when the clip is selected and you can use the eyedropper tool to select the blue area in the foreground shot.  The blue becomes transparent and the background video appears in its place as you play the video.

It is easy and it is fun.  The movies game images appear to mix together quite well without aliasing effects.

I wanted to modify the treasure chest scene to have someone open the treasure chest and find a baby inside.  Maria published instructions on modding the treasure chest props, but I could not find them on the wayback machine; I found a link that looked promising, but it led back to her vanished page here at deviant art.  Consequently, I had to start from scratch but emboldened by the knowledge that it was doable.

The first thing I did was hunt through the game files looking for the names of the files that specify the prop that appears in the treasures chest.  Skipping over my missteps and restarts, here is a list of the files you need to know to implement such a mod:


The file "statue.ini" appears to be a list of props for the treasure chest scene but it initially contains only one item, p_statue_interior01.  To add another prop, open statue.ini and add a line reading: p_statue_interior02, then supply appropriately named file equivalents for all the other files in the structure using the same names but with a number 2 instead of a 1.  All of the files except the mesh and texture files can be created by copying the 01 file and renaming it with the number 02.

To add a game prop to the list, copy the mesh file and rename it according to the naming convention with the number 2.  Likewise, copy over the textures and rename them as well.  The trickiest bit is the mesh file.  The prop I used, p_baby, has an armature.  I imported the prop to blender and removed the armature and the vertex groups.  I also had to change the groupName field to match that in the statue prop, "statue_ca_."  You can do this in blender before exporting, or you can do it later using a hex editor.  This field must match for the prop animation to work.  The orientation of the mesh object will need to be adjusted before exporting to match the orientation of the original statue prop.

Once all this has been done, you can copy over the data structure to the game folder and it will work.  I could not use MED to commit the mod to the game because I could not get MED to recognize the new prop in the workspace.  Adding a prop ini file to the set dressing folder did not work and that is a mystery to me.

However the manual procedure described above did work.      

Version 6.2 of the ANM import/export scripts can be downloaded from….  This version enables the control2_arm location data for both import and export.
Otherwise, this script works the same as version 6.1.

Great tutorial by Ben Tuttle

Linda As Giganta by lefty-2000

I wanted a version of the Giganta costume which had Linda Paloma's face and skin tone, but had its own head so it could be used in either Blender or The Movies (TM).  I found the face texture I needed and hunted through the skin textures till I found the matching skin.  I then imported the headless version of the costume and appended the starmaker head to the scene.  After moving the head object over to the costume armature, I found that the neckconnect vertices did not match up too well and they separated when the neck or head was moved.  I dealt with this problem by removing the neck and head vertex groups from the neckconnect vertices for both the head and the body.  I also manually went through the slightly mismatched vertices between the in the neckconnect groups and pushed them together.  They are still in separate objects, but after that they moved as one.  I probably should not have bothered, since the choker covers up the neck connect loop.  A high collar or a choker is a favorite expedient used by traditional animators to simplify the problem of animating the head while keeping it connected to the body.   I learned this from watching an interview on TV with a veteran of Hanna-Barbara.  "You know why Yogi Bear has that high collar?" he asked rhetorically.  You can guess the rest.

My original plan was to incorporate all of the accessories into the costume, so in MED, I loaded the bikini costume, deleted all of the accessories and tried to commit the new costume to the game, but it crashed the game when I try to load it.  It soon became clear that you cannot have a valid '.cos' file without at least one accessory, so while the .msh that was exported appeared to be okay, the .cos file could not be read by the game.  So I put back all of the accessories and tried again.  This time the game did not crash, but the body and face were black and the hair was transparent with a outline.  Deleting the optional skin textures that came in with the bikini costume fixed that, which I sorta understand, but not really.  It took awhile to solve these problems, and while struggling along I stumbled on the MED manual which was conveniently located in the MED program file and read through it.   I learned some useful stuff.

I wound up with a configuration that is almost what I am looking for.  The necklace slider works, but the choker is part of the costume, so it does not go away.  The watch slider works and the bracelet is one of the standard options in the game.  The earrings are now part of the costume, so they are always visible.  The hats don't work, which is just as well, since the hair is now part of the costume and with head not enabled in the game, you cannot get rid of the hair.

Since the costume has a Linda Paloma head on it, any actress can wear it and fill in for Linda Paloma when Linda is chilling out at the bar, so Louisa Sopp is taking her place in the makeover department today.

My greatest remaining dissatisfaction is the fingernails.  I don't like the white nails but when you turn off the head you lose the nails slider.

When I made the transition from Poser to blender and The Movies (TM), my intention was to use  blender  to create images and short videos using the 3d assets of the TM.   The legacy tools from DCModding showed how easy it was to import 3d models from TM into blender, but my early experiments, which I reported in my journals here at Deviant Art and I now read with some amazement at my ignorance, showed me that  getting good renders in Blender, especially version 2.49b,  is a technical challenge in itself, although it can be done.

I soon came to realize that there was too much good stuff in the TM user environment to walk away from, at least not for a lone hacker even with a little help from his friends.  Still, I am intrigued by the idea having the capability of being able to combine blender rendered scenes with TM clips without the viewer finding the contrast too disconcerting.  You could do in Blender stuff that was easiest in Blender, and you could do stuff that is easiest in TM in TM.

If you import a set into blender 2.49 and render it starting from default settings, it does not look very good.  You can play around with the materials settings and the lighting and make it better and I have no doubt that ultimately you can get very good results, but the resulting scene will not look  the way it would in TM.  The question remains: how to make blender recreate the graphics environment of TM?

The other day, after an exchange of notes with MDBoing about materials and textures, I suddenly realized that TM did not appear to be using light sources the way Blender does, so I posed the question to MDBoing: Does The Movies use ray tracing?  He replied as follows:

"You are right, ray tracing is not used. most static lighting effects are baked/drawn in the textures. the reflections are fakes with the help of the alpha channel and some basic reflection environment maps. the lighting of the sets is fueled by light-maps (more like shadow maps) and i believe the only dynamic shadows are set by the actors and certain props. There might be a point light source somewhere in the game universe , a sun if you will and its sole purpose of making dynamic shadows."

Following up on this information, my first experiment was to import the rural field set from TM, and turn off the light sources.  Of course, when you do that, you get nothing but black.  So I turned on ambient occlusion in the world data editor (click on the world object in the outliner) and played with the energy setting.  It didn't look too good, but interestingly enough, if I imported the scene with the set into blender2.79 it looked a lot better, after some minor tweaking.

249vs279 by lefty-2000
The world buttons for Blender  2.79 are a little different, and there I did not turn on "ambient occlusion" but activated "Environment Lighting" instead.  There is a slider that allows you to adjust the amount of the effect and I set it to reproduce something that looks to me a lot like the way this set appears in TM.

Rural Field Tm by lefty-2000

The resolution used in the blender renders is only 800x600,  it would probably look even better at something close to the game setting of 1536x864.

I also tried Blender renders using a costume and for that I needed one with a head.  An attractive candidate was steve45's Ripley Alien mod, seen here on the blue screen set in TM.

Ripley Alien Tm by lefty-2000

I was able to get this with Blender 249:
Ripley Alien Ao by lefty-2000

In Blender 279 it wasn't hard to get this far:
Ripley Alien Lighted by lefty-2000

These blender renders used no point source lighting,  so Ripley casts no shadow here.  The game does not show shadows for props, but it does include some ambient occlusion effects.   Actors cast shadows, but I don't think it uses ray tracing to generate them the way blender does.  The character shadows are a bit simplified so they are probably generated using some simplified figure model as MDBoing suggested in his note.  There is a mesh called shadowman.msh so there is a clue there.

There should be a way to mimic the shadows produced in the game with the right lighting settings in Blender.

In conclusion, the goal of this project is not to produce the best possible renders, but to produce renders that are visually compatible with those in the game.

Grodd Giganta Walking And Talk by lefty-2000

Grodd Has A Plan

We conclude this project with a series of images of our new character in action.  A special thanks to Beowulf71 for his outstanding blender models and textures.
Giganta And Gorillas by lefty-2000
Are We There Yet?

Gorilla Boys by lefty-2000
Saying Goodbye to Her Little Brothers

Taken Aback by lefty-2000
There Is Danger In The City!

Persuit by lefty-2000
Must Not Let that Chopper Get Away!

G Vs Ww by lefty-2000
Everybody Has An Arch Enemy

Living Large by lefty-2000
The Undiscovered Country Lies Ahead

The End

Beo Gig Hair by lefty-2000

Sunday, April 21, 2019 I received the following exciting message from Beowulf71:
"Ok, I've got carried away. I made a new dress, like I would've done if I were the one doing the mod.

"I made the accessories, the boots (from two pairs of boots taken from the game), the bracelet (from scratch), the necklace (from scratch), the necklace can't be like the one from the games, since in the game the necklace are put on the chest, they can follow the chest bone and it's fine, but Giganta's necklace have to follow the neck, but has to be parented to the chest as well... and made the earrings (from scratch)...

"All the accessories work with your dress and my dress.

"Only have the hairs left to do."

The following Wednesday, the greatly anticipated drop occurred and the task of integrating and installing the new costume and accessories could begin.  The easiest to install was the hairstyle; all that was required was to copy a data folder to the The Movies (TM) folder.  This supplied the required mesh and hair textures and the new hairstyle for Giganta by Beowulf71 appeared on the menu.

The next step was to incorporate the boots the Beowulf made.  The costume with the boots has three mesh objects, so it is important to make sure that each mesh object is linked to a separate material.  Next, define the diffuse, reflection, lightmap, and specular textures for each material (only the diffuse is required).  Before you go on, be sure that on the material buttons window that the correct texture image is associated with each material when selected in object mode and that on the Map Input tab, UV is selected.  When creating a new material, blender seems to have a habit of defaulting to Orco instead of UV.  I don't know what Orco is good for, but it doesn't work in this application.
Beo Gig Boots by lefty-2000
Once everything appears to be working, export the mesh to your workspace, then use MED to export the costume to the game.

Now here is the best part: Beowulf71 also made a new dress that is much closer to the original cartoon character.
Beo Gig Dress by lefty-2000
Beowulf71 sent me this model in a blend file.  When I went through the process of exporting it to the game, there were some problems with the mesh tearing.  Beowulf tried to walk me through the process of fixing it, but I failed, so, to make a long story short, I sent him the .msh file and he sent it back in working condition.

Giganta And Grodd by lefty-2000
There is more work to be done with Giganta, but it occurred to me that the gorilla costume makes a perfect Grodd, except for the fact that it has no face armature, so he can't emote or talk.   There is an interesting little problem; how to make a gorilla costume with expressions.  We may get to that later, but the next item on the agenda is to install the accessories.....bracelet, earrings, and necklace. Once that is done, the costume will be complete.

To be continued

Exportable by lefty-2000
After replacing the mesh and texture for the dress with Beowulf71's modified version, I decided to prepare the costume for export to the game so I could see how the dress texture looked in the game.  At this point the preflight test showed several unused texture images were in the blend.  After going through the save and reload routine several times, they all went away, except for the original bikini costume texture.  It took awhile to figure out how to get rid of it.

After hunting around awhile, I discovered that there was a material for the body that had a specular texture definition  referencing that "unused" texture, but the texture type was set to None, instead of image.   In order to get rid of it, I deleted the specular texture type, saved and reloaded, and the image disappeared.  After that, the preflight test was all green.  At that point I exported the mesh to my work space and loaded it into The Movies Editor (MED).

Med View 0 by lefty-2000

I was unable to get the textures to display properly in MED, so after struggling with the problem for awhile, I decided to go ahead and commit the costume to the game just to see what would happen.
Test 1 by lefty-2000

The result looked better than I expected, but in the game, as you can see, the skin texture does not match the head.  I eventually came to the conclusion that the problem was the skin texture that I had used for the body in a misguided attempt to get rid of the bikini top. If you look at the skin texture in Blender's UV image editor, and click on the image, the pixel values at that point are displayed in the lower left of the UV image editor window and after checking multiple locations on the image, I discovered that the skin texture is completely opaque,i.e., the alpha value is 255 everywhere.  On the other hand, the original texture ( is transparent (alpha = 0) everywhere except on the bikini top and bottom.
It seemed that when I replaced the original texture with the skin texture, I had gone down the wrong path. 

So I got rid of the skin texture and put the original texture back into the costume.
Med View by lefty-2000

The preview in MED looked better, but the bikini bottom appears to be drawn over the dress. I could not find a way to fix this in MED, so I tried committing the costume to the game despite the anomaly.
Option 1 by lefty-2000
I was pleasantly surprised to see the dress looked okay and the skin tone now matches the face of the actor.  The bikini top is easily gotten rid of setting the clothing slider "Top" to option 10.
Option 10 by lefty-2000
At this point, it appears that the body mesh, dress mesh, and textures will display correctly in the game.
There is still some work to be done on the dress, fitting and adjusting the vertex weights so it will animate properly, but at least the costume is "wearable" by any female actor.
Two Gigantas by lefty-2000

I need some boots, a custom haircut, a gold choker, and big gold bracelet.  Some earrings would be nice.  There are many interesting little problems to solve before this bad girl is ready for prime time.

To Be Continued.

This chapter is based on material provided by Beowulf71, who used the Amazon dress that I extracted from Philc's Amazon model to create a new UV map and generate a texture with ambient occlusion shading baked in.   All the material in quotes is taken from Beowulf71's notes, but I have edited it heavily, so any errors are my responsibility.

UV Mapping
Beowulf71: "I modified the dress mesh a little, it was a little messy above the belt.  If you want to use it like that, you can keep it.  To bake the the AO, having the body, would probably have created a bit more shadows, maybe it would've been even better.

Beowulf71 Seams by lefty-2000
"When you unwrap a model, make it so the model is open as flat as possible, like on that dress, it needs a seam on the part that goes over the shoulder. 

Uv Map For Dress by lefty-2000

"Then unwrap the model and adjust it so the parts that are the same material are proportionate.  In this model, the 2 parts of the dress should be proportionate, the belt can be bigger or smaller, it all depends on the level of details you want to put in."

Ambient Occlusion and Texture Baking:
World Context by lefty-2000

"When you bake the AO it's important to choose Approximate, so the AO isn't all grainy.  Then bake it and try it on the model." 
Pic08 by lefty-2000

 To bake the ambient occlusion effect, go to the rendering context and press the bake button.  The current image is cleared and replaced by the baked texture image.  Save this as png file (Blender 2.49 does not export images as dds files).

"The next part, the texturing part, is made in Photoshop."

Up to this point I have been able to follow the procedure Beowulf71 has described, but since I do not have photoshop, I cannot reproduce Beowulf71's results.  My understanding is that the final texture is created by a blending of the ao_map image with one or more colored background images.  The colored background images may include a noise pattern and other kinds of image manipulation to add additional visual interest to the texture.  I believe this process, or something very similiar to it can be performed using but I am still experimenting.

For the benefit of photoshop users, I am including Beowulf71's illustrative screen shots and commentary as is:

"When I make texture for a latex head or clothes I usually use the Automatic Level feature, so it takes my grey AO map and make it white.  See pics 09,

Pic09 by lefty-2000

and 10."
Pic10 by lefty-2000

"Then to make the shadows appear a little more I use the light and contrast feature, I took a bit of light off.  See pics 11,
Pic11 by lefty-2000
and 12."
Pic12 by lefty-2000
"After that you can use the density tool to add a bit more shadow where you want.  See pic 13."
Pic13 by lefty-2000

"To add the colors I use 1 layer for each color.  See pics 14,

Pic14 by lefty-2000
and 15."

Pic15 by lefty-2000
"Then I go to the layer and choose the most appropriate means of mixing the colors or the one that works better in this case it was multiply.  See pic 16."

Pic16 by lefty-2000

"I also add some texture to the fabric see pics 17,
Pic17 by lefty-2000
and 18."
Pic18 by lefty-2000

"Save the texture in png and checked it in blender, after that it's all adjustment, more or less shadows, dirt… anything you want to add…  See pic 19."
Pic19 by lefty-2000

Here is the final texture image created by Beowulf71 after applying all effects and blending.
Dress Texture2 by lefty-2000

To be continued.
Figure 010 by lefty-2000
In order to generate a frontal reference image for the Giganta character I had to piece together three different screen grabs but I wound up with the above figure.  As you can see, she is quite muscular and extremely wasp waisted.   Her vertical proportions are that of a super model.  I doubt if you can achieve that effect in The Movies (TM) but perhaps you can fake it with some low angle camera shots.

After finishing chapter 1, I decided that an easier route would be to start with a TM mesh for Giganta's body and just use the Amazon dress from the poser model.  The first problem was how to extract the dress vertices and lose everything else.  It happens that the dress has a different material than the rest of the figure, so if you scroll through the materials editor until you find it and select all verticles with this material, then invert the selection, you can then delete everything but the dress.  The reddish material of the dress is called "preview."

Figure 020 by lefty-2000
When you click "select" with the "preview" material selected....Figure 030 by lefty-2000

Here is what you get:

Figure 040 by lefty-2000
Next, we invert the selection:
Figure 050 by lefty-2000
and the display changes to the following:
Figure 060 by lefty-2000
If you press delete, you can get rid of the selected vertices.

Figure 070 by lefty-2000

There are still a few stray vertices that are not part of the dress, so you can select them, delete them, and save the blend to capture the dress until you need it.

Now we need to start building the costume, but we need a base model to build on.  The obvious choice is the "bikini" costume. 
Figure 080 by lefty-2000
For the basic model, I used MED to extract the bikini costume from the PAK files of TM, saved it in a workspace and,then imported the mesh into blender.  The bikini bottom would be covered up by the dress, so that is not a problem.  The bras and straps, however, would be visible so that  must be removed.

Figure 090 by lefty-2000

I loaded a skin texture and used the UV editor to swap out the bikini texture.  That gets rid of both the top and the bottom.
Figure 100 by lefty-2000

Next, I appended the Amazon dress from the poser 5 model, which was saved in a separate blend file, and scaled it up to match the body as close as I could.   The dress turned out to consist of several unconnected groups of vertices, so I had to join them all together and get rid of the duplicated vertices.  Blender did a good job removing something on the order of 290 duplicate vertices.

Some mesh editing was required to get rid of poke throughs from the underlying body mesh.  This gave me some practice at selecting vertices, edges, and faces.  I also learned about proportional editting from a video I found on youtube, called: How to Make  Apparel for Fallout 3, by somebody with the nick 0001cf73.  The method the auteur used was to start with a nude figure, select the vertices which would be covered by the clothing part, and copy them to another mesh.  The mesh is then sculpted by rescaling and smoothing to pull it away from the body.

It took me awhile to grok proportional editing because I had trouble figuring out how to set the fall off zone.  I found the buttons to turn it on and how to select the fall off type, but it took me awhile to learn that you need to "grab" the selected vertices before the little circle shows up so you can adjust the size of the fall off with the middle mouse wheel.  Thanks to Beowulf71 for clarifying that.
Figure 110 by lefty-2000
he UV mapping for the poser dress model was preserved in the export, import process and the texture file was also included with the model.  I replaced the white color from the amazon dress with a hot pink similar to the Giganta cartoon which was the original inspiration (the recoloring was done using 10).

Figure 120 by lefty-2000

Once I was satisfied with the fit of the dress in rest position, I appended the dress object to body armature, using "bone heat" to create groups. 
Figure 130 by lefty-2000
It worked pretty well, but there were anomalies, like the over the shoulder strap moved with the left arm.  I used "weight painting" to turn all the vertices on the shoulder strap blue, but it took awhile, because some of them were inside the dress.  Once I found them all, and got them all blue, the shoulder worked okay.  This is another case where MDBoing's tutorial was very helpful.

The next challenge was  weighting the leg_r group for the dress because the  skin would poke through when the right leg swung forward.  It took awhile to figure out how to do this, but the following seems to work: Set the amount of paint to a small number, .1 or less, then click "subtract" button.  With the figure posed, simply paint over the poke throughs.  With each stroke, the cloth relaxes a little until finally the cloth covers the skin.  Neat!

Presumably, the hidden parts of the body mesh should be deleted in order to optimize the costume for The Movies (TM), but that can be left for later and probably should, because you can't undo something like that without backing up quite a ways, so you have to be sure you have it right.  In fact, it can probably wait until after the prototype is working in TM.
Figure 150 by lefty-2000

I need to do the boots, the jewelry, and create a hair prop for her.  She must have a glorious mane of red hair. 

To be continued.

Giganta Cartoons by lefty-2000

This is Giganta, a super villainess from DC Comics.  My inspiration is to create a Giganta costume for The Movies.  At this point, my knowledge and experience with creating new costumes is slim to none.  In order to get there, I will need to learn a lot of Blender and a lot about modeling, rigging, and skinning, and even if I do not ultimately succeed, this project seems like a fun way of learning a lot more about the secrets of Blender, as well as  The Movies (TM).

The above image was created from  screen captures from a Justice League animated cartoon, called "The Secret Society."  I imported it into a now obsolete tool called Anime Studio 7 (most of the tools I use are obsolete) and used the drawing tools to trace the image.  In honor of Giganta's African origins (she was created by a mad scientist who genetically modified a gorilla, or something like that) I darkened her skin and hair.  My apologies to DC comics for tampering with their intellectual property.

Anyway, I needed some place to begin, so I looked around for a 3d woman model that roughly approximated my needs.  I found, on my hard drive, a poser figure by Philip J. Cooke (

Philc Amazon by lefty-2000

The Amazon soldier model seemed like a good place to start because the cut of her dress is somewhat similar to  that of Giganta.
I messed with it in Poser 5 (another obsolete tool in my possession)  until I got something like this:

Poser 5 Preview by lefty-2000

At this point I decided to try importing it into Blender to get my feet wet.  This involves exporting from Poser 5 as a Wavefront (.obj) file and importing it into Blender using the standard wavefront  import script that comes with Blender 2.49b.  Poser 5 can export to Collada and Blender 2.49b has a script to import collada (.dae) files, but when I tried it, it did not work.  I tried importing the collada file to  Blender 2.79, and that worked fine; it even brought over the original armature.  That was interesting, but since I am in trying to fit the mesh to a TM armature, I decided to use the Wavefront format and stick with 2.49b.  Even if I am not able ultimately to export the model to TM as a costume, I could still animate it in Blender by applying imported TM.  That in itself would be intellectually satisfying.
In Blender 01 by lefty-2000

The above figure shows that the poser model needs to be scaled up to approximate the size of the standard costume armature for The Movies as it appears in Blender.

Moveup Scale(2.4) by lefty-2000
When I moved the mesh up to put the boots on the floor and set the scale to about 2.4, I got a rough match between the mesh and the armature bones.  I got a fair match over all, but the arms appear to be a little too short.  Well, I decided to worry about that later.  The first problem that attracted my interest was how to make this mesh move with this armature, so I started looking at tutorials on blender skinning and rigging.

After much searching, I found the most useful tutorial was MDBoing's video (on Vimeo) about making Latex Heads. Nearly everything in that video, appeared to be directly applicable to my project.  One way to simplify the problem at this point would be to lose the head and allow one of my starmaker stars to wear the costume with an appropriate hair prop.   A greater challenge would be to make my own head and make it part of the costume itself.  That is another decision that is currently deferred.

So for the near future I will focus on trying to rig the model so it can be animated in Blender.  It looks like there are two ways to go: change the mesh to match the armature, or change the armature to match the mesh.  I believe that modifying the armature is a viable option , but of course it means that the  armature will have to be given a unique name to prevent The Movies from trying to apply the standard costume armature to the mesh.  My experience with the Giants and Dwarfs mod makes me think that this can be made to work, but it would require rewriting the anm files.  Perhaps one day I will be able to prove it, if I get that far.

I expect that it may be necessary to start over several times before I find the right path.  Let's see what happens if I try to attach the mesh to the armature in it's present form:
Following MDBoing's tutorial, I parent the mesh to the armature and select  the "generate vertex groups by bone heat" option to create the initial set of vertex groups.  This is what I got when I tested the armature:

Bone Heat by lefty-2000
Very interesting.  The legs and arms work pretty good (i.e. no sticky vertices), but the fingers and parts of the head do not.  Nevertheless, I am encouraged to explore further these murky waters.
This journal entry is the first in a planned series documenting my progress, pitfalls, and mistakes. 

Suggestions and advice are welcomed with gratitude and humility.
If you want to modify an animation and create a new animation, one of the first things you need to do is select a "target file" to import into blender and edit to create the desired animation.   There are thousands of files to choose from and it might be helpful if you could preview a candidate before choosing it.  That is what "animation analyzer" is for.  It doesn't work for all files, but it does work for an awful lot of them.   If you would like to try this tool, you can download the blend from my dropbox that is all set up, but  you will need to customize it a little bit before you run it.

It shouldn't be hard.  When you open the blend, you will see three different 3d views on the left where the animation will play.  On the lower right is a text window with the animation analyzer script.  To use it on your system, you will need to set the path variables for you mesh files and animation files.  These variables are defined on lines 16 and 17.

16: mesh_files = 'path to your game mesh files'  
17: anm_files = 'path to your game anm files'

Change what is there match your configuration, save the blend, and you are good to go.

Not all meshes or prop types are supported, but it is easy to extend.  To add a prop, goto line 49, add a comma, and on the next line add the prop group name (e.g. gun_ca_) and corresponding mesh name for that prop (e.g. 'p_gun_ak47.msh') following the format of the lines above.  The last entry should not have a comma at the end, to satisfy python's syntax.

Warning:  If the animation is very long, it can take quite awhile to load.  After viewing one animation, you can restart the script and load another, but eventually may experience a blender crash.  Every time you run the program, it clears memory by creating a new scene and deleting the old scene.  This frees up some memory, but there is a lot of garbage hanging around that could cause you to run out of memory.  I worked on the problem and at this point I have been able to run the script 10 times in a row without crashing, but I do not know what the limit is. 

If it does crash, just reload the blend and keep going.

Here is an example of the script in action:

Note:  This script requires the modular version of msh_import to be placed in the blender scripts folder and if you do not have it you can download the latest tm_gui package at and extract it from the zip.

While going through the animation files, I ran across an armature with 7 bones which is required for the animation file called "actor_check_lines.anm" and requires the mesh "p_script.msh."  Although this animation appears in the game,  while an actor is waiting on the set, it is not required in the production movies.  Still, it might prove useful to someone creating a new scene and a new animation, so I have added support for this bone animated prop to the bonelist module.  You can download this updated script at the link.   To get this version, follow the link and in the aside headed "Latest Downloads," right click on the link " (3/16/2019)" and save the python file in your blender scripts folder.  This will allow you to load animation files which require this prop.

Also, I have uploaded patches for the standalone module, which is used by tm_gui, and I have updated the importanm(6.1).py which is the stand alone version of the import anm script.  This patch adds a Blender.Scene.GetCurrent().update() to fix the problem with props not moving when you first import an animation with static animations.  To get these updates, redownload the file, extract and importanm(6.1).py from the package, and place them in your blender scripts folder.

I have added a new category in aside called "Resources" where I will post helpful information.  Currently, one item is listed which is a catalog of all the animation files in the game with useful information about the animation.  I find it useful to consult this list before attempting to load an unfamiliar animation because it tells you how many armatures are needed and what kind of props are required.  Only the basic anm files from the PAK are included in this list.

Please let me know if you have any problems accessing these downloads, installing them,or using them.


If you have used any of the anm import scripts published so far, you may have noticed that when a prop animation is imported, the prop will not move when you play the scene.
You have to do something weird like save and reload the file, or you can delete something from the scene in the outliner.  I found the solution to this problem is to add a line to the python import_anm script to force an update to the scene.

To fix this problem in the import anm scripts, add the following to the code just before the script exits:

This will cause the current scene to update and the props will move okay.  I will fix this in future updates to the animation import scripts.
I ran into a snag developing the FLM file loader related to the limitations of the existing anm_import script.  One problem was animation files that contain more than one animation. I didn't see a way to make sure the right animation data was going to the right actor.  So I decided to focus on the problem of animation files with more than one animation.  These files are like little scenes in themselves and the old animation import scripts did not know how to use the origin and destination data.

The animation header contains a matrix that defines the "origin" of the animation and that matrix represents the origin of the first bone animation in the file, with respect to the external world.  If there is a second animation, there will be a second origin matrix, but this matrix is defined with respect to the first origin, not with respect to the external world.  So, you can get the orientation and location of the first bone animation from the first origin matrix (call it O1), but if there is a second origin (O2), the orientation of the second bone animation in world space is give by: O2*O1.

O1 and O2 are 4x4 matrices.  The first 3 rows and columns give the rotation matrix for an object and the first 3 elements of the bottom row give the location of the object.  The last column contains 3 zeros and a 1.  The nice thing about this way of representing position and orientation is that you can multiply them together to compute the effect of a series of rotations and translations.  And the great thing about Blender Python is that it has math utilities to perform all these operations (most of them anyway).

The third piece of information in the anm file that I had not been using is the "destination" data.  The destination data is a position and an angle.  The angle is a rotation about the Z axis.  This allows the animator to apply a smooth linear movement to his animation as it plays.  You can use this information to construct a 4x4 matrix (call it D for destination) which describes the orientation and position of the animation at the last frame relative to it's position in the first frame.

So, if the first animated object is at O1 in frame 1, and the destination is D1, then the final orientation and position is give by D1*O1.  On the other hand, the second animation starts at O2*O1 and ends at D2*O2*O1.  At least, that is the way I think it works.

In order to test this theory, I wrote a script to load the file wes_horse_rider_mount.anm.  You start the script with an empty scene and it loads all the data into memory.  If there bone_count is 30, it imports woody and applies the bone animation data to woody's armature.  If the bone_count is 59, it imports a horse mesh and applies the bone animation data to its armature.  Woody is the first character to be loaded, so the origin data (O1) applied to the container empty (00.woody) and a key frame is set in frame 1.  The destination matrix (D1) is then constructed and the product D1*O1 is applied to the container empty at the end frame of the animation and a keyframe is set there.
The horse animation comes second, so the container empty for the horse ( is positioned to O2*O1 in frame 1 and key framed, and at the endframe it is positioned to D2*O2*O1 and key framed.  The interpolation mode is set to linear for all Ipos in the scene, to insure linear interpolation between the first and last keyframes.

Here is a video showing the results of a test run using the wes_horse_rider_mount animation file.

In order to make the behavior of animation import and export consistent between anmexport vers 6.1 (What You See is What you Get) and TMBlender GUI 4.1, I have updated the download package for  TM Gui 4.1.  The only change to this package is that the modules anm_import and anm_export have been replaced.  If you are currently using TM Gui 4.1, you do not need to install the entire package; all you have to do is extract the files and and drop them into the Blender Scripts folder.  The effect is to disable the control2_arm_l and control2_arm_r  location channels on import and export because the script does not handle them properly.

You can download the new package at Lefty's Movies Game Blog where you will find it listed in the side bar under "Latest Downloads."  Or you can just use this link: TM Blender GUI 4.1.

If the message: "TM GUI Ver. 4.1" appears in the gui window, you have the latest version of the GUI, notwithstanding the comments in the code itself, but you will still need to replace the anm_import and anm_export modules to have the most current version.

If you are now ready to install the TMBlender GUI for the first time, you are to be commended for your wisdom and patience, and if you have any difficulty, feel free to post any questions here or send them to me via personal message. 

Hippocrates: "Life is short,the art long, opportunity fleeting, experience treacherous, judgment difficult."

Alan Greenspan: "If I have made myself clear, then I have misspoke."

At this point I have code to load the following block types into blender from a FLM file. 

1. Actor
2. Action
3. Mopath
4. Type4
5. Branch

After I got these to work, I decided to turn the algorithm loose and see how far it would get.  It got all the way through filming, but crashed when it tried to load an animation from a "*.seq" file.  Still, it generated 610 frames of animation, which is 24 seconds at blender's basic 24 frame per second rate.

The following probably will not be meaningful unless you have used FLMReader to modify FLM files for your own scenes.

The FLM files appear to completely control a scene, including the actors taking their places on the set, changing into costume, and then performing a series of actions.  In FLMReader, you can see the main blocks are Actor blocks, which tell you whether your character is a human, or an animal; Action blocks, which tell you what stationary animations to play, and MOPATH blocks which control the movement of actors on the set and which animation to play as they move.

I have been working on a blender python module which provides access to the data in a FLM file.  We have modular versions of mesh import and anm import scripts, so it seems that it should be possible to use these in combination to create a visual representation in blender of what is happening inside the FLM file as it is played in The Movies.  The purpose of this is not to replace the game logic and rendering engine with blender, but rather to better understand how FLM files work and how we can modify them to produce the desired effect in the final scene.

The goal is to create a script that will look at a FLM file and follow the logic from block to block to replicate the action.  For example, the flm_parse module I have written will load the data in all of the blocks, so the flm analyzer I am working on invokes this module to tabulate all of the blocks in the data.

The simplest kind of FLM file is an extra, so I am using that one for my initial test.  The script begins by looking at the first actor block and if the actor type is zero, it loads woody into blender and renames the containing empty to match the name of the actor block in the FLM file.  The idea of this is so we can keep track of which actors need to be animated as we go along.  A FLM file, even an Extra, can contain more than one actor.  The next step is to check the "next ref ID" field in the actor block, move to that block, and see what kind it is.   Different kinds of logic will be needed for different kinds of blocks.  In my test case, the first block used by the actor is a MOPATH.

So I am working on MOPATH logic.  The MOPATH block specifies a path for the actor to follow.  The path is a series of 5 points, but there is a flag following it which is thought to tell whether or not the path is to be followed.  If not, my guess is that what happens is that the actor moves in a straight line from the first point to the last one.  The MOPATH block also tells you which animation to play while the actor moves. 

At this point, I have gone through the steps of loading woody, loading the animation which is a running animation, and setting keyframes for the movement along the path by the Empty that contains the armature.  The animation has 31 frames, and there is a destination vector which tells you how far the actor moves during each cycle.  Using that data, you can calculate how many frames are necessary to move the actor from the start to the end of the path.  You also can calculate the direction the actor must face.  The final step is to repeat the animation for enough cycles to accomplish the movement.

That is a far as I have gone.  At this point, when you run the script and play the resultant animation in blender, you see the actor running into the scene from offstage.  I think he is moving into position before "filming" starts.  When we look at the following blocks in FLMReader, they appear to show him getting into costume and waiting in place until it is time for him to walk across the stage.

That's enough for today, I suppose.  Tomorrow, I'll see if I can chew through a few more blocks.  This bugger just might work,eventually.