2024年1月24日发(作者:)

GTA系列:IFP动画文件修改、创建的方法与教程

翻译: Allen

论坛在线讨论:

/?tid=12325&page=1&extra=

教程分为三步曲:

1 )转换动画捕捉软件(Endorphin)的动画到GTA系列!

2 )自定义动画 (Custom Animations)

3 )创建自定义动画文件(Creating Custom IFP's )

这三篇教程是相辅相成,缺一不可。我费了一些心思把他们给翻译了过来。

有一款软件和“Endorphin”功能很相似,如果你学会了本教程,可以尝试用此软件:Poser,和Endorphin一样它也可以与3dsMAX接口。Poser:

/view/?fr=ala0_1_1

1)转换动画捕捉软件(Endorphin)的动画到GTA系列!

原作者(Author):Wesser

原贴:

/?showtopic=386917

1. 需求

首先,你要确保你已经有了Endorphin(版本2.5.2)并已经安装了它,如果没有你可以去/topics/130918/ 认识并下载Endorphin。

3DsMax9英文版(推荐用此版本)或者 3DsMax7英文版

Kam's script

Kam's Script 安装方法:

(1)解压后将包内MAPS文件包内的两个图片(和)文件放到3dmax里的maps里面

(2)将包内的scripts文件包内GTA_Tools包放到3dmax安装目录里面的scripts文件包内,将startup包内文件复制到scripts下的startup内即可。

你可以根据下面的教程去做所有步骤:

附件:

2. Endorphin

好了,那么打开该程序拖动鼠标然后选择当前人物。现在你可以在底部看到一个彩色区域(时间栏的上面)这代表这个人物已经被选中了。在“Track02”旁边的蓝线上右击并选择“Create Behaviour Event”。然后在左侧选择“Jump and

Dive”。修改“End Frame”到 100然后点击时间栏下面的到100然后点击““”按钮停止运做。你可以按“按钮。等到它达”按钮播放动画之后按”按钮停止。现在去菜单栏的“File”-->“Export”之后选择.csm格式导出。之后写上“Jump and dive”为文件名,然后点击“Save”按钮保存。最后修改比例值(scale value)为25.9(0.0259 With .fbx exporter)然后点击“OK”确定。如果一切顺利我们将打开这个示例()场景。现在,我们已经完成了在Endorphin里的步骤!

3. 3D Studio Max

打开你之前下载的里的Tutorial - Started下的文件。

在顶部的工具栏上选择“Biped”设置全部选择为Biped部分(Biped parts就是MAX自带的骨架)

然后点击“”按钮选中运动菜单(motion menu)。如果你现在导入从Endorphin里导出的动画,那么现有的Biped部分将会严重的扭曲(错误的骨骼层次连接和错误的比例大小)。为了避免这种情况,所以在“Biped”组中按一下按钮“”保存数字转换(Figure Transforms)(写“player”作为文件名,”也就是说备份一下现在的布局)。然后在“Motion Capture”组里点击“按钮打开 .csm文件。在“Conversion”旁选择“No Key Reduction”并点击“OK”。之后.csm文件就会导入一些骨骼将会比之前有所不同了。所以点击“”然后点击“”来加载 .fig文件并恢复所有的biped部分的正确转换”按(正确的骨骼层次连接和比例)。离开数字模式“Figure Mode”请按“钮。 在“Motion Capture”组里点击“”按钮通过移动或者旋转使骨骼变的

非常一致。离开“talent figure mode”请按“的位置和你的结果做一下比较)。

