dota1skin吧 关注:25贴子:49
  • 6回复贴,共1

[MOD制作笔记] 如何给模型动作添加/修改一个音效

只看楼主收藏回复

我最近想给巨大的宝石MOD(https://tieba.baidu.com/p/10043737052)添加一个出生的音效,但不知道添加内置的哪个,于是想引用一个外部的音效(也就是从互联网上下载一个宝石掉落的音效,然后应用在mod里)。
这篇帖子只是记录下学习过程,整理下思路。
我们先拿火枪死亡音效来整理下应该理解的内容。
先使用 Model Editor 打开火枪英雄的模型:
他的路径是:Units\Human\Rifleman\Rifleman.mdx


IP属地:广东1楼2025-09-25 11:33回复
    打开模型后,选择
    窗口 -> 模型动作管理器
    查看模型拥有哪些动作

    Death 就是死亡动作,双击它,查看具体的数据。。

    这里动作持续时间有一个开始时间,这个值要记下来,就是这个值关联到死亡的音效。也就是动作一开始执行,就关联一个火枪手死亡的音效。
    那么是怎么关联的?


    IP属地:广东2楼2025-09-25 11:39
    回复
      2025-12-12 07:16:45
      广告
      不感兴趣
      开通SVIP免广告
      再回到模型窗口 ,点击 窗口 -> 节点管理器
      点击这个节点(有一个规律,就是SNDX 表示声音节点, D开头表示死亡音效) SNDXD ... 一般来说就是一个死亡音效。

      也是双击打开它,看看数据

      看到这个节点绑定的时间节点是 14333,其实就是上面死亡开始时间。
      然后事件数据类型是一个 SND ,表示一个声音数据,具体数据是 DRIF,这其实是一个声音的 unitID...
      unitID 会绑定到一个声音音效。具体我们下面再接着看。。。
      不过可以通过 RiflemanDeath 其实已经可以知道,这就是一个死亡音效了 XD。。


      IP属地:广东3楼2025-09-25 11:46
      回复
        火枪手死亡音效的 unitID 是 DRIF
        那么这个ID对应的音效资源哪里去找?
        我们现在打开这个文件:ui\soundinfo\AnimLookups.slk
        搜索 DRIF ,找到这段内容:
        C;X1;Y377;K"DRIF"
        C;X2;K"RiflemanDeath"
        C;X3;K1
        其中
        C;X2;K"RiflemanDeath"
        这行又定义了一个 key:RiflemanDeath
        我们再去这个文件:ui\soundinfo\AnimSounds.slk
        搜索这个key RiflemanDeath
        得到了这段内容:
        C;X1;Y384;K"RiflemanDeath"
        C;X2;K"RiflemanDeath.wav"
        C;X3;K"Units\Human\Rifleman\"
        C;X4;K127
        C;X5;K1
        C;X6;K0
        C;X7;K10
        C;X8;K11
        C;X9;K"WANT3D,CHANNELFULLPREEMPT"
        C;X10;K600
        C;X11;K10000
        C;X12;K3000
        C;X13;K"DefaultEAXON"
        C;X14;K1
        C;X15;K0
        这个内容有点长了。。。
        其实我们现在只关心下 X2 X3(即第二个列,Y 表示行)
        它的内容是: RiflemanDeath.wav 和 Units\Human\Rifleman\
        其实就是表示,火枪手的死亡音效的资源路径在:
        Units\Human\Rifleman\RiflemanDeath.wav
        现在我们去试听下,,,
        完美,没错了,就是这个 啊~~ 的一声了


        IP属地:广东4楼2025-09-25 11:53
        回复
          现在,我们通过模型找到了音效。
          那么,如何添加一个互联网上下载的音效,然后给模型的某个动作使用呢??
          (虽然我们自己不生产资源内容,但缝合也是工作的一环哦)
          方法就是。。
          第一步,打开魔兽3原本的 ui\soundinfo\AnimLookups.slk 文件,添加一个音效ID,名字唯一就行
          比如:
          C;X1;Y581;K"JDBS"
          C;X2;K"JuDaBaoShi"
          C;X3;K1
          未完待续。。。


          IP属地:广东5楼2025-09-25 12:02
          回复
            上面的 Y581 代表开一个新行,所以这个 581 必须也是唯一的,且递增。
            然后我们打开 ui\soundinfo\AnimSounds.slk ,添加新的内容
            C;Y563;X1;K"JuDaBaoShi"
            C;X2;K"JuDaBaoShi.wav"
            C;X3;K"UI\SoundInfo\AnimSounds\Mie\"
            C;X4;K127
            C;X5;K0
            C;X6;K0
            C;X7;K3
            C;X8;K11
            C;X9;K"CHANNELFULLPREEMPT,LISTFULLPREEMPT"
            C;X10;K1
            C;X11;K23000
            C;X12;K23000
            C;X13;K"SpellsEAX"
            C;X14;K1
            C;X15;K0
            下面是每一列(X)的解释:
            X1第一列必须是上面定义的 JuDaBaoShi ,这样才能关联上。
            X2 X3 已经见过了,就是音效路径。
            X4 代表音量大小,127就是最大音量了。
            X5 是否循环播放
            X6 是否随机播放(我也没试过)
            X7 声音通道 ID(决定同时播放多少种声音、和谁冲突)。
            X8 声音优先级,数字越大优先级越高。
            X9: "CHANNELFULLPREEMPT,LISTFULLPREEMPT"
            播放标志:
            CHANNELFULLPREEMPT:该通道已满时,可以抢占已有声音。
            LISTFULLPREEMPT:声音列表已满时,可以强行替换。
            X10 是否 3D 声音(1 = 启用 3D 定位效果,0 = 普通 2D 声音)。
            X11: 23000 最小距离(单位:游戏内的坐标距离),小于这个距离音量为最大。
            X12: 23000 最大距离,超过这个距离将听不到声音。
            这里 min/max 都是 23000,意味着声音不随距离衰减(听感上就是固定音量)。
            X13 环境音效组 (EAX Preset),对应 WC3 的混响环境配置,这里是 “法术效果音” 的混响参数。
            X14 是否启用 EAX 环境(1 = 开启,0 = 关闭)。
            X15 预留参数(通常是 fade in/out,或额外标记)。


            IP属地:广东6楼2025-09-25 12:56
            回复
              好了,现在应该就可以给模型实装这个音效了(当然音效文件也要放到指定的目录去)。
              实装方法就是给模型添加一个节点,绑定到相关动作,然后声音数据就是 DJBS - - 也就是巨大宝石这个音效了。。


              IP属地:广东7楼2025-09-25 12:57
              回复