How to build models for FF7PC

How to build models for FF7PC
Introduction:
Hello brave adventurer.... err, no, this shouldn’t be hear :-P
Well, this is a document about how to make field models for FF7. If you are
reading this I supose you have at least some interest to join the NPC
Reconstruction Project. If you don’t know what it is, I’ll just tell you that it’s a
project to redo all the NPCs of FF7 so that they look more or less like battle
models.
That said, we will begin listing what you need to make an FF7 model:
- Final Fantasy 7 PC version: Source of P files and final testing
enviroment.
- LGP Tools: You need Ficedula’s program in order to decomplie and
recomplie FIELD.LGP , BATTLE.LGP and MAGIC.LGP, the files that
contains all the original models and their textures and animations.
- Biturn: You need Mirex’s program in order to test how your models
look like. Yes, you could do it directly in the game, but it would take too
long.
- Kimera: My little program. It allows you to edit the existing P files to
some extent in order to make them fit in the new model you are creating.
- Paint Shop Pro (or any other kind of 2D graphics editor that’s better
than Paint): In order to modify the texture files for the models.
- Notepad (on any other kind of text editor): To edit HRC and RSB files.
- Imagination: Yep, you need loads of it. FF7 NPCs are pretty simple. If
you are going to redo one, you will need to imagine how it actually
should be.
- Patience: Doing an FF7 model implies a heavy component of trial and
error.
You don’t really need to know anything about 3D modeling (I don’t know, for
example). Remember that we are going to modify existing models, not to create
them from scratch.
Now let’s start.
Brief techincal overview:
In order to build FF7 models you will need to have some very basic knowledge
about how their structure. FF7 models are split into a heriarchic set of files. Here
you have a list of these files:
-
HRC File: The HRC file defines the “Skeleton” of the model. A
“Skeleton” is a set of “Bones” that are translated and rotated by the
animations to represent movement. Each “Bone” has a pair of joints
(that can’t be changed because they are referenced by animations), a
length and a list of RSB files. Example:
---? Joint where the bone ends
---? Joint where the bone starts
6.97045 ---? Length of the bone (distance between joints)
1 BXCB
---? List of RSB files
Chest
Hip
The list of RSB files starts with the number of models that compose the
bone. It can be 0 (none), 1 or more. If you put there more than one the
resulting bone will contain all the models referenced by the list as if they
where a single model.
-
RSB Files: The RSB files contain a direct reference to the P files that
is where the actual 3D data is. However, the also contain a list with
the textures used by the model they refer to. Example:
PLY=BXCE.PLY
MAT=BXCE.MAT
GRP=BXCE.GRP
NTEX=1
TEX[0]=bxce.TIM
-
---?
---?
---?
---?
References BXCE.P
The same (but needed)
The same (but needed)
Number of textures used by the
model
---? The first texture is BXCE.TEX
P Files: The P files contain the actual 3D data for a single part of the
model. Example:
Fortunately, the files are lexicographically ordered and every file between one
HRC and the next one is releated with that first HRC.Well, I think that’s all you
need to know about the internal structure of the models.
Working with Kimera:
Now let’s have a look at the main section of this document: the user-guide of
Kimera, the program that let’s you modify the P files. Kimera has a pretty simple
interface, but it can a bit unintuitive sometimes. I’ll proced to descrive all it’s
options briefly.
-
Load P file: Simply loads a P file (3D model). Evident.
Save changes: Let’s you choose a file to save the currently loaded
(and possibly modified) 3D model. If you choose a file that already
exists, it will ask you if you want to overwite it.
-
-
Draw mode: Let’s you choose one of the 3 rendering modes
available.
- Vertex colors is more or less how it would look like in-game.
-
Polygon color is there just for acuracy purposes beause it shows
clearly where is every polygon
-
Mesh: Well... this is actually useless :-P
Color editor: This panel contains options releated with the colors
found in the 3D model:
- Pallete : This square contains all the colors found in the 3D
model. You can select one of them by
cliking on it. Then it will be highlighted
with a white square. Please, keep in mind
that the last color of the list (Black in the
example) usually doesn’t really belongs
to the model. It’s an extra color that you
can use on the model but isn’t there
originally.
- Red/Green/Blue level: When you select a color, it’s
Red/Green/Blue values are reflected here. You can redefine the
selected color by changing this values.
- Detection Threshold: Well, this one is pesky. Let’s see, FF7
battle models have lighting drawn over them. Consecuently, they
have a wide gradiation of the same color. Since working with all
of these gradiations would be very unconfortable, Kimera tries to
detect all the colors with the same Hue and treat them as a single
color. Unfortunatley, there is no way to do this perfectly. It still
-
-
-
-
recognizes like diferent colors some tht are actually the same.
That’s the reason why we need to treat colors that have a similar
(instead of exactly the same) hue like the same one. This control
allows you to tell the program how aggresive must it be joining
colors. If you set it to the maxium, there will be only one color.
Please, keep in mind that when you change this control, every
change you have made to the color pallete will be undone. Thus,
I highly advise you against changing it after you start changing
the colors.
Brightenss: Allows you to increase or decrease the brightness of
the colors.
Resize: Change the size of the object in any of the three axis.
Reposition: Change the center of the model. Please, keep in mind
that it actually ranges between –10 and 10. This is useful for field
models, but battle models are way larger and that range is
unnoticiable in that scale. Thus, if you want to use parts of a battle
model you must first reduce them (resize to arround 4% on all axis).
Rotation: This control allows you to rotate the model in any of the
three axis arround the center. Keep in mind that this changes will be
reflected in-game.
Light: This panel allows you to change the position of the light or
simply disable it if you don’t want to add pre-calculated lighting to
your model. Example (please, keep in mind that the game engine already applies
some lighting to the models in-game)
Lighting On
-
Lighting Off
More fat/More thin: This allows you to perform a progresive resize
following the Z axis. The peak of the deformation is applied at the
level pointed by the black line that corsses the object. You can move
it up or down by moving the horizontal scroll bar poistioned next to
the picture. The “Fix back position...” control allows you to fix the
position of the vertices that are considered to be form the rear part of
the model. More acurately, those that have a negative Y coordinate.
Example:
Original
After some fat/thin operations
-
Misc:
- Delete all polygons but those with the selected color: Pretty
explicit. Will remove all the polygons that have the color selected
in the pallete panel. Example:
Befor
-
After
Delete all polygons but those with the selected color: It’s the
complementary operation of the last one.
Horizontal shift: Mmmm... maybe it should say mirror
horizontally:-P. Example:
Befor
After
-
-
Kill precalculated lighting: This options tries to remove the
shadows painted over some of the models (mostly battle models).
However, the succes of the operation will be very dependent of
the pallete detected. If it contains too many (or too few) colors,
the result will be pretty messy. If it fails, you will need to paint all
the model on you own.
- Kill textured groups: This option will remove the polygons
where the textures are drawn. This is useful to take the hair of a
model and use it somewhere else. If you did such a thing without
using this option, you would get white polygons where the
textures should be.
The modes:
- Paint polygon: When enabled, you will paint the polygon where
you click with the selected color.
- New polygon: When enabled you can create a new polygon by
selecting 3 vertices.
- Kill polygon: When enabled you will delete the polygons you
click on.
Well, I think we are done with Kimera for now. As you can see, this is a simple
program with simple features. It will get more useful as I add more features I’m
plannig.
LGP Tools:
This program has many functionalities. Some of them are completly unknown to
me, so I’ll cover just what we need to know.
-
-
-
Extracting files: You can right-click on a file on the LGP and select
“Extract” to save it somewhere. I’d rather suggest you to extract all
the files at once, though. To do it simply press CTRL+A and tell the
program the floder where you want it to place the extracted files.
Creating an LGP file: Although you can drag&drop files to an LGP
file directly, I advise you againts doing it. There seems to be some
kind of bug that prevents some files to be written properly. You’d
better create the entier LGP file from scratch every time you want to
change something. In order to do that, simply use the “Create” button
and tell the program where are the files you want to complie. Keep in
mind, though, that building a new LGP file can take some time (and
strangely enough, it’s a very variable amount of time). There is no
progress bar that indicates the state of the process, the program
simply stops responding. When it starts to catch events again it means
that the process is over.
Creating TEX files: Yep, you can also use this program to do it. In
fact, is the only method I’ve found that actually works for me. The
TEX files produced by Biturn seem to crash the game and the other
program that converts BMP to TEX just crashes for me.
Well, to convert a BMP to a TEX file first open an LGP file. Rightclick on any TEX file and select “Replace” (this will destroy the
original file, but if you are going to redo the LGP from scratch that’s
nothing to worry about). Then extract that file where you want it to be
and rename it to with the name you want. With this you have
perfectly valid TEX file, but you will need to turn on the transparent
color. To do it, open the file with your favourite HEX Editor and
change the 8th byte to 01.
And that’s it. Just remember that TEX files are 8-bit.
That’s all you need to know about LGP Tools. I’d tell you something about
Biturn, but frankly, I think it’s simple enough to operate it without further
instruction.
Since the best way of learning is through examples, lets do a little one:
A practical example: Building a model from scratch:
For this example we will use th model called Boy_sk (defined in DGCD.HRC).
First we will get all the files that compose that model. Sposing that you have extracted
all the files of CHAR.LGP, just select the files between the DGCD.HRC and
DHAF.HRC and copy them somewhere. You can forget about the animations as most of
them actually belong to other models.
I suggest you to copy there the standard “Standing” animation AAFE.A. This
animation fits for any simple model (those that haven’t got such things as animated hair,
like Tifa or Aeris). Now if we select DGCD.HRC using Biturn, we will see how the
model looks like:
Now we are going to change all the parts of the model by others with more
polygons. We can find such files at BATTLE.LGP and MAGIC.LGP. However, it’s
very likely that we will need to modify those files so that they look right for this model
using Kimera.
Let’s start with the head. The head of this boy reminds me a bit to Cloud’s one
so we will use that as a base. But Cloud’s hair is way too spiky and it’s
factions don’t match with those normal for a kid. There is one more problem:
the neck. Cloud’s neck is too wide and, after removing the collar, too short
also. We’d better simply cut it off and use another one.
But first let’s start with the hair. First we will cut some spikes to make
the haircut more normal using the “Kill polygon mode” of Kimera and close the holes
this will produce with the “New polygon mode”. We will also change the color to
brown:
Now let’s cut the throat:
We will finish with the head making the factions rounder using several thin/fat
and resize operations and changing the lighting and colors so that they fit better for this
model:
We will talk about the neck later. Now let’s focus on the body. If you’ve tried
the NPC Reconstruction project patch you may have already seen this model:
As you can see, this character has almost the same parts
you’d need for the one we are working on. If you are interested
about the origin of this pieces, I’ll tell you that the limbs come
from Shiva’s model and the hands and feet are from Cloud’s hires model. They have simply been recolored and resized. The
sleeves were done cutting part of the fore-arm, resizing and
recoloring (NOTE: This method can produce very nice efects so
I suggest you to give it a try). As for the torso, it’s the upper half
of Tifa’s body properly deformed using fat/thin operations. I
used that torso because it already had braces drawn over it. The
neck of the shirt is from Niblehime Sephitor’s model (I think is the only battle model
that has one).
We have nearly all the body already done, but there are basically 3 things that
must be done:
- Change the skirt by shorts: We must add a hip and the sleeeves for
both legs. I took the hip from Yuffie’s model for no special reason
(nearly any hip would do the job when properly modified). As for the
sleeves, I did the same as with the shirt ones but this time I had to
deform them properly using fat/thin operations and resizing.
- Recoloring: Well, the flesh color is different and the braces are blue
instead of red.
- Adding pre-defined lighting: The model of the girl was made using
an older version of Kimera that wasn’t able to draw shadows over the
models (like in the battle models). Kimera 0.6 added the feature to do
it easily and it really looks better. You can simply skip this step, of
course, but I think it’s really worth the extra effort. Just be consistent
with the light position you select for every part.
Oh, I nearly forgot about the neck. Well you can take it from the girl’s model
too. I stripped it from the head of Sephitort’s hi-res model. Just keep in mind that you
must reference it in the head bone instead of the torso. It’s important for some
animations.
Now that we have changed the parts, you will also need to adjust the size of the
bones in the HRC file. In this case, you can simply copy the values from the model we
borrowed the body from. If you are doing the model from scratch, the only path is trial
and error.
Well, now you have the 3D model ready. Is that all? Nop. We need to change the
textures (basically eyes and sometimes mouth). First of all, keep in mind that you must
use a TEX file (or set of files) that fits th model of the head. In this case, we will use
Cloud’s Hi-res texture as a base:
The final texture for this model must keep the same structure. Of course, there is
no need to keep the emblem of the belt. You can simply paint it black. But at least the
eye and the mouth must keep the same position and size (more or less) and orientation.
Let’s start modifying it. First, the eye is too serious. I suggest using Hi-res Jesse
texture. Correct me if I’m wrong, but I think this texture isn’t even show in the game.
Yes, I’m sure it’s used in the scene at the train, but you never get to see it. Don’t know
why they made it so detailed (way more detailed than those used for standard battle
models). Anyway, here is the texture:
As you can see, there is a little problem with it: the orientation. Well, simply
mirror th image. There is another, more subtile problem: the pallete. In order to keep
exactly the same colors, I suggest working directly with this last texture. Of course, you
should resize it to the same size of Cloud’s one (128x256 if I remember correcly). Then
simply paste there the needed components. As you can see, I changed the eyebrow and
made the mouth wider so that it look a bit more innocent:
Well, now just follow the instructions provided earlier to turn this BMP to a
TEX file and you are done. Anyway, I’d like to give you two more tricks that aren’t
needed for this model but that can come handy for others:
- What to do if your model has no textures? You can’t add etxtures
to the model, but you can take the textured part from another model
and kill all the polygons but the textured ones. You can do it by
moving the detection threshold to the maxium, selecting the only
color left and clicking on “Kill polygons with the selected color”.
Then you simply need to reference that model in the list of models of
the head. Of course you will probably need to readjust the position or
size of that model.
NOTE: Keep in mind that if you want that the character blinks, you
will need to make the texture model the first in the list.
NOTE2: Biturn seems to draw textures a bit further from the position
where the game actually renders them. Thus you will need to adjust
the position trying the model directly in-game.
-
What to do if I want o use the eyes from some texture but they
have a different color? I supose this can be done with any
moderately good photo editor, but I only know how to do it with
Paint Shop Pro. You can change the hue of a range of colors via
Color->Hue map:
As you can see, changing the bar of a color range allows you to
change their hue.
And after all that work, here is the result:
Final notes:
Well, this is the end of this FAQ. If you have suggestions, additions or so just let
me know. Hope you enjoy reading this more than I enjoyed writting it ?.
See ya.
Borde
19-2-06