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********************************


发布评论