menu
 
版本
2022.1.19.8584

2024.1.5.8803

2023.1.13.8732

2022.1.19.8584

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624


menu_open
Wwise SDK 2022.1.19
导入音频文件和创建架构

有好几种方式在 Wwise Authoring API 中创建 Wwise 对象。

创建 Wwise 对象

利用 ak.wwise.core.object.createak.wwise.core.object.set ,可以创建大部分 Wwise 对象。如需进一步了解相关限制,请参阅 ak.wwise.core.object.create 和 ak.wwise.core.object.set 相关限制

理解名称冲突模式

在调用 ak.wwise.core.object.createak.wwise.core.object.set 时,可指定四种名称冲突模式之一。

如果在目标位置存在同名对象:

  • fail:创建功能返回一个错误。
  • replace:目标位置的原对象(及子级)被删除,新的对象被创建出来。
  • rename:为新的对象自动指派一个不会重名的名称(在名称上添加数字)。
  • merge:目标位置的对象被重新使用,而其指定的属性、引用和子级被合并到目标位置,对象的剩余部分不变。

了解列表和列表模式

列表是用于存储对象的通用容器。给定列表中的对象通常属于同一类型。列表方便通过 WAAPI 填充和检索被另一对象“拥有”的对象。比如,给定对象的 RTPC 包含在该对象的 RTPC 列表中。

在调用 ak.wwise.core.object.set 时,可指定两种列表模式之一。

若列表已经包含对象:

  • append:在可能的情况下将新的对象添加到列表,同时保留现有对象。有些列表可能不允许存在重复的同等对象:比如,RTPC 列表中的有些 RTPC 属性是排他性的,所以只能有一个 RTPC 具有此类属性。
  • replaceAll:移除所有现有对象,并添加新的对象(对重复项有限制)。

对于空白列表,行为为 append。

ak.wwise.core.object.create 和 ak.wwise.core.object.set 相关限制

Sound SFX

利用 ak.wwise.core.object.createak.wwise.core.object.set ,可以创建 Sound SFX 对象。不过存在很大的限制:

  • 无法将原始 WAV 或 MIDI 文件关联到子级 Audio File Source 对象。
  • 无法将语言关联到子级 Audio File Source 对象。
  • 不过,可以利用 ak.wwise.core.object.set 将源插件与子级 Sound SFX 对象关联。

为此,在未来版本的 Wwise 中解除这些限制之前,建议不要使用 ak.wwise.core.object.createak.wwise.core.object.set 创建引用 WAV 或 MIDI 文件的 Sound SFX 对象。对此,请改用 导入音频文件ak.wwise.core.audio.import

Work Unit

在使用 ak.wwise.core.object.createak.wwise.core.object.set 创建 Work Unit 之前,需要先清理撤消/重做历史记录和剪贴板。 Work Unit 会在创建的同时保存,便于在工程中快速创建对应的 WWU 文件。

  • onNameConflict 参数只能是 'fail''merge''rename'。不支持 'replace' 模式。

Query

无法使用 ak.wwise.core.object.createak.wwise.core.object.set 创建 Query 对象。

插件

无法使用 ak.wwise.core.object.create 创建源插件、效果器插件或元数据插件。

列表

无法使用 ak.wwise.core.object.set 创建对象来填充 Metadata 和 Clips 列表。

  • 无法创建元数据插件。
  • 片段需要 AudioSourceRef,但其无法指定。

考虑到以下限制,建议不要使用 ak.wwise.core.object.set 在 Sequences 和 Stingers 列表中创建对象。

  • 鉴于无法通过 WAAPI 将 Segment 指派给 Stinger,建议不要在 Stingers 列表中创建 Stinger。
  • 鉴于无法通过 WAAPI 创建 MusicClip,建议不要在 Sequences 列表中创建 MusicSequence。

使用 ak.wwise.core.object.create 来创建一个 actor-mixer:

请参阅 ak.wwise.core.object.create 了解更多信息。

{
"parent": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"type": "ActorMixer",
"name": "My Actor-Mixer",
"children": []
}
info备注: 父字段显示了在工程中的何处创建项目。parent 字段跟大部分 Wwise 对象字段一样支持对象 ID (GUID) 和对象路径。想要获取对象 id,请参阅 ak.wwise.core.object.get 。比如,您可以通过对象的工程路径来获取它的对象 id。
info备注: 想要从 Wwise 工程中获取对象 id,您可以按住 SHIFT 键同时右键单击一个对象,然后选择 Copy GUID(s) 复制到剪贴板上。

使用 ak.wwise.core.object.create 在属性中创建对象层级:

