您所在的位置:一氧化碳中毒 >> 病因探究>> >> CRIAtomCraftRobot

CRIAtomCraftRobot

文章来源:一氧化碳中毒   发布时间:2021-9-30 14:37:24   点击数:
  白癜风病是怎么引起的 http://baidianfeng.39.net/a_xcyy/130710/4211291.html

在之前我们用了从最上层开始层层追溯来获取目标的对象的方法。

在这一节里,我们要介绍通过别的手段,来批量获取对象的方法。

-从某一个对象以下的全部阶层中,批量获取同一种类的对象。

-从某一个对象以下的某一个子阶层中,批量获取同一种类的对象。

-批量获取在GUI中选择中的对象。

对象获取函数的种类

本节里我们使用find_object函数从工作单元到CueSheet使用递归法来检索,同时连续注册复数个波形文件到素材里,然后用素材创建相应的Cue。

在“工程的创建和波形文件的注册”里,我们只创建了一个Cue和素材,但是在实际的声音制作里,往往需要批量的创建一大批素材。

在这一步教程里,我们会继续使用之前的教程“工程的创建与注册波形文件到Cue”所创建的工程。因此需要事先完成上一步的教程。

脚本的说明

新建一个脚本,双击创建的脚本,通过脚本编辑器来打开脚本。

为了能够在脚本列表里确认该脚本的概要,首先输入以下的说明文:

#--Description:[教程]使用了find_object函数的复数波形文件的批量注册

模组的导入

为了在脚本里操作AtomCraft,需要导入相应的模组,记述以下的处理。

importos

importglob

importcri.atomcraft.debugasacdebug

importcri.atomcraft.projectasacproject

为了获取包含了波形文件的文件夹的地址,需要使用Python的glob模组。

使用glob模组,可以获取和指定的格式相同的文件地址格式。

除了操作工程所需的project模组,还需要导入Log输出所需的debug模组。

获取教程波形文件夹内的波形文件列表

使用glob模组,获取教程波形文件夹“/tutorial_data/tutorial_data02”以下的波形文件。

记述如下:

#获取波形文件列表

#获取教程波形素材文件夹tutorial_data/tutorial_data02地址

data_dir=os.path.dirname(os.path.dirname(__file__))+/tutorial_data/tutorial_data02

#使用glob获取data_dir内的文件

