欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 运动娱乐> 一种声源控制的方法、装置、计算机设备和介质独创技术52579字

一种声源控制的方法、装置、计算机设备和介质

2021-03-06 20:55:05

一种声源控制的方法、装置、计算机设备和介质

  技术领域

  本申请涉及声音控制领域,具体而言,涉及一种声源控制的方法、装置、计算机设备和介质。

  背景技术

  在科技飞速发展的当今,能够供人们使用的终端设备越来越智能,而且,基于终端设备应运而生的网络游戏也越来越多样。在休闲娱乐的时候,大多数人会通过网络游戏来打发时间。游戏运营商为了让网络游戏能够吸引更多的用户,会将网络游戏设计的更加具有真实性,让用户有种身临其境的感觉。

  一般,网络游戏能够让用户有身临其境的感觉,基本上是通过视觉效果和听觉效果来实现的。就听觉效果而言,需要让网络游戏中的任何一个对象都能发声,提高了网络游戏的仿真效果,进而让用户的体验感更加真实,但是每个对象都发声,需要大量的计算资源来控制,资源消耗过多。

  发明内容

  有鉴于此,本申请的目的在于提供一种声源控制的方法、装置、计算机设备和介质,用于解决现有技术中系统耗能过大的问题。

  第一方面,本申请实施例提供了一种声源控制的方法,通过终端设备提供的图形用户界面显示部分游戏场景,在所述游戏场景中包括虚拟角色、体积声源和点声源,包括:

  响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动,并根据所述虚拟角色当前的位置和第一目标体积声源的位置,判断所述虚拟角色是否在所述第一目标体积声源内;

  若所述虚拟角色在所述第一目标体积声源内,则将所述第一目标体积声源的发声位置设置在所述虚拟角色上,且将位于所述第一目标体积声源内部的点声源调整为工作状态;

  若所述虚拟角色不在所述第一目标体积声源内,则将位于所述第一目标体积声源内部的点声源调整为关闭状态。

  可选的,若所述虚拟角色不在所述第一目标体积声源内,所述方法还包括,包括:

  将所述第一目标体积声源的发声位置设置在所述第一目标体积声源靠近所述虚拟角色的一侧。

  可选的,所述将所述第一目标体积声源的发声位置设置在所述第一目标体积声源靠近所述虚拟角色的一侧,包括:

  将所述第一目标体积声源的发声位置设置在所述第一目标体积声源的目标位置处;其中,所述目标位置是目标连线与所述第一目标体积声源边界的交点所在的位置;所述目标连线是所述第一目标体积声源的物理中心的位置与所述虚拟角色的位置之间的连线。

  可选的,所述响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动之前,所述方法还包括:

  根据所述虚拟角色当前的位置和至少两个候选体积声源的位置,确定所述至少两个候选体积声源中与所述虚拟角色之间的距离小于第一预设距离的候选体积声源,作为所述第一目标体积声源;

  将所述第一目标体积声源调整为工作状态。

  可选的,所述根据所述虚拟角色当前的位置和至少两个候选体积声源的位置,确定所述至少两个候选体积声源中与所述虚拟角色之间的距离小于第一预设距离的候选体积声源,作为所述第一目标体积声源,包括:

  针对每个参考区域,根据所述参考区域中的候选体积声源的位置和所述虚拟角色当前的位置,确定所述参考区域中的候选体积声源中与所述虚拟角色之间的距离小于第一预设距离的候选体积声源,作为所述第一目标体积声源;其中,所述每个参考区域分别位于所述虚拟角色不同的方向。

  可选的,所述响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动之前,所述方法还包括:

  根据所述虚拟角色当前的位置和至少两个候选体积声源的位置,利用预设的邻近算法从所述至少两个候选体积声源中选择一个候选体积声源作为所述第一目标体积声源;

  将所述第一目标体积声源调整为工作状态。

  可选的,所述方法还包括:

  将所述至少两个候选体积声源中除所述第一目标体积声源外的其他候选体积声源调整为关闭状态。

  可选的,所述方法还包括:

  若所述虚拟角色在所述第一目标体积声源内,将与虚拟角色的位置之间的距离大于第二预设距离的位于所述第一目标体积声源外部的点声源调整为关闭状态。

  可选的,所述方法还包括:

  若所述虚拟角色在所述第一目标体积声源内,将与虚拟角色的位置之间的距离大于第二预设距离的位于所述第一目标体积声源内部的点声源调整为关闭状态。

  可选的,所述方法还包括:

  若所述虚拟角色不在所述第一目标体积声源内,根据所述虚拟角色当前的位置和位于所述第一目标体积声源外的点声源的位置,计算所述虚拟角色的位置与位于所述第一目标体积声源外的点声源的位置之间的距离;

  若位于所述第一目标体积声源外的点声源的位置与所述虚拟角色的位置之间的距离大于第三预设距离,则将与所述虚拟角色的位置之间的距离大于第三预设距离的位于所述第一目标体积声源外的点声源调整为关闭状态。

  可选的,所述方法还包括:

  根据所述虚拟角色的位置和点声源的位置,计算每个点声源与所述虚拟角色之间的距离;

  根据每个点声源与所述虚拟角色之间的距离确定对应的点声源的衰减系数;

  根据每个点声源的衰减系数,控制对应的点声源的发声策略。

  可选的,所述方法还包括:

  若所述虚拟角色不在所述第一目标体积声源内,根据所述虚拟角色的位置和所述第一目标体积声源的位置,计算所述第一目标体积声源与所述虚拟角色之间的距离;

  根据所述第一目标体积声源与所述虚拟角色之间的距离确定所述第一目标体积声源的衰减系数;

  根据所述第一目标体积声源的衰减系数,控制所述第一目标体积声源的发声策略。

  第二方面,本申请实施例提供了一种声源控制的装置,通过终端设备提供的图形用户界面显示部分游戏场景,在所述游戏场景中包括虚拟角色、体积声源和点声源,包括:

  移动模块,用于响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动;

  判断模块,用于根据所述虚拟角色当前的位置和第一目标体积声源的位置,判断所述虚拟角色是否在所述第一目标体积声源内;

  第一调整模块,用于若所述虚拟角色在所述第一目标体积声源内,则将所述第一目标体积声源的发声位置设置在所述虚拟角色上,且将位于所述第一目标体积声源内部的点声源调整为工作状态;

  第二调整模块,用于若所述虚拟角色不在所述第一目标体积声源内,则将位于所述第一目标体积声源内部的点声源调整为关闭状态。

  第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

  第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。

  本申请实施例提出的一种声源控制的方法,首先,响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动,并根据所述虚拟角色当前的位置和第一目标体积声源的位置,判断所述虚拟角色是否在所述第一目标体积声源内;然后,若所述虚拟角色在所述第一目标体积声源内,则将所述第一目标体积声源的发声位置设置在所述虚拟角色上,且将位于所述第一目标体积声源内部的点声源调整为工作状态;或者,若所述虚拟角色不在所述第一目标体积声源内,则将位于所述第一目标体积声源内部的点声源调整为关闭状态。

  在某种实施方式下,本申请所提供的方法,根据虚拟角色的位置来确定第一目标体积声源的发声位置,并调整第一目标体积声源内部点声源的工作状态,这种调整点声源工作状态的方式,可以让点声源不必实时发声,减少了系统中计算资源的消耗。

  为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

  附图说明

  为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

  图1为本申请实施例提供的一种声源控制的方法的流程示意图;

  图2为本申请实施例提供的一种游戏场景的示意图;

  图3为本申请实施例提供另一种种游戏场景的示意图;

  图4为本申请实施例提供的一种声源控制的装置的结构示意图;

  图5为本申请实施例提供的一种计算机设备的结构示意图;

  图6为本申请实施例提供的另一种游戏场景的示意图。

  具体实施方式

  为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

  在现有技术中,游戏运营商为了让网络游戏的游戏场景更加真实,会让游戏场景中每一个元素(如,山、飞船、河流、森林、风、雨等)都具备发声效果。元素可以是体积较大的元素,也可以是体积较小的元素,对于一个体积较大的元素而言,可以由无数个小的元素组合而成。体积较大的元素会有一个发声效果,组成该体积较大元素的小元素也会有对应的发声效果,比如,对于一个森林而言,无数棵树组成该森林,森林所发出的声音和单棵树所发出的声音是不同的,森林所发出的声音是多棵树发出的声音综合在一起的声音。无论是体积较大的元素,还是体积较小的元素,能够发声的元素就可以作为声源。本申请中将体积较大的元素定义为体积声源,体积声源的发声位置位于体积声源内部的物理中心的位置。本申请中将体积较小的元素定义为点声源,点声源的发声位置与点声源的位置一直。

  但是,网络游戏中所发出的声音是由系统所控制的,当游戏场景中太多的元素发声时,会消耗系统中更多的计算资源,该声音所占用的计算资源过多,控制其他方面的计算资源就会减少,这样对游戏的流畅性会产生一定的影响。

  基于上述原因,本申请实施例提供了一种声源控制的方法,如图1所示,通过终端设备提供的图形用户界面显示部分游戏场景,在游戏场景中包括虚拟角色、体积声源和点声源,包括:

  S101,响应移动控制指令,控制虚拟角色在游戏场景中进行移动,并根据虚拟角色当前的位置和第一目标体积声源的位置,判断虚拟角色是否在第一目标体积声源内;

  S102,若虚拟角色在第一目标体积声源内,则将第一目标体积声源的发声位置设置在虚拟角色上,且将位于第一目标体积声源内部的点声源调整为工作状态;

  S103,若虚拟角色不在第一目标体积声源内,则将位于第一目标体积声源内部的点声源调整为关闭状态。

  在本申请实施例中,本申请中所提到的终端设备主要是指用于显示游戏画面,并能够对虚拟角色进行控制操作的智能设备,终端设备可以包括以下设备中的任意一种:智能手机、平板电脑、笔记本电脑和台式电脑等。终端设备可以包括自身可以对控制指令进行计算的设备和自身不能对控制指令进行计算的设备,可以对控制指令进行计算的设备在接收到用户所输入的控制指令后,对该控制指令进行计算后根据该控制指令进而控制虚拟角色;不能对控制指令进行计算的设备,可以在接收到控制指令后将该控制指令上传至云服务器,在接收到云服务器对控制指令的处理结果后,根据处理结果对虚拟角色进行控制。图形用户界面是指在终端设备的显示屏中显示游戏画面的界面。游戏场景是指在游戏进行过程中,承载虚拟角色的虚拟游戏空间,虚拟角色可以在游戏场景中受用户向终端设备所下达的操作指令的控制而进行移动、技能释放等动作。游戏场景可以包括以下元素中的任意一种或多种:游戏虚拟角色元素、游戏发声元素等。游戏虚拟角色元素就是受用户控制的虚拟角色,在游戏场景中的虚拟角色对应的声源状态一直处于工作状态。声源的状态有两种,分别是工作状态和关闭状态,工作状态下声源(点声源或者体积声源)都可以发出对应的声音,及时发声时的音量为0也是处于工作状态,在关闭状态下,声源(点声源或者体积声源)不能发出声音。发声元素可以包括体积声源和点声源,体积声源可以是体积较大、能够发声的元素,如,山、飞船、河流、森林、风、雨等。体积声源的发声位置通常位于体积声源的物理中心位置(如重心位置)。点声源可以是体积较小、能够发声的元素,如。雨滴、树、鸟、石头等。点声源的发声位置与点声源的位置重合。体积声源可以由多个点声源组成。游戏画面是指在指定视角(如以用户所控制的虚拟角色的眼睛为视角)所观察到的虚拟世界中的一个局部画面,该局部画面是呈现在图形用户界面上的。图形用户界面中显示的就是能够被用虚拟角色的眼睛所看到的游戏画面。

  游戏场景是指正常进行游戏过程中所使用的虚拟场景(如游戏中的某个空间),在该场景中可以存在大量的受不同用户所控制的虚拟角色,也可以包括多个可以发声的元素(如,山、飞船、河流、森林、风、雨、树、鸟、石头等)。

  在上述步骤S101中,移动控制指令可以是终端设备所发出的,也可以是云服务器所发出的,移动控制指令可以控制虚拟角色在游戏场景中进行移动。第一目标体积声源可以是发出的声音能够被虚拟角色所听到的体积声源。由于第一目标体积声源的体积较大,因此,需要用一个比较具有代表性的点来表征第一目标体积声源的位置,对于一个体积较大的元素而言,物理中心的位置可以表征第一目标体积声源的位置,其中,物理中心的位置可以是以下位置中的任意一种:质心的位置、重心的位置等。或者,用第一目标体积声源的边界位置表征第一目标体积声源的位置。

  具体实施时,当用第一目标体积声源的边界位置表征第一目标体积声源的位置时,由于第一目标体积声源的体积较大,在某种情况下,虚拟角色是可以进入到第一目标体积声源的内部的,因此,受移动控制指令控制的虚拟角色在游戏场景中进行移动时,应当实时判断该虚拟角色是否移动到第一目标体积声源内部。虚拟角色是否进入到了第一目标体积声源内部,需要根据虚拟角色的当前位置和第一目标体积声源的位置(第一目标体积声源的边界)来确定。具体计算时可以依据虚拟角色是否位于目标体积声源的边界内来确定。

  或者,当用物理中心表征第一目标体积声源的位置时,判断虚拟角色是否进入到了第一目标体积声源内部时,首先可以根据虚拟角色的当前位置和第一目标体积声源的位置(第一目标体积声源的物理中心),计算虚拟角色与第一目标体积声源之间的距离,而后,如果计算得到的距离足够近(如小于第一目标体积声源的边界和体积目标体积声源的物理中心之间的距离),则确定虚拟角色的位置在第一目标体积声源的边界内时,则确定虚拟角色在第一目标体积声源内。

  在执行了步骤S101之后,可以根据确定出的虚拟角色是否在第一目标体积声源内,来确定是执行步骤S102还是执行步骤S103。

  在上述步骤S102和103中,第一目标体积声源的发声位置指的是在游戏场景中一个虚拟的空间点,也就是体积声源挂接在该点上,该发声位置可以是用来计算虚拟角色与该发声位置之间距离的,并根据该距离计算玩家(操作该虚拟角色的用户)听到该体积声源的声音大小的。

  具体实施时,当虚拟角色在第一目标体积声源内部时,可以将第一目标体积声源的发声位置设置在虚拟角色上(即,第一目标体积声源的发声位置设置在虚拟角色的视角位置),让第一目标体积声源的发声位置随着虚拟角色的移动而移动,相当于,虚拟角色在第一目标体积声源内部进行移动时,控制虚拟角色的用户听到的第一目标体积声源发出的声音是不会随着虚拟角色的移动而发生音效的变化,这样,控制虚拟角色的用户所听到的声音更真实。

  在第一目标体积声源发声时,第一目标体积声源内部的点声源也会发声,点声源发出的声音会更加简单,控制虚拟角色的用户在听到第一目标体积声源发出的声音的同时,还可以听到每个点声源所发出的声音,这样,会更有真实性,用户能够有一种身临其境的感觉,因此,当虚拟角色在第一目标体积声源内部进行移动时,要把第一目标体积声源内部的点声源都调整为工作状态,让点声源进行发声。与第一目标体积声源不同的是,点声源并不需要随着虚拟角色的移动而移动,点声源的位置始终都是固定的。

  具体实施时,当虚拟角色在第一目标体积声源外部时,第一目标体积声源的声音会将点声源的声音覆盖,这样,操控虚拟角色的用户可能也不会听到点声源的声音,这样,就造成了控制点声源发声的计算资源的浪费,因此,为了减少计算资源的浪费,可以将第一目标体积声源内部的点声源的调整为关闭状态,使点声源不发声。

  本申请的实施例中,根据虚拟角色的位置来确定第一目标体积声源的发声位置,并调整第一目标体积声源内部点声源的工作状态,这种调整点声源工作状态的方式,可以让点声源不必实时处于工作状态,减少了系统中计算资源的消耗。

  由于第一目标体积声源的体积较大,而第一目标体积声源的发声位置仅仅是一个点,因此,当虚拟角色不在第一目标体积声源内部时,第一目标体积声源所发出声音的音效不会随着虚拟角色的位置发生变化,不能将第一目标体积声源的发声位置设置在虚拟角色上,为了让用户所听到的声音更具有真实性,需要将第一目标体积声源的发声位置设置在第一目标体积声源上,让声音从对应的第一目标体积声源上发出,会让用户体验更加真实。第一目标体积声源所发出的声音就是第一目标体积声源内部所有点声源发出声音的综合音效,为了保证真实性,第一目标体积声源的发声位置的设置位置就需要慎重考虑。进而,第一目标体积声源的发声位置可以按照如下方式设置:

  步骤1031,将第一目标体积声源的发声位置设置在第一目标体积声源靠近虚拟角色的一侧。

  在上述步骤1031中,虚拟角色不在第一目标体积声源内部时,虚拟角色在距离第一目标体积声源不远的位置,控制虚拟角色的用户会听到第一目标体积声源的声音,但为了让用户听到的第一目标体积声源的声音更加真实,不能把第一目标体积声源的发声位置设置在第一目标体积声源远离虚拟角色的一侧,而是应该把第一目标体积声源的发声位置设置在朝向虚拟角色的一侧。

  例如,如图2所示,在游戏场景中片森林和一个虚拟角色,将森林划分为两个区域,区域A是森林中远离虚拟角色的一侧,区域B是森林中靠近虚拟角色的一侧,如果将森林的发声位置设置在区域A处,那控制虚拟角色的用户听到的声音就是较远位置发出来的,但是用户所看到的场景中,虚拟角色距离森林的位置并没有很远,这样用户所听到的声音和看到的画面是不匹配的,如果将森林的发声位置设置在区域B处,那控制虚拟角色的用户听到的声音就是较近位置发出来的,并且,用户所看到的场景中,虚拟角色距离森林的位置也比较近,这样用户所听到的声音和看到的画面是不匹配的。因此,当虚拟角色位于森林之外时,需要将森林的发声位置设置在区域B处。

  当虚拟角色位于第一目标体积声源外部时,第一目标体积声源的发声位置需要设置在靠近虚拟角色的一侧,更具体的,步骤1031,包括:

  步骤10311,将第一目标体积声源的发声位置设置在第一目标体积声源的目标位置处;其中,目标位置是目标连线与第一目标体积声源边界的交点所在的位置;目标连线是第一目标体积声源的物理中心的位置与虚拟角色的位置之间的连线。

  在上述步骤10311中,目标位置是目标连线与第一目标体积声源边界的交点所在的位置;目标连线是第一目标体积声源的物理中心的位置与虚拟角色的位置之间的连线。

  在具体实施时,如果体积声源的边界是完整的球形(球形的球心是体积声源的重心),则目标位置是第一目标体积声源中距离虚拟角色最近的位置;如果第一目标体积声源是不规则的形状(如图3所示),则目标位置可能是第一目标体积声源中距离虚拟角色较近的位置,但又不是最近的位置。

  当第一目标体积声源的边界是完整的球形,将第一目标体积声源的发声位置设置在距离虚拟角色最近的位置,用户听到的第一目标体积声源的声音会更加清晰。

  当第一目标体积声源是不规则的形状,如果将第一目标体积声源的发声位置设置在第一目标体积声源中距离虚拟角色最近的位置,则用户所听到的声音相较于第一目标体积声源所发出声音的音效较大,这与用户所看到的画面是不匹配的,会降低用户的沉浸感。而将第一目标体积声源的发声位置设置在目标位置处(即目标连线与第一目标体积声源边界的交点所在的位置),则用户所听到的声音基本上还是从第一目标体积声源的主体位置发出来的,这与用户所看到的画面还是比较匹配的,让用户听到的声音更加真实,因此,可以将第一目标体积声源的发声位置设置在目标位置。

  比如,如图3所示,在游戏场景中有一座山和一个虚拟角色,山的质心位置为A,山中距离虚拟角色最近的位置为C,虚拟角色的位置为B,位置A与位置B之间的连线与山的边界的交点位置为D。如果将山的发声位置设置在C处,用户所听到的山的声音会比用户所看到的画面中山所发出的声音更大一些,这样会降低用户的沉浸感,而将山的发声位置设置在D处,则用户所听到的山的声音是从山的主体位置发出来的,这与用户所看到的画面是基本上相匹配的,增强了用户的沉浸感。

  在游戏场景中通常会有多个体积声源,为了减少系统中计算资源的消耗,就需要控制处于工作状态的体积声源的数量,因此,步骤响应移动控制指令,控制虚拟角色在游戏场景中进行移动之前,包括:

  步骤1011,根据虚拟角色当前的位置和至少两个候选体积声源的位置,确定至少两个候选体积声源中与虚拟角色之间的距离小于第一预设距离的候选体积声源,作为所述第一目标体积声源;

  步骤1012,将第一目标体积声源调整为工作状态。

  在上述步骤1011中,候选体积声源指的是位于游戏场景中的任意一个体积声源,在游戏场景中包括至少两个候选体积声源。第一预设距离是人为设置的数值,可以是用户能够听到的声音所对应的虚拟角色与体积声源之间的最大距离。

  具体实施时,可以通过第一预设距离在多个候选体积声源中筛选出用户能够听到声源的第一目标体积声源。

  在上述步骤1012中,在确定出第一目标体积声源后,将第一目标体积声源调整为工作状态(也就是将不是第一目标体积声源的体积声源调整为关闭状态),这样限制了处于工作状态的第一目标体积声源的数量,节省了计算资源。当然还需要确定虚拟角色是否位于第一目标体积声源内部,进而判断是否控制第一目标体积声源内部的点声源的是否发声,因此,还需要根据第一目标体积声源与虚拟角色之间的距离确定虚拟角色是否在第一目标体积声源内部。

  更具体的,在步骤响应移动控制指令,控制所述虚拟角色在所述游戏场景中进行移动之前,步骤1011,包括:

  步骤1013,根据虚拟角色当前的位置和至少两个候选体积声源的位置,利用预设的邻近算法从在至少两个候选体积声源中选择一个候选体积声源作为第一目标体积声源;

  步骤1014,将所述第一目标体积声源调整为工作状态。

  在上述步骤1013中,邻近算法可以确定出与虚拟角色相邻的指定数量的体积声源。指定数量是人为规定的。

  在具体实施时,邻近算法具体是kNN(k-NearestNeighbor,K最近邻分类算法),K为指定数量。通过kNN算法筛选第一目标体积声源,就是在候选体积声源中筛选出与虚拟角色之间的距离最近的K个第一目标体积声源。当然,还可以采用其他的距离筛选方法来确定第一目标体积声源。

  在上述步骤S1014中,在确定出第一目标体积声源后,将第一目标体积声源调整为工作状态(也就是将不是第一目标体积声源的体积声源调整为关闭状态),这样限制了处于工作状态的第一目标体积声源的数量,节省了计算资源。当然还需要根据第一目标体积声源与虚拟角色之间的距离确定虚拟角色是否在第一目标体积声源内部,进而判断是否控制第一目标体积声源内部的点声源的是否发声,因此,还需要根据第一目标体积声源与虚拟角色之间的距离确定虚拟角色是否在第一目标体积声源内部。

  在游戏场景中,有能够发声的体积声源,也会有不能够发声的体积声源,因此,本申请中的方案还包括:

  步骤104,将至少两个候选体积声源中除第一目标体积声源外的其他候选体积声源调整为关闭状态。

  在上述步骤104中,至少两个候选体积声源中除了第一目标体积声源之外的体积声源可以是与虚拟角色之间的距离大于第一预设距离的体积声源。除了第一目标体积声源之外的候选体积声源即使发出声音,也会因为音量衰减导致用户听不到的,因此,为了减少资源的消耗,可以将第一目标体积声源之外的候选体积声源调整为关闭状态。

  在现实场景中,如果发声事物与人的距离较远时,人是听不到发声事物所发出的声音的。因此,在具体实施时,根据虚拟角色与候选体积声源之间的距离,筛选出与虚拟角色之间的距离大于第一预设距离的候选体积声源,这部分候选体积声源就是除了第一目标体积声源之外的候选体积声源。除了第一目标体积声源之外的候选体积声源与虚拟角色之间的距离较远,即使除了第一目标体积声源之外的候选体积声源发出声音,用户也是听不到的,因此,此时可以将除了第一目标体积声源之外的候选体积声源调整为关闭状态,这样就节省了系统的计算资源。

  同样的,在游戏场景中也会有点声源与虚拟角色之间的距离过远,按照常理来说,控制虚拟角色的用户也是听不到距离过远的点声源所发出的声音的,因此,步骤S102包括:

  步骤1021,若虚拟角色在第一目标体积声源内,且第一候选点声源位于第一目标体积声源的外部时,将与虚拟角色的位置之间的距离大于第二预设距离的位于第一目标体积声源外部的点声源调整为关闭状态。

  在上述步骤1021中,第二预设距离是虚拟角色位于第一目标体积声源内部时,虚拟角色能够听到点声源所发出声音的最远距离。

  具体实施时,若虚拟角色在所述第一目标体积声源内,则将第一目标体积声源的发声位置设置在虚拟角色上,且将与虚拟角色的位置之间的距离大于第二预设距离的位于第一目标体积声源外部的点声源调整为关闭状态。对位于第一目标体积声源外部的点声源进行筛选,将没必要发声的位于第一目标体积声源外部的点声源调整为关闭状态,节省了计算资源。

  当虚拟角色在第一目标体积声源内部时,第一目标体积声源内部的点声源与虚拟角色当前的位置也是有远有近的,因此,步骤若所述虚拟角色在第一目标体积声源内,将位于第一目标体积声源内部的点声源调整为工作状态,包括:

  步骤1022,若虚拟角色在第一目标体积声源内,且第二候选点声源位于第一目标体积声源的内部时,将与虚拟角色的位置之间的距离大于第二预设距离的位于第一目标体积声源内部的点声源调整为关闭状态。

  在上述步骤1022中,第二预设距离是人为设置的数值,是虚拟角色位于第一目标体积声源内部时,虚拟角色能够听到点声源所发出声音的最远距离。

  具体实施时,与虚拟角色之间的距离大于第二预设距离的位于第一目标体积声源内部的发出的声音,用户是听不到的,因此,即使与虚拟角色之间的距离大于第二预设距离的点声源位于第一目标体积声源内部,也可以调整为关闭状态,这样就减少计算资源的消耗。

  类似的,当点声源位于第一目标体积声源外部的时候,也可以根据虚拟角色和点声源之间的距离来控制点声源的是否工作,即本申请所提供的方法还包括:

  步骤106,若虚拟角色不在第一目标体积声源内,根据虚拟角色当前的位置和位于第一目标体积声源外的点声源的位置,计算虚拟角色的位置与位于第一目标体积声源外的点声源的位置之间的距离;

  步骤107,若位于第一目标体积声源外的点声源的位置与虚拟角色的位置之间的距离大于第三预设距离,则将与虚拟角色的位置之间的距离大于第三预设距离的位于第一目标体积声源外的点声源调整为关闭状态。

  在上述步骤106中,具体实施时,每个位于第一目标体积声源外的点声源都有对应的位置信息,根据位于第一目标体积声源外的点声源的位置和虚拟角色的位置,就可以计算出虚拟角色与每个位于第一目标体积声源外的点声源之间的距离。

  在上述步骤107中,第三预设距离是人为设置的数值,是虚拟角色位于第一目标体积声源外部时,虚拟角色能够听到点声源所发出声音的最远距离。当虚拟角色位于第一目标体积声源内部时,第一目标体积声源内部会有很多的点声源发声,声音环境比较嘈杂;而当虚拟角色位于第一目标体积声源内部时,围绕在虚拟角色周边的点声源数量较少,声音环境比较简单。因此,虚拟角色位于第一目标体积声源内部时和虚拟角色位于第一目标体积声源外部时,用户能够听到的点声源所发出声音的最远距离可能是不同的(即,第三预设距离与第二预设距离可能是不同的)。

  具体实施时,根据虚拟角色与每个位于第一目标体积声源外的点声源之间的距离,筛选出与虚拟角色之间的距离大于第三预设距离的位于第一目标体积声源外的点声源,筛选出来的位于第一目标体积声源外的点声源与虚拟角色之间的距离较远,按照常理来说,用户是听不到与虚拟角色之间的距离大于第三预设距离的位于第一目标体积声源外的点声源的声音的,因此,为了节约系统的计算资源,可以直接调整与虚拟角色之间的距离大于第三预设距离的位于第一目标体积声源外的点声源为关闭状态。

  在现实场景中,针对同一个对象而言,与该对象的距离越近,听到该对象所发出的声音越清晰,与该对象的距离越远,听到该对象所发出的声音越模糊。因此,本方案还包括:

  步骤201,根据虚拟角色的位置和点声源的位置,计算每个点声源与虚拟角色之间的距离;

  步骤202,根据每个点声源与虚拟角色之间的距离确定对应的点声源的衰减系数;

  步骤203,根据每个点声源的衰减系数,控制对应的点声源的发声策略。

  在上述步骤201中,只要有虚拟角色的位置和点声源的位置,就可以计算出每个点声源与虚拟角色之间的距离。

  在上述步骤202中,衰减系数是控制音量大小的系数,衰减系数与音量的大小之间成相关性的,衰减系数越大,音量越小,衰减系数越小,音量越大。衰减系数与距离是成相关性的,距离越远,衰减系数越大,听到的声音就越模糊,距离越近,衰减系数越小,听到的声音就越清晰。

  在上述步骤203中,发声策略主要指的是调整发出声音的音量大小。

  具体实施时,针对每一个处于工作状态的点声源,可以根据该点声源所对应的衰减系数来控制点声源的发声策略,也就是,根据衰减系数来调整该点声源所发出声音的音量的大小。调整距离虚拟角色越远的点声源的音量变小,这种调整方式更加贴近现实场景。

  同理,当虚拟角色在第一目标体积声源内部时,第一目标体积声源的发声位置是一直挂接在虚拟角色身上的,第一目标体积声源的发出的声音是不会衰减的。当虚拟角色位于第一目标体积声源外部时,针对同一个体积声源,与该体积声源的距离越近,听到该体积声源所发出的声音越清晰,与该体积声源的距离越远,听到该体积声源所发出的声音越模糊。因此,本方案还包括:

  步骤301,若虚拟角色不在第一目标体积声源内,根据虚拟角色的位置和第一目标体积声源的位置,计算每个第一目标体积声源与虚拟角色之间的距离;

  步骤302,根据第一目标体积声源与虚拟角色之间的距离确定第一目标体积声源的衰减系数;

  步骤303,根据第一目标体积声源的衰减系数,控制第一目标体积声源的发声策略。

  在上述步骤301中,当虚拟角色位于第一目标体积声源外部时,只要有虚拟角色的位置和第一目标体积声源的位置(第一目标体积声源的发声位置),就可以计算出每个第一目标体积声源与虚拟角色之间的距离。

  在上述步骤302中,衰减系数是控制音量大小的系数,衰减系数与音量的大小之间成相关性的,衰减系数越大,音量越小,衰减系数越小,音量越大。衰减系数与距离是成相关性的,距离越远,衰减系数越大,听到的声音就越模糊,距离越近,衰减系数越小,听到的声音就越清晰。

  在上述步骤303中,发声策略主要指的是调整发出声音的音量大小。

  具体实施时,针对每一个处于工作状态的第一目标体积声源,可以根据该第一目标体积声源所对应的衰减系数来控制第一目标体积声源的发声策略,也就是,根据衰减系数来调整该第一目标体积声源所发出声音的音量的大小。调整距离虚拟角色越远的第一目标体积声源的音量变小,这种调整方式更加贴近现实场景。

  即使利用预设距离筛选出第一目标体积声源,用户可能还是会听到很多个第一目标体积声源所发出的声音,这样,用户所听到的声音就会变的杂乱无章,为了让用户能够听到更加清晰的声音,步骤S1011,包括:

  步骤1013,针对每个参考区域,根据参考区域中的候选体积声源的位置和虚拟角色当前的位置,确定参考区域中的候选体积声源中与虚拟角色之间的距离小于第一预设距离的候选体积声源,作为第一目标体积声源;其中,每个参考区域分别位于虚拟角色不同的方向。

  在上述步骤1013中,参考区域分别位于虚拟角色不同的方向,也就是,以虚拟角色为中心按照不同的方位将虚拟角色周围的区域划分为不同的参考区域,如,东侧区域、南侧区域、北侧区域和西侧区域等。

  具体实施时,位于第一预设距离范围内的候选体积声源并不是规则排不在虚拟角色周围的,有的候选体积声源可能距离虚拟角色较近,有的候选体积声源可能距离虚拟角色较远,又或者,在有些参考区域中可能分布了多个候选体积声源,有的参考区域中距离虚拟角色最近的候选体积声源并不在第一预设距离范围内。为了让用户听到的声音更真实,可以让第一预设距离范围内,各个参考区域中距离虚拟角色最近的候选体积声源发声,因此,将位于第一预设距离范围内的,各个参考区域中距离虚拟角色最近的候选体积声源作为第一目标体积声源。这样,用户可以听到各个方向的候选体积声源所发出的声源,用户听到的效果更佳真实。

  比如,如图6所示,在游戏场景中有一个虚拟角色,共有12个体积声源,位于预设距离内的共有9个体积声源,分别为A1、A2、A3、A4、B1、B2、B3、B4和B 5,在东侧区域距离虚拟角色最近的是A1、在南侧区域距离虚拟角色最近的是A2、在北侧区域距离虚拟角色最近的是A3和在西侧区域距离虚拟角色最近的是A4,为了让虚拟角色听到的声音更加真实,则只让A1、A2、A3和A4作为第一目标体积声源。

  在本申请中,根据虚拟角色当前的位置来确定第一目标体积声源的发声位置,并调整第一目标体积声源内部点声源的工作状态,这种调整点声源工作状态的方式,可以让点声源不必实时发声,减少了系统中计算资源的消耗。当然,为了让用户听到的声音更加真实,当虚拟角色位于第一目标体积声源外部时,将第一目标体积声源的发声位置设置在第一目标体积声源的目标位置处,可以让用户听到的声音与看到的画面相匹配。与虚拟角色之间的距离大于第二预设距离的点声源所发出的声音用户是听不到的,因此,为了减少计算资源的消耗,将与虚拟角色之间的距离大于第二预设距离的点声源调整为关闭状态。同理,当虚拟角色位于第一目标体积声源外部时,与虚拟角色之间的距离大于第二预设距离的第二目标体积声源所发出的声音用户也是听不到的,因此,当虚拟角色位于第一目标体积声源外部时,可以根据虚拟角色与第一目标体积声源之间的距离,调整,为了减少计算资源的消耗,将与虚拟角色之间的距离大于第二预设距离的第二目标体积声源调整为关闭状态。距离的远近可以决定用户听到声音的大小,因此,针对点声源而言,可以根据与虚拟角色之间的距离确定点声源的衰减系数,并根据衰减系数控制点声源的发声,使得用户听到的声音更加真实。同理,当所述虚拟角色位于所述第一目标体积声源外部时,第一目标体积声源的发声策略也可以通过衰减系数来控制。当然,还可以通过在每个参考区域中筛选出与虚拟角色距离最小的体积声源作为第一目标体积声源,让用户尽可能的听到每个方位的声音,提高了真实性。

  如图4所示,本申请实施例提供了一种声源控制的装置,通过终端设备提供的图形用户界面显示部分游戏场景,在游戏场景中包括虚拟角色、体积声源和点声源,包括:

  移动模块501,用于响应移动控制指令,控制虚拟角色在游戏场景中进行移动;

  判断模块502,用于根据虚拟角色当前的位置和第一目标体积声源的位置,判断虚拟角色是否在第一目标体积声源内;

  第一调整模块503,用于若虚拟角色在第一目标体积声源内,则将第一目标体积声源的发声位置设置在虚拟角色上,且将位于第一目标体积声源内部的点声源调整为工作状态;

  第二调整模块504,用于若虚拟角色不在第一目标体积声源内,则将位于第一目标体积声源内部的点声源调整为关闭状态。

  可选的,第二调整模块504,包括:

  调整单元,用于将第一目标体积声源的发声位置设置在第一目标体积声源靠近虚拟角色的一侧。

  可选的,调整单元,包括:

  调整子单元,用于将第一目标体积声源的发声位置设置在第一目标体积声源的目标位置处;其中,目标位置是目标连线与第一目标体积声源边界的交点所在的位置;目标连线是第一目标体积声源的物理中心的位置与虚拟角色的位置之间的连线。

  可选的,装置还包括:

  确定模块,用于根据虚拟角色当前的位置和至少两个候选体积声源的位置,确定至少两个候选体积声源中与虚拟角色之间的距离小于第一预设距离的候选体积声源,作为第一目标体积声源;

  第三调整模块,用于将第一目标体积声源调整为工作状态。

  可选的,确定模块,包括:

  第一确定单元,针对每个参考区域,用于根据参考区域中的候选体积声源的位置和虚拟角色当前的位置,确定参考区域中的候选体积声源中与虚拟角色之间的距离小于第一预设距离的候选体积声源,作为第一目标体积声源;其中,每个参考区域分别位于虚拟角色不同的方向。

  可选的,装置还包括:

  第二确定单元,根据虚拟角色当前的位置和至少两个候选体积声源的位置,利用预设的邻近算法从至少两个候选体积声源中选择一个候选体积声源作为第一目标体积声源;

  第四调整单元,用于将第一目标体积声源调整为工作状态。

  可选的,装置还包括:

  第五调整单元,用于将至少两个候选体积声源中除第一目标体积声源外的其他候选体积声源调整为关闭状态。

  可选的,装置还包括:

  若虚拟角色在第一目标体积声源内,将与虚拟角色的位置之间的距离大于第二预设距离的位于第一目标体积声源外部的点声源调整为关闭状态。

  可选的,第一调整模块503,包括:

  第六调整单元,若虚拟角色在第一目标体积声源内,将与虚拟角色的位置之间的距离大于第二预设距离的位于第一目标体积声源内部的点声源调整为关闭状态。

  可选的,装置还包括:

  第一筛选模块,用于若虚拟角色不在第一目标体积声源内,根据虚拟角色当前的位置和位于第一目标体积声源外的点声源的位置,计算虚拟角色的位置与位于第一目标体积声源外的点声源的位置之间的距离;

  第七调整模块,用于若位于第一目标体积声源外的点声源的位置与虚拟角色的位置之间的距离大于第三预设距离,则将与虚拟角色的位置之间的距离大于第三预设距离的位于第一目标体积声源外的点声源调整为关闭状态。

  可选的,装置还包括:

  第一计算模块,用于根据虚拟角色的位置和点声源的位置,计算每个点声源与虚拟角色之间的距离;

  第一系数确定模块,用于根据每个点声源与虚拟角色之间的距离确定对应的点声源的衰减系数;

  第一策略确定模块,用于根据每个点声源的衰减系数,控制对应的点声源的发声策略。

  可选的,装置还包括:

  第二计算模块,若虚拟角色不在第一目标体积声源内,用于根据虚拟角色的位置和第一目标体积声源的位置,计算每个第一目标体积声源与虚拟角色之间的距离;

  第二系数确定模块,用于根据第一目标体积声源与虚拟角色之间的距离确定第一目标体积声源的衰减系数;

  第二策略确定模块,用于根据第一目标体积声源的衰减系数,控制第一目标体积声源的发声策略。

  对应于图1中的声源控制方法,本申请实施例还提供了一种计算机设备1000,如图5所示,该设备包括存储器1001、处理器1002及存储在该存储器1001上并可在该处理器1002上运行的计算机程序,其中,上述处理器1002执行上述计算机程序时实现上述声源控制方法。

  具体地,上述存储器1001和处理器1002能够为通用的存储器和处理器,这里不做具体限定,当处理器1002运行存储器1001存储的计算机程序时,能够执行上述声源控制方法,解决了现有技术中系统耗能过大。

  对应于图1中的声源控制方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述声源控制方法的步骤。

  具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述声源控制方法,解决了现有技术中系统耗能过大的问题,本申请根据虚拟角色的位置来确定第一目标体积声源的发声位置,并调整第一目标体积声源内部点声源的工作状态,这种调整点声源工作状态的方式,可以让点声源不必实时发声,减少了系统中计算资源的消耗。

  在本申请所提供的实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

  所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

  另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

  所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

  应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

  最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

《一种声源控制的方法、装置、计算机设备和介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)