请参阅 ak.wwise.core.object.create 了解更多信息。

{
"parent": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"type": "ActorMixer",
"name": "Weapons",
"@Volume": "-2",
"children": [
{
"type": "RandomSequenceContainer",
"name": "BigGun",
"@RandomOrSequence": "1",
"children": [
{
"type": "Sound",
"name": "Gun1",
},
{
"type": "Sound",
"name": "Gun2",
}
]
}
]
}

使用 ak.wwise.core.object.create 创建 Event

请参阅 ak.wwise.core.object.create 了解更多信息。

{
"parent": "\\Events\\Default Work Unit",
"type": "Folder",
"name": "WAAPI",
"onNameConflict": "merge",
"children": [
{
"type": "Event",
"name": "Play_SFX",
"children": [
{
"name": "",
"type": "Action",
"@ActionType": 1,
"@Target": "\\Actor-Mixer Hierarchy\\Default Work Unit\\SFX"
}
]
}
]
}

如需查看可用事件属性和动作类型列表,请参阅 Action

使用 ak.wwise.core.object.set 创建单个 Actor-Mixer

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"children": [
{
"type": "ActorMixer",
"name": "My Actor-Mixer"
}
]
}
]
}
info备注: object 字段指示要在工程中的哪个位置创建对象。跟大多数 Wwise 对象字段一样,object 字段支持对象 ID (GUID) 和对象路径。想要获取对象 id,请参阅 ak.wwise.core.object.get 。比如,您可以通过对象的工程路径来获取它的对象 id。
info备注: 若要从 Wwise 工程检索对象 ID,可在按住 Shift 的同时右键单击对象,然后选择 Copy GUID(s) to clipboard

使用 ak.wwise.core.object.set 创建一系列带有属性的对象

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"children": [
{
"type": "ActorMixer",
"name": "Weapons",
"@Volume": "-2",
"children": [
{
"type": "RandomSequenceContainer",
"name": "BigGun",
"@RandomOrSequence": "1",
"children": [
{
"type": "Sound",
"name": "Gun1"
},
{
"type": "Sound",
"name": "Gun2"
}
]
}
]
}
]
}
]
}

使用 ak.wwise.core.object.set 创建 Event

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "\\Events\\Default Work Unit",
"children": [
{
"type": "Folder",
"name": "WAAPI",
"children": [
{
"type": "Event",
"name": "Play_SFX",
"children": [
{
"name": "",
"type": "Action",
"@ActionType": 1,
"@Target": "\\Actor-Mixer Hierarchy\\Default Work Unit\\SFX"
}
]
}
]
}
]
}
],
"onNameConflict": "merge"
}

如需查看可用 Event 属性和 Action 类型列表,请参阅 Action 章节。

使用 ak.wwise.core.object.set 在 RTPC 列表中创建带有曲线的 RTPC 并绑定 Custom Control Input

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "\\Actor-Mixer Hierarchy\\Default Work Unit\\My Sound",
"@RTPC": [
{
"type": "RTPC",
"name": "",
"@Curve": {
"type": "Curve",
"points": [
{ "x": 100.0, "y": -20.82785, "shape": "Linear" },
{ "x": 10000.0, "y": 21.8509, "shape": "Linear" }
]
},
"notes": "Property: OutputBusLowpass, ControlInput: RPM",
"@PropertyName": "OutputBusLowpass",
"@ControlInput": {
"type": "ModulatorLfo",
"name": "RAND",
"@LfoWaveform": 5
}
}
]
}
]
}

使用 ak.wwise.core.object.set 在多个父对象下一并创建对象

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"children": [
{
"type": "ActorMixer",
"name": "My Actor-Mixer"
}
]
},
{
"object": "{a9129d80-07e0-11e7-93ae-92361f002671}",
"children": [
{
"type": "ActorMixer",
"name": "Weapons",
"@Volume": "-2",
"children": [
{
"type": "RandomSequenceContainer",
"name": "BigGun",
"@RandomOrSequence": "1",
"children": [
{
"type": "Sound",
"name": "Gun1"
},
{
"type": "Sound",
"name": "Gun2"
}
],
"@RTPC": [
{
"type": "RTPC",
"name": "",
"@Curve": {
"type": "Curve",
"points": [
{ "x": 100.0, "y": -20.82785, "shape": "Linear" },
{ "x": 10000.0, "y": 21.8509, "shape": "Linear" }
]
},
"notes": "RTPC on BigGun. Property: OutputBusLowpass, ControlInput: RPM",
"@PropertyName": "OutputBusLowpass",
"@ControlInput": "{E31BAE21-CFA6-4655-81F6-E6FBDC802E9D}"
}
]
}
]
}
]
}
]
}