”(然后同里如果是3dxMax7就用下面的方法,如果是3dsMax9的朋友则跳过直接用3d studio

Max 9的方法。

3D Studio Max 7

下载 BipedDumper 并把 .ms文件放到 3dsmaxscripts文件夹下。 去工具面版下 MAXScript -->Run Script 运行刚才这个 .ms文件。 选择“Root Bone(根骨)”(命名为“Normal”)并点击“Dump Biped”。保存当前MAX文件并打开一个新的MAX场景。在新场景里,现在要为你播放的动画导入一个DFF文件(例如),之后去菜单栏 File->Merge Animation(合并动画,选择刚才保存的那个max文件合并)。

点击“Source File”并选择之前保存的文件(其中包括模型“Mesh”要转换的“Biped”骨架)。然后从左到右匹配所有的名字相同的骨骼+“Snap”(单元)。

Source Nodes

Normal_snap

Pelvis_snap

Spine 1_snap

Spine 2_snap

Neck_snap

Head_snap

HeadNub_snap

Jaw_snap

L Brow_snap

R Brow_snap

L UpperArm_snap

L ForeArm_snap

L Hand_snap

L Finger_snap

L Finger01_snap

L Finger0Nub_snap

L breast_snap

R UpperArm_snap

Current Nodes

Normal

Pelvis

Spine 1

Spine 2

Neck

Head

HeadNub

Jaw

L Brow

R Brow

L UpperArm

L ForeArm

L Hand

L Finger

L Finger01

L Finger0Nub

L breast

R UpperArm

Merge Nodes

Normal_snap

Pelvis_snap

Spine 1_snap

Spine 2_snap

Neck_snap

Head_snap

Jaw_snap

L Brow_snap

R Brow_snap

L UpperArm_snap

L ForeArm_snap

L Hand_snap

L Finger_snap

L Finger01_snap

L breast_snap

R UpperArm_snap

Bip01 L Clavicle_snap Bip01 L Clavicle Bip01 L Clavicle_snap

Bip01 R Clavicle_snap Bip01 R Clavicle Bip01 R Clavicle_snap

R ForeArm_snap

R Hand_snap

R Finger_snap

R Finger01_snap

R Finger0Nub_snap

R breast_snap

Belly_snap

L Thigh_snap

L Calf_snap

L Foot_snap

L Toe0_snap

L Toe0Nub_snap

R Thigh_snap

R Calf_snap

R Foot_snap

R Toe0_snap

R Toe0Nub_snap

R ForeArm

R Hand

R Finger

R Finger01

R Finger0Nub

R breast

Belly

L Thigh

L Calf

L Foot

L Toe0

L Toe0Nub

R Thigh

R Calf

R Foot

R Toe0

R Toe0Nub

R ForeArm_snap

R Hand_snap

R Finger_snap

R Finger01_snap

R breast_snap

L Thigh_snap

L Calf_snap

L Foot_snap

L Toe0_snap

R Thigh_snap

R Calf_snap

R Foot_snap

R Toe0_snap

全部完成后你可以按“Save Mapping”保存。现在取消选择除了“Rotation(旋转)”之外的全部属性(deselect all attributes )并点击“Merge

Animation”。所有的骨骼将旋转转换,但没有坐标(position)。像刚才那样重复同样步骤,你只需从左到右移动“Normal Bone”里的“Snap”骨,并取消选择除了“Position”之外的全部属性。(看下面的排列即可明白怎么操作了)

Source Nodes Current Nodes Merge Nodes

Normal_snap Normal Normal_snap

全部完成后,点击“Merge Animation”。

3D Studio Max 9

确保所有Biped部分(Biped parts)被选中。然后去 菜单 File->Save Animation

保存当前被选择并转换的 物体或对象及骨骼( objectsbones )。用“Jump

and Dive”做为文件名并点击“Save Motion”即可。启动一个新MAX场景并为你要播放的动画导入一个DFF文件(我用的是)。选择所有除了“Skin_Mesh”之外的 对象或物体骨骼(objectsbones)并去点击File->Load

Animation。确保你已经保存完了动画并点击“Edit Mapping”按钮。

现在取消勾选一些选项在新窗口底部,就像这样看图(

)。现在全部选择那些同名的骨骼,一个接一个的,从左到右,留下那些只有一个位置有骨骼的(看下面的表就明白了);然后点击“Exact Name”按钮(如果它们的名字并不是完全相同,请选择“Closest Name ”,也就是选择最接近的名称)。其中“Transforms”不存在,选择“World Transforms”代替。

Info Current

Normal

Transforms

Mapped Incoming

Normal

Normal

Transforms

Bones Normal

Stuff Normal

Transforms

全部完成后,点击“Save Mapping As”之后输入“Jump and Dive”作为文件名然后点击“Load Motion”。现在除了根骨(Root Bone)之外的所有骨骼如果含有一些多余的 坐标\或者比例 的关键帧,你必须删除他们,以减小导出时IFP文件的容量.所以在之前请下载使用我(指作者)创建的脚本 来删除这些.

Copyright © Wesser (Wesser荣誉出品):

把这个脚本放到 3dsmaxscripts,然后去 MAXScript->Run Script 之后选择

这个 .ms文件。选择除了“Skin_Mesh”之外、场景中的全部物体,因为它是无用的,启用“Sacle Keys”选项并点击“Delete”。现在禁用该选项(指Sacle

Keys)并选择除了根骨(Root Bone,Normal)之外的所有骨骼。启用“Position

Keys”选项重复同样步骤并点击“Delete”按钮。

4. 渲染(Rendering)

现在移动根骨(Root Bone,Normal)到 0.0(xyz 坐标)。现在,看看下面有2种方式帮助你导出动画到游戏!

替换游戏的原动画(Replacing Existing Animations)

请跟随这个教程: Custom Player Animations 来操作。(作者:Jacob,GTAForums)[译者注,请去下面观看篇教程:“2 )自定义动画 (Custom Animations)”]