files=glob.glob(data_dir+/*)

iflen(files)==0:

acdebug.warning(data_dir+"里没有文件")

sys.exit()

glob.glob函数获取的文件地址列表存入files参数里。

然后,使用len函数检查files参数里存入的文件地址的数量,如果一个都没有的话就输出相应的Log,然后结束脚本执行。

获取素材文件夹和CueSheet

使用find_object函数来获取素材文件夹和CueSheet,代码如下:

#获取注册了波形文件的工作单元

workunit=acproject.get_workunit("WorkUnit_Tutorial")["data"]

#获取波形文件注册所在的素材根目录文件夹

material_root_folder=acproject.get_material_rootfolder(workunit)["data"]

#获取创建了Cue的CueSheet

cuesheet=acproject.find_object(workunit,"CueSheet","Tutorial")["data"]

find_object函数需要“作为检索根目录的对象”“获取的对象类型”“获取的对象名称”这三个参数,此函数会返回一个从根目录开始往下检索,然后和指定的条件完全一致的第一个对象。

从波形文件列表创建Cue

接下来使用以下的函数,从之前的文件地址列表中一个一个取出文件地址,然后根据素材来创建Cue。创建Cue使用create_simple_cue函数,然后使用for语句,用来连续处理glob.glob函数获取的文件地址列表,记述如下:

forfileinfiles:

#在素材根目录文件夹里注册波形文件,创建素材

material=acproject.register_material(material_root_folder,file)["data"]

#根据创建的素材信息创建Cue

acproject.create_simple_cue(cuesheet,material)

create_simple_cue函数能够创建基本的cue,需要指定“目标的CueSheet”,“Cue所参照的素材”这两个参数,创建的Cue的名称将会使用素材原本的名称。

保存工程

#工程的保存

result=acproject.save_project_all()

ifnotresult["succeed"]:

acdebug.warning("工程文件保存失败。")

acdebug.log("[教程]使用find_object函数&复数波形文件的批量注册完成")

脚本的保存和执行

到此为止本节的教程就完成了,保存并执行该脚本。如果构建正常结束了,在“tutorial_data2”里应该会注册了以下的波形文件,同时生成相应的Cue。

使用find_objects函数

在之前我们介绍的关于各种操作CRIAtomCraft的函数,在一次调用里都是只能获取一个对象,但是find_objects可以在一次调用里就可以获取复数个对象,非常方便。

在这一小节里我们会写一个让工作单元里所有的波形区域,设置voice限数组额脚本。

在这一步教程里,我们会继续使用之前的教程“工程的创建与注册波形文件到Cue”所创建的工程。因此需要事先完成上一步的教程。

脚本的说明

新建一个脚本,双击创建的脚本,通过脚本编辑器来打开脚本。

为了能够在脚本列表里确认该脚本的概要,首先输入以下的说明文:

#--Description:[教程]使用find_objects函数对波形区域批量设置voice限数组

模组的导入

为了在脚本里操作AtomCraft,需要导入相应的模组,记述以下的处理。

importsys

importcri.atomcraft.debugasacdebug

importcri.atomcraft.projectasacproject

除了操作工程所需的project模组,还需要导入Log输出所需的debug模组。

获取要设置的voice限数组

获取voice限数组需要使用和之前的教程“音频数据的输出”时获取TargetConfig时候同样的函数,具体记述如下:

#获取voice限数组文件夹

voicelimit_group_folder=acproject.get_global_folder("VoiceLimitGroupFolder")["data"]

#获取voice限数组“VoiceLimitGroup_0”

voicelimit_group=acproject.get_child_object(voicelimit_group_folder,"VoiceLimitGroup","VoiceLimitGroup_0")["data"]

使用get_global_folder函数可以从全局设置中的voice限数组文件夹获取用来进行同时发声数管理的voice限数组。这之后,使用get_child_object函数,获取voice限数组文件夹的下一层的voice限数组“VoiceLimitGroup_0”,然后放入voicelimit_group参数里。

获取需要设置voice限数组的波形区域

我们使用以下函数:

#获取工作单元

workunit=acproject.get_workunit("WorkUnit_Tutorial")["data"]

#使用find_objects,获取CueSheet里包含的波形区域列表

waveform_regions=acproject.find_objects(workunit,"WaveformRegion")["data"]

find_object函数需要“检索的根对象”,“获取的对象类型”,这两个参数。这次我们需要获取工作单元以下所有的波形区域。

最后我们使用之前获取的波形区域列表,使用for文,一个一个的设置voice限数组。

#使用for文,从波形区域列表中一个一个取出波形区域

forregioninwaveform_regions:

#给波形区域设置voice限数组

acproject.set_value(region,"VoiceLimitGroup",voicelimit_group)

acdebug.log("[教程]使用find_object函数&复数波形区域批量设置voice限数组完成")

脚本的保存和执行

到此为止本节的教程就完成了,保存并执行该脚本。如果正常执行,那么工作单元内的所有的波形区域都应该设置了voice限数组“VoiceLimitGroup_0”。

使用get_child_object函数

在本节教程里我们会使用get_child_object函数,来获取复数的对象。比如获取CueSheet下的所有的Cue,然后根据命名规则来进行类别的设置。

脚本的说明

新建一个脚本,双击创建的脚本,通过脚本编辑器来打开脚本。

为了能够在脚本列表里确认该脚本的概要,首先输入以下的说明文:

#--Description:[教程]使用get_child_objects函数获取Cue,根据命名规则设置类别

模组的导入

为了在脚本里操作AtomCraft,需要导入相应的模组,记述以下的处理。

importsys

importcri.atomcraft.debugasacdebug

importcri.atomcraft.projectasacproject

除了操作工程所需的project模组,还需要导入Log输出所需的debug模组。

准备需要设置的类别

在之前的“使用find_object函数”的教程里,我们创建了名称以“sfx_”开头的复数个Cue。我们将这些Cue设置到类别“sfx”里。

使用以下的函数,将工程创建时默认创建的类别“Category_0”重命名为“sfx”。

#准备好Cue所需要的类别

#获取类别文件夹

category_folder=acproject.get_global_folder("CategoryFolder")["data"]

#获取类别

category=acproject.find_object(category_folder,"Category","Category_0")["data"]

#重命名类别名

acproject.set_value(category,"Name","sfx")

首先使用get_global_folder函数,获取类别文件夹。

然后使用find_object函数,从类别文件夹里获取“Category_0”类别,然后使用set_value函数进行重命名。

获取需要设置类别的CueSheet下面的Cue

Cue的获取同样使用在同一层级里可以获取同种类的复数对象列表的get_child_objects函数。代码如下:

#获取工作单元

workunit=acproject.get_workunit("WorkUnit_Tutorial")["data"]

#获取CueSheet

cuesheet=acproject.find_object(workunit,"CueSheet","Tutorial")["data"]

#获取CueSheet以下复数的Cue】

cues=acproject.get_child_objects(cuesheet,"Cue")["data"]

get_child_objects函数需要“父对象”,“获取的对象的类型”这两个参数,将获取的cue的列表保存到cues参数里。

获取与条件相符的Cue

从使用get_child_objects函数获取到的Cue列表里,创建名字以“sfx”开头的Cue列表,记述如下:

#需要设置类别的Cue列表

#名字的开头包含了“sfx”的Cue的列表

cues_for_set_categories=[]

##检查对象的Cue対象

forcueincues:

#获取Cue名称

cue_name=acproject.get_value(cue,"Name")["data"]

#使用字符串函数startswith,检查名称开头是否包含sfx的字符

ifcue_name.startswith(sfx):

#添加到列表

cues_for_set_categories.append(cue)

使用for语句,从cues里一个一个的取出cue,然后使用get_value来获取其名称。

然后使用find函数来检查名称开头是否包含sfx,如果是的话就使用append函数添加到cues_for_set_categories这个筛选之后的cue列表里。

给Cue设置类别

最后,我们使用cues_for_set_categories这个列表给里面的cue设置对应的类别,在这里,我们使用了只需要一次调用就可以进行复数设置的以下函数:

#类别设置

#在复数个cue里批量设置类别的时候可以使用add_category_to_cues。

acproject.add_category_to_cues(cues_for_set_categories,category)

acdebug.log("[教程]使用get_child_objects函数获取cue,根据命名规则设置类别完成")

脚本的保存和执行

到此为止本节的教程就完成了,保存并执行该脚本。如果正常执行,就应该会和下图一样,CategoryGroup_0以下的“Category_0”变成“sfx”,然后名字以sfx开头的Cue会设置为“sfx”类别里。

本次关于CRIAtomCraftRobot的介绍内容到这里就结束了,下一期我们将为大家讲解脚本编辑器的一些便利功能。

若要使用CRIAtomCraftRobot,请前往SDK下载页面进行版本更新

sdk.criware.cn往期推荐

1、什么是CRIAtomRobot?

2、理解CRIAtomCraft的对象的构造

3、工程的创建与注册波形文件到Cue

4、参数的变更及预览

预览时标签不可点收录于话题#个上一篇下一篇
转载请注明:http://www.lwblm.com/bytj/12487.html
  • 上一篇文章:
  • 下一篇文章: