【研究】关于Cryengine3 Fmod武器音效导入、替换
cryengine3吧
全部回复
仅看楼主
level 9
husenb 楼主
好吧,既然没有人回答我的问题,我也只有找了分享分享了~
转载请注明出处~转载于fs_wTong
本人着力研究CE2 CE3 不到两个月,发现国内外都比较少关于CE3利用Fmod导入音效比较详细的教程,故此找时间写此教程,希望对新手们有帮助。
首先说说CE引擎对于音频文件(非音乐文件)的调用与播放,与其他众多的游戏引擎不同的是,CE3不能直接识别 .wav 的音频文件。要在游戏中播放音频的话,就是调用Fmod工程里的音效事件。故此先要在Fmod新建一个工程,再导入wav音频,添加音频事件,然后生成工程,最后才是在Sandbox中调用Fmod的事件。
本教程中点讲解,CE引擎的武器连射音效的导入,因为CE引擎的武器连发开火音效的调用方式也是比较特殊,与其他游戏引擎不同。
首先来说说,在人们认识中的武器开火的枪声,单发的话就是“砰”的一声,步枪、冲锋枪、机枪连射的话就是“砰砰砰砰砰……”这样重复的声音。众多游戏引擎也是如此,例如Valve CS Source之类的,武器连发开火的音效,就是将一段完整的武器单发开火音效按照速率重复播放。
多数游戏的武器的完整单发开火音效长达约1秒时间,这里就来从时间上分析那段开火音效的组成。扣押扳机,子弹底火爆炸发出来的声音少于0.1秒,后来那将近1秒的声音就是环境回响的尾音。
CE引擎的武器连发开火的途中,把那少于0.1秒的子弹爆炸音连续播放(音效播放速率要根据脚本的参数,不然播放声音与游戏实际连发射击的速率不协调),鼠标松开时,就播放枪声的环境尾音。
现在就手把手叫你,吧CE3_FreeSDK的那把Scar换个开火音效。
准备内容:
1. GoldWave,一个简单而又强大的音频处理软件,用于音频的截取。
2. FmodDesigner,在CE3的Tools目录里的音频工程软件。
3. 从其他游戏中提取的一段完整的Scar-L单发开火音效。
•现在首先新建一个Fmod的工程文件。在CE3的Game\Sound\ 目录里创建一个文件夹命名为“w_scar”(要养成习惯性的,武器音效的文件前缀为 w_ ,载具的前缀的 v_),跟着打开FmodDesigner的fmod_designer.exe。点击 “File—New Project”新建并且保存一个工程文件,工程的文件命名必须要与文件夹的名称相同,为“w_scar.fdp”(如果如果文件夹名称与工程文件名称不相同的话,否则在CE3里无法调用)。
•跟着在fmod_designer 的 Events 选项卡里的 Groups选项卡里,有个紫色文件夹图标的叫做 “untitle”的组,
在靠右侧的属性栏更改名称,修改成“Scar-L_fire”。(组的名称没有什么局限性,只要有规则的好记的,方便在脚本里调用)
•现在先导入那段完整的单发开火音效。把那段Scar-L的完整单发开火的音频wav文件复制到w_scar 目录,并且重命名为“Scar-L_single.wav”,最好准寻命名规则,完整单发开火音效命名“_single”的后缀。

2012年06月14日 02点06分 1
level 9
husenb 楼主

•跟着在fmod_designer 中导入,在CryEngine的武器音效事件,是区分第一人称与第三人称的音效,现在先导入第一人称的音效。
在刚才重命名的组“Scar-L_fire”里有一个默认的引擎事件为“event00”
跟着在窗口右面的属性栏重命名为“Scar-L_single_fp”,(第一人称音效的后缀名为 _fp)
在窗口中间的音轨编辑视图中右键——“Add Sound”
打开了“New Sound”对话框,点击“Add sound file”打开刚刚复制进去目录的“Scar-L_single.wav”文件,因为这个单发开火的音效,所以跟着在Loop mode 选择 Oneshot。再按OK。
点击OK后,可以按三角形来试听音效。
试听没问题的。单发的第一视觉音效,这样就能够成个导入了。
•跟着导入单发开火的第三人称音效,需要手动来创建事件,点击“Scar-L_fire”组的图标右键,点击 Add Multi-Track Event。

2012年06月14日 02点06分 2
level 9
husenb 楼主

弹出的 “New event”对话框中,Name为“Scar-L_Single_3p”(第三人称音效的后缀名为 _3p),点OK。
创建事件之后,重要的一步,在窗口右侧的属性栏修改几个选项,首先在“Mode”选择为“3d”,其他的请看图。
添加音频文件时候,同样的方法,在“New Sound”对话框选择刚刚添加过的那个音频文件。
添加了之后,再按三角形按钮播放播放,会发现第三人称的音效与第一人称的音色稍有不同,第三人称的音效的音色听起来比较遥远的感觉。
•跟着到连发开火音效的处理与导入,这就是本教程的重点内容了,首先在GoldWave软件里打开Scar-L_single.wav ,把它剪裁成两部分,一部分是Scar-L_loop.wav 这是子弹底火爆炸的一瞬间的音效,另一部分就是Scar-L_tail.wav,是连发开火的尾音。
子弹底火爆炸音效的长度,根据武器XML脚本里定义的连发速率来剪裁,打开Game\Scripts\Entities\Items\XML\Weapons 目录里的scar.xml,找到一下代码:
<firemode type="default">
<fire>
<param name="ammo_type" value="bullet" />
<param name="rate" value="700" />
<param name="damage" value="75" />
其中<param name="rate" value="700" /> 就是觉得连发速率的参数,表示每分钟700发,现在要计算每发子弹的时间间隔的秒数,打开计算器 60/700,得到的数据保留小数点后三位,约等于0.086(秒)。
转到 GoldWave,把刚才打开的整段单发开火声音裁剪开头的 0.086 秒。
按“剪裁”按钮,跟着在“控制器”的黄色三角形按钮,连续播放剪裁后的音效,听到的效果就是在游戏中武器连发开火的音效了。
再另存为Scar-L_loop.wav到相同目录。
跟着剪裁 0.086秒后面的那段音频,另存为Scar-L_tail.wav,连发开火的音效就处理完成了。
•在Fmod Designer导入连发开火音效。
同样的方法,在Scar-L_fire组右键菜单点击Add Multi-Track Event,新建的事件名称为 Scar-L_loop_fp,
同样在编辑区按右键、选择Add sound,在New sound 对话框里点击Add sound file按钮选择Scar-L_loop.wav,Loop mode选择默认的looping。