创建属于你自己的IFP文件(Creating Your Own IFP)

请跟随这个教程:Creating Custom IFP's (作者:goin-god,GTAForums)来操作。[译者注,请去下面观看篇教程:3 )创建自定义动画文件(Creating Custom

IFP's )]

使用这个方法,你就可以创建一个简单的脚本来加载你创建的动画文件并播放,并把它放到IFP文件里。在这教程之前,我建议大家至少学习一些编程的基本知识以及Cleo脚本的制作教程(作者:ZAZ)/?showtopic=403594。

所以,首先你必须要用此代码(如下)加载这个动画文件。

CODE

04ED: load_animation "CUSTOM"

然后,我们必须要检查它是否正确加载,否则游戏会崩溃或无法正常加载。

CODE

:Loop

if

84EE: not animation "CUSTOM" loaded

jf @Label

wait 0

jump @Loop

最后,用这个“opcode”代码加载此动画的名字。

CODE

0812: AS_actor $PLAYER_ACTOR perform_animation "NEW_ANIM" IFP_file

"CUSTOM" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1 //

注意:设定 time 值为 -1 将会让游戏重复此动画。

这是整个脚本代码(仅支持你制作的此“IFP”文件动画的播放)

CODE

{$CLEO}

:ThreadHd

thread 'IFP'

:ThreadLoop

wait 0

if and

0AB0: key_pressed 0x49 // I

0AB0: key_pressed 0x46 // F

0AB0: key_pressed 0x50 // P

jf @ThreadLoop

:AnimLoad

04ED: load_animation "CUSTOM"

:AnimCheck

if

84EE: not animation "CUSTOM" loaded

jf @AnimPlay

wait 0

jump @AnimCheck

:AnimPlay

0812: AS_actor $PLAYER_ACTOR perform_animation "NEW_ANIM" IFP_file

"CUSTOM" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1

//jump @ThreadLoop

0A93:end_custom_thread

一旦完成这些,就代表你大功告成了!哈哈, 去享受成功的乐趣吧!

译者注:

此教程对于MODER来说应该算一篇启蒙+指导的教程,非常实用。不过如果你想要更好的动画,请精通使用“Endorphin”软件,来创造更好的MOD!

*************************三部曲分割线****************************

2 )自定义动画 (Custom Animations)

(作者:Jacob,GTAForums)

原贴:

/?showtopic=173873&st=0

观看本教程可以让您得到任何想要的动画,动画制作使用3dmax3或者以上更高版本。

注意:在学习本教程之前请备份。

必备工具:

3dsMAX9.0英文版本 以及更高的版本都可以

Steve-m's CharAnimViewer

Kam's Script (包含DFF和IFP脚本,以及更多,很强大)

Kam's Script 安装方法:

****略,请看教程开始部分有写。

安装完成后,做以下事情:

1)运行3dsmax

2)运行KAM的DFF IO脚本。

3)脚本加载完成后,单击“Import DFF”按钮之后导入你的主角模型。

注意:游戏主角模型()需要用IMGTOOL在里提取。

5)导入你的。你现在可以看到主角的模型以及他的骨骼。

6)运行KAM的IFP IO脚本。

7)脚本加载完成后,点击“Load IFP”按钮,打开GTA游戏路径下 。一系列动画将出现。

修改动画(Modifying an animation)

1)单击你的人物模型,并右击选择“Hide Seleciton(选择隐藏)”。我们用不着它。

2)之后这会留下很多黄色小方块,或是骨骼。全选这些骨骼,然后点击IFP IO插件窗口上的“M”按钮。