使用 ak.wwise.core.object.set 设置 Name、Notes、属性和对 Object 的引用

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "\\Actor-Mixer Hierarchy\\Default Work Unit\\MySound",
"name": "new name",
"notes": "This object's notes are set.",
"@Volume": 5.7,
"@OutputBus": "\\Master-Mixer Hierarchy\\Default Work Unit\\Master Audio Bus\\Environment Bus"
}
]
}

使用 ak.wwise.core.object.set 为新建的 Custom RoomVerb 效果器插件设置声音的 Effect0

请参阅 ak.wwise.core.object.set 了解更多信息。

{
"objects": [
{
"object": "\\Actor-Mixer Hierarchy\\Default Work Unit\\MySound",
"@Effect0": {
"type": "Effect",
"name": "myCustomEffect",
"classId": 7733251,
"@PreDelay": 24,
"@RoomShape": 99
}
}
]
}

导入音频文件

音频文件可以通过 Audio File Importer(音频文件导入器) 用制表符分割导入中同样可用的导入处理器, 使用 Wwise Authoring API 导入。

使用 Wwise Authoring API 能做到导入过程的完全自动化,同时您可以用自己选择的编程语言来直接控制。

导入格式非常灵活。您可以导入:

简单来说,音频文件导入过程中允许:

  • 导入和本地化音频文件
  • 自动创建 Actor-Mixer 层级结构
  • 创建 Event(事件)
  • 指派属性值,如 Volume(音量)
  • 指派引用,如 Output Bus(输出总线)

有关此功能的详情,请参阅 https://www.audiokinetic.com/library/edge/?source=Help&id=importing_media_files_from_tab_delimited_text_file

info备注: 最好使用 ak.wwise.core.audio.importTabDelimitedak.wwise.core.audio.import ,来同时创建 Sound SFX 对象并导入音频文件。目前无法将音频文件和语言关联到所创建的对象,所以建议不要使用 ak.wwise.core.object.create 或 \ ref ak_wwise_core_object_set 。

示例:

导入一个 WAV 文件,并创建关联的 Sound 对象。

使用 ak.wwise.core.audio.import 导入音频文件

请参阅 ak.wwise.core.audio.import 了解更多信息。

导入多个 Sound SFX:

{
importOperation: "createNew",
default: {
importLanguage: "SFX"
},
imports: [
{
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound>MyNewSound1",
audioFile: "C:\\sources\\1.wav",
"@Volume": 0.42
},
{
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound>MyNewSound2",
audioFile: "C:\\sources\\2.wav",
"@Volume": 0.1
}
]
}

在同一 Sound SFX 对象中导入多个 Audio Source。注意,为确保在转为活跃状态时将 Audio Source 排在第一位,向其中一个 Audio Source 添加了下划线前缀:

{
importOperation: "replaceExisting"
default: {
importLanguage: "SFX"
},
imports: [
{
audioFile: "D:\\sources\\Version1.wav",
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound SFX>MySound\\<AudioFileSource>_MyActiveSource"
},
{
audioFile: "D:\\sources\\Version2.wav",
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound SFX>MySound\\<AudioFileSource>OtherSource"
}
]
}

使用 ak.wwise.core.audio.import 本地化音频文件

请参阅 ak.wwise.core.audio.import 了解更多信息。

以 English 形式导入 Sound Voice:

{
importOperation: "useExisting",
default: {
importLanguage: "English(US)"
},
imports: [
{
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound>MyVoice",
audioFile: "C:\\sources\\en\\Hello.wav"
}
]
}

以 French 形式本地化 Sound Voice:

{
importOperation: "useExisting",
default: {
importLanguage: "French"
},
imports: [
{
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound>MyVoice",
audioFile: "C:\\sources\\fr\\Hello.wav"
}
]
}

在同一 Sound Voice 中同时导入多个不同语言的 Audio Source:

{
importOperation: "useExisting",
imports: [
{
audioFile: "D:\\sources\\hello_en.wav",
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound Voice>hello\\<AudioFileSource>hello_en",
importLanguage:"EN_US"
},
{
audioFile: "D:\\sources\\hello_fr.wav",
objectPath: "\\Actor-Mixer Hierarchy\\Default Work Unit\\<Sound Voice>hello\\<AudioFileSource>hello_fr",
importLanguage:"FR_CA"
}
]
}
info备注: 确保工程中存在相应语言且大小写匹配。

此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