2012年06月14日 02点06分 3
level 9
husenb 楼主

添加音频文件之后,同样可以按三角形图标试听,就能够听到连发开火的效果了。
•跟着添加与导入连发开火的第三人称音效。
这样就完成了添加连发开火过程中的音效。
•最后还要在Fmod Designer添加并且导入连发开火后的尾音Scar-L_tail.wav的_fp与_3p事件,方法与前面说到的创建单发开火的方式一样。
这样,就成功地完全创建了武器的单发与连发开火的音效。
•按File——Save Project进行保存,保存后还要创建工程,点击Project——Build。
在w_scar_bank00打钩,跟着点击Build。
如无意外,就创建成功了。
回到Game\Sounds\w_scar目录,会发现多了w_scar.fev与w_scar_bank00.fsb文件,fev是Fmod的事件文件,fsb就是打包了的wav音频源文件。这两个格式的文件是直接被CE3引擎调用的。
•检验与播放,在tools\FmodDesigner文件夹中打开fmod_eventplayer.exe,这个就是Fmod的音效事件播放器。
点击File——Load project
就快看到之前在Fmod_Designer创建的音频事件,双击3D的音效或者拖进,能够听到3D音效。
2012年06月14日 02点06分 4
level 9
husenb 楼主

•创建与检验音频工程到此完成,最后就是修改脚本,调用刚刚创建的音频事件。
打开Game\Scripts\Entities\Items\XML\Weapons 目录里的scar.xml
在Actions标签里找到三组关于开火动画与音效调用的标签:
<action name="fire">
</action>
<action name="rapid_fire">
</action>
<action name="spin_down">
</action>
把标签里的内容都更改为:
<action name="fire">
<animation target="firstperson" name="fire_bullets_right_%suffix%01" />
<animation target="owner" name="shoot" />
<sound target="firstperson" name="sounds/w_scar:Scar-L_fire:Scar-L_single_fp" radius="200" static="0" />
<sound target="thirdperson" name="sounds/w_scar:Scar-L_fire:Scar-L_single_3p" radius="200" static="0" />
</action>
<action name="rapid_fire">
<sound target="firstperson" name="sounds/w_scar:Scar-L_fire:Scar-L_loop_fp" radius="200" static="1" synched="1"/>
<sound target="thirdperson" name="sounds/w_scar:Scar-L_fire:Scar-L_loop_3p" radius="200" static="1" synched="1"/>
</action>
<action name="spin_down">
<sound target="firstperson" name="sounds/w_scar:Scar-L_fire:Scar-L_tail_fp" radius="5" static="1" />
<sound target="thirdperson" name="sounds/w_scar:Scar-L_fire:Scar-L_tail_3p" radius="5" static="1" />
</action>
最后同时也解释下,在CE引擎脚本里关于音效事件的调用格式,如下:
1. Game目录下的sounds文件夹,
2. w_scar文件夹,也就是那个音效的工程名称,就是为何文件夹名称与工程的命名要相同。
3. 在工程里音效事件的组名
4. 音频事件的名称。
希望此教程对于研究Cryengine 3 武器及其音效的初学者有帮助,谢谢!
By:fs_wtong(Charm灬HZK)
2012年1月
2012年06月14日 02点06分 5
level 3
谢谢楼主
2012年06月14日 02点06分 6
level 2
初学者研究~[背扭]
2012年06月15日 09点06分 7
level 11
终于等到高手啦~~
2012年06月16日 11点06分 8
那么,有兴趣和我一起做CTV吗?简单地说,就是把CS用CE3重新做一遍,我想一个人奋斗是非常蛋疼的。。。
2012年06月16日 12点06分
回复 @husenb:没有那个技术啊。。。给你提供一些创意最多。。。可以帮你做做地图啥的,但是高中生时很紧。。
2012年07月20日 23点07分
@Altair_x1 武器很简单的,这篇文章的原作者还是我朋友
2012年07月23日 13点07分
回复 @Altair_x1 :还是3Q了哦
2012年08月03日 00点08分
level 9
看这篇帖子快掉出视线了。。
2012年12月02日 08点12分 10
level 1
我艹 为何不打上我们网站 www. devzone. cn
2012年12月12日 04点12分 11
原来是原作者[鲁拉],我是在机核转的,为什么要打上DEV的网站?
2012年12月12日 04点12分
回复 husenb :我艹早 我在机核有发图文么,貌似没吧
2012年12月12日 04点12分
回复 wutong09 :[瀑布汗~]
2012年12月12日 05点12分
自己看,别这么没素质
2012年12月12日 05点12分
level 9
音频以后再慢慢研究啦,我现在还处在鼓捣模型的基础阶段。[呵呵]
2012年12月12日 10点12分 12
1