注意:你可以通过使用人物动画查看器软件(Steve-m's CharAnimViewer)找到你想要修改的动画。这个软件会助你找到有用并且不错的动画。

3)确保已经选择了所有的骨骼。现在从列表中选择你想要修改动画并点击“Apply Animation”(应用动画)。

4)现在骨骼应该是摆出刚才应用的动画姿势。你可以在时间线的右下角点击“Play”按钮播放动画。

一定要把动画转回到编辑开始前。

需要修改的部分(The modifying part)

1)选择你要修改的骨骼(比如手臂,你可以先把这块骨骼移动或者旋转下,看效果)。之后点击“Set Key”,这是设下是时间线(轴)。

2)在时间轴上点击下“Key”。这是添加一个新的关键帧。

3)通过来回移动时间轴上的滑块可以看到你想要的结果。通过旋转/移动(Move/Rotate)选定的骨骼,然后按“Key”添加一个新的关键帧。

如果你很少接触或者没有接触过关键帧动画的经验,就没有这么简单了。基本上,你只需要移动滑块,修改你喜欢的骨骼姿势,然后添加关键帧。这些还是很容易的。

查看你的动画(View your animation)

1)全选骨骼。

2)把滑块移动到开始之前之后点击“Play”播放,查看效果。

呵呵,如果你满意你做的这些动画。请继续执行下面的步骤4。

导出你的动画(Exporting your Animation)

1)在任一视觉窗口内,右击然后选择“'Unhide All(取消全部隐藏)”。

2)选择一切(全选,按Ctrl+A)。

3)在IFP脚本上点击“Replace”(替换)按钮。

注意:使用“SAVE”按钮只能把你编辑的这个动画保存一个单独的。使用这个功能可以保存个别动画。 但是如果你想在游戏里使用,则需要编译整个,那么你需要使用“Replace”功能。

4)到这步,你就成功了!!!在CharAnimViewer里打开你修改的IFP并查看效果,确保这个IFP含有你修改的动画以及所有的动画。

*************************三部曲分割线****************************

3 )创建自定义动画文件(Creating Custom IFP's )

(作者:goin-god,GTAForums)

原贴:

/?showtopic=400901

IFP文件是侠盗猎车系列自第三部以来出现的动画格式文件,随着侠盗猎车圣安地列斯的问世出现了一个新格式版本,但它仍然支持旧版本动画文件。

为什么要创建一个新IFP文件?

好吧,如果你不这样做,你必须得替换原有的动画,有时这是让Moder(修改者)讨厌的。所以这个教程将教你如何创建你自定义的动画文件(IFP's)或者在原有的动画文件上添加新动画。

等会!我可以在SA原有的动画文件(IFP)上添加新动画吗?

当然!如果你知道了怎样创建一个IFP,那么你就会知道如何添加新动画到原有的IFP文件上了。

1.必备工具

3dmax9(建议用3dmax9,或者更高)

Kam's Script

TSB(TXT转IFP编译器)

2.读取一个IFP(Loading an IFP)

为了创建你自己的IFP文件,你需要载入一个原文件来做为基础。因此,运行3DMax,打开Kam的IFP脚本,之后载入一个DFF模型(注:IFP脚本上有导入DFF的按钮:Import Dff)。

全选整个模型+骨骼(可以按Ctrl+A),然后在IFP脚本窗口上按下M按钮。

如图:

现在,点击“Load IFP”然后打开任意一个IFP文件(可以在文件里提取)。我们不习惯用,因为它非常大, 增加转储(Dump)的时间。

如图:

OK,你已经载入了动画文件。 而我载入的是Colt45动画文件。

说明:

(动画文件): 这是IFP文件的名称

Total Animation(动画总数):这个IFP文件里含有动画总数

Internal Name(内部名称):这是游戏使用时调用IFP里的名称

你可以看到列表里的每个动画名称,你可以双击其中一个,然后它会应用到你的模型。你可以看到关键帧和时间线(轴)按钮。

如图:

如图所示现在你可以看到IFP里的动画是什么样的。

3. 转储IFP文件(Dumping the IFP)

现在我们要“反编译”IFP文件,所以我们可以关闭IFP IO插件窗口了。之后运行Kam's script下的IFP Dump Script (动画转储脚本)。

如图:

现在打开转储窗口,点击“Dump GTA IFP”然后选择我们之前用的IFP。在这我的是。

在转储的过程中,在屏幕上你会看到很多数字和字母,直到闪跃结束。转储结束后又返回了静态。

现在按F11键,将打开MAX脚本监听器,然后全选里面的文字并复制。

如图:

打开记事本然后粘贴所有文字。之后保存成你想要的名字,我的是。

4.编辑TXT文件(Editing the TXT)

现在,让我们看看我们做的。 我们把IFP文件转换成了TXT文件。可以自行编辑了,让我们试着去了解它。

首先,删除这条线。

CODE

如图:

现在让我解释一些值。

标头部分是这些:

CODE

//

//

//This is Header Section

c 4

ANP3

i 1

25058

c 24

COLT45

i 1

7

//

//

重要的东西:

ANP3: (Animation Package 3)动画包3,版本标示符。当然这决不是ANP2动画包。

COLT45:这是游戏调用这个动画文件时用的名称。(正是我们看过的IFP IO里的Internal Name内部名称)

你必须更改这个IFP内部名称(Internal Name),因为不能有超过1个的同样名称。例如我在这里取“PARKOUR”这个名字。

如果你知道你将要添加多少动画,然后把IFP里的动画个数“7”换成你想要的数字。

例如我在这里改成5。

像这样:

CODE

//

//

//This is Header Section

c 4

ANP3

i 1

25058

c 24

PARKOUR

i 1

5

//

//

现在我们往下拉,从第一个动画开始:

CODE

//

//Animation 2guns_crouchfire Start Here

c 24

2guns_crouchfire

i 3

26 4316 1

c 24

这是首个动画的标题,下面的是每个骨骼的坐标(现在还不重要)。

重要部分:

2guns_crouchifire:这是动画名称,你必须更改“Animation [Anim Name] Start

Here”这行的文字,以及“c 24”这行下面的文字也是,必须都是一样的名字。

更改后:

CODE

//

//Animation BckHndSpingBTuck Start Here

c 24

BckHndSpingBTuck

i 3

26 4316 1

c 24

每次新动画动都从“Animation [Anim Name] Start Here”这里开始,所以我们每次都很容易看到它们。这个IFP文件有7个动画,不过我只需要5个,所以我要去文档底部去删掉2个动画。

一旦这样做就代表你有5个动画,以及5个动画写入,一切都OK。记住要重命名的其他4个动画的情况,我的4个动画名称分别是:

BckHndSping

CartWheel

FrntHndSpring

HandPlant

注意:记住在删除用不着的动画时一定要全部删除骨骼坐标值。如果你想要更多的动画,请全选动画文本。从标题(在开始部分)一直到下一个动画开始的地方(不包含它)。复制并粘贴在最底部,一直粘贴直到你想要的数量。

记住如果多添加了动画,别忘了更新动画的总数(Total Animations Number),它在TXT文档的顶部。

5. 编译(Compiling)

现在就要编译TXT文档,把它再次转换成IFP。

你将需要TSB文件。

在里面你会看到一个exe文件:"",它是一个命令指示符应用。如果你不熟悉它请不要担心,我制作了一个批处理文件来执行它。你只需要更改TXT的名称为“”。

这是批处理文件:

CODE

@echo off

echo IFP Compiler by Delfi

echo Batch file created by Coin-goD

echo --------------------------------------------------

echo Compiling in current folder.

echo

"" ""

echo IFP File created.

echo Done.

echo --------------------------------------------------

echo.

pause

打开一个记事本粘贴该代码并将其保存为“”。

把“”、编译器“”和你的“”放到同一目录,运行“”将编译这个TXT文件。

如图:

现在,你已经创建了一个属于自己的IFP文件!但是,等等!但它仍然是的动画内容。

接下来让我们完成最后的一切!

6. 替换(Replacing)

好了,现在回到3DMAX,用IFP IO打开你做的IFP文件。我已经把IFP的名字改成了。

如图:

哈哈,棒极了!Internal Name内部名称变成了parkour还有动画一拦也变成新名称了!

但是动画内容还是的。

所以现在你必须让你制作的动画来替代它。

我的意思是,做出一个真正属于你自己的IFP动画文件!

恭喜你!你已经迈出了第一步:创建一个自定义的IFP动画文件。

文档:

本教程中出现的作者制作的IFP文件:

/upload/

延伸阅读:

IFP FileType Description(IFP文件类型说明)

/?title=IFP

Custom Player Animations(自定义游戏主角动画)

********************************End********************************