技术领域
[0001] 本发明涉及虚拟现实音效模拟领域,尤其是涉及一种碰撞过程自适应的虚拟现实碰撞音效模拟方法及装置。
相关背景技术
[0002] 虚拟现实(VR)技术通过视觉、听觉、触觉等多个方面为用户提供接近真实的三维虚拟世界,在教育、工业、医疗等领域都有着愈加广泛的应用。
[0003] 除了视觉之外,听觉也是虚拟现实中非常重要的一个方面。其中,角色自身与场景的碰撞音效是虚拟现实用户感受距离最近的声音,在用户与场景交互的过程中会占据用户听觉感受的主要部分。
[0004] 在现有技术中,通常是在一个或多个预订的位置设置音效播放点,然后在这些固定的音效播放点播放碰撞声音,就普通的三维图形应用程序而言,用户很多情况下不佩戴耳机,此时只需要大致地在场景中设置碰撞触发器,检测到碰撞后于固定的声源位置播放声音,就可以达到比较好的音频效果。但是,对于虚拟现实下的三维图形应用程序而言,用户一般都会佩戴头戴显示内置的双声道耳机,这种模拟的粗糙性会被用户察觉,用户将从听觉中产生与视觉感知上的错位感,从而减少对虚拟世界感知的真实性,甚至会增加晕眩的可能。
具体实施方式
[0044] 下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0045] 一种碰撞过程自适应的虚拟现实碰撞音效模拟方法,如图1和图2所示,包括:
[0046] 当检测到任一第一碰撞体与任一第二碰撞体发生碰撞时,确定碰撞阶段的接触位置、碰撞相对速度,以及摩擦阶段的接触轨迹、摩擦相对速度,其中,如图3所示,碰撞过程由依次设置的碰撞阶段和摩擦阶段组成,具体由碰撞检测机制反馈得到,第一碰撞体位于虚拟角色主体上,第二碰撞体位于虚拟环境中;
[0047] 当进入碰撞阶段时,生成碰撞声源对象,根据第二碰撞体的材质,结合碰撞阶段的接触位置、碰撞相对速度确定碰撞音效片段和音量大小,以及碰撞音效播放位置,并基于得到的碰撞音效片段和音量大小,以及碰撞音效播放位置播放碰撞音效;
[0048] 当进入摩擦阶段时,生成摩擦声源对象,根据第二碰撞体的材质,结合摩擦阶段的接触轨迹、摩擦相对速度确定摩擦音效片段和音量大小,以及各时刻摩擦音效播放位置,并基于得到的摩擦音效片段和音量大小,以及各时刻摩擦音效播放位置播放摩擦音效;
[0049] 当摩擦阶段结束时,淡出本次碰撞过程中所有正在播放的音效。
[0050] 碰撞音效播放位置与摩擦音效播放位置是根据接触位置动态自适应确定的,相较于固定位置的声源位置,可以让虚拟现实用户对于声源的方位感知更加准确,减少听觉上的错位感。
[0051] 具体的,在所有的实施例中,需要准备用户虚拟形象主体材质与环境中各对象的材质的摩擦音效片段,以及从轻到重对应于不同的碰撞相对速度的碰撞音效片段,并对这些音效片段进行峰值标准化。所有的音效片段可以是自行录制,也可以是从其他地方导入。
[0052] 一般的,第一碰撞体位于虚拟角色主体的头部和手部。
[0053] 在大部分实施例中,根据第二碰撞体的材质,结合碰撞阶段的接触位置、碰撞相对速度确定碰撞音效片段和音量大小,以及碰撞音效播放位置,包括:
[0054] 将碰撞阶段的接触位置作为碰撞音效播放位置,以第一碰撞体材质为钢,第二碰撞体材质为木板为例,碰撞音效播放位挂载于木板上;
[0055] 在碰撞音效片段库中检索得到与第二碰撞体的材质匹配的所有碰撞音效片段,其中,碰撞音效片段库中存储有对应于各材质的多个碰撞音效片段,同一材质的所有碰撞音效片段分别对应于不同的速度区间,同样以第一碰撞体材质为钢,第二碰撞体材质为木板为例,查询到有三个碰撞音效片段,碰撞力度分别为轻、中、重,第一个碰撞音效片段对应的速度区间为0至v1,第二个碰撞音效片段对应的速度区间为v1至v2,第三个碰撞音效片段对应的速度区间为v2至无穷大。碰撞音效片段的选择考虑了不同相对速度下音色的区别,相较于普通的单一音频片段,会使碰撞声音的效果更加真实。
[0056] 根据碰撞阶段的碰撞相对速度匹配得到对应的碰撞音效片段,在某个实施例中,由于碰撞阶段的碰撞相对速度大于v2,则选择第三个碰撞音效片段;
[0057] 根据碰撞阶段的碰撞相对速度确定碰撞音效的音量大小,在某个实施例中,碰撞音效的音量大小具体为:
[0058]
[0059] 其中:A为碰撞音效的音量大小,Amin为预配置的可以被用户察觉的最小音量值,vc为碰撞相对速度,vmax为预配置的区间最大速度,vmin为预配置的区间最小速度。
[0060] 碰撞声源考虑了对于不同相对速度情形在音量上的合理调整,并设置了调节公式,使得用户可以更好地感知碰撞时的相对速度变化,一方面可以依据相对速度设定声源音色和音量的方法计算便捷,运行效率高,另一方面避免产生感官误差导致的晕眩。
[0061] 此外,在大部分实施例中,根据第二碰撞体的材质,结合摩擦阶段的接触轨迹、摩擦相对速度确定摩擦音效片段和音量大小,以及各时刻摩擦音效播放位置,包括:
[0062] 在碰撞音效片段库中检索得到与第二碰撞体的材质匹配的摩擦音效片段;
[0063] 根据摩擦阶段的接触轨迹确定各时刻摩擦音效播放位置;
[0064] 根据摩擦阶段的摩擦相对速度在接触点切平面上的投影速度设定摩擦音效的音量大小,具体的,由于各时刻的速度可能不同,因此,实际得到的是一个摩擦音效的音量大小的序列;
[0065] 根据摩擦阶段的摩擦相对速度在接触点切平面上的投影速度设定摩擦音效的音量大小,包括:
[0066] 确定摩擦阶段的摩擦相对速度在接触点切平面上的投影速度;
[0067] 若投影速度大于最小速度阈值,则摩擦音效的音量大小为0,反之,则摩擦音效的音量大小为预配置的标准值。
[0068] 碰撞声源对象和摩擦声源对象挂载于第二碰撞体所处的对象上,将声源对象挂载到第二碰撞体下将易于查找与管理,并允许多种同时碰撞的声音并行播放,及时销毁对象可以让占用的内存处于一个可控的范围。
[0069] 在大部分实施例中,淡出本次碰撞过程中所有正在播放的音效,包括:
[0070] 查询挂载于第二碰撞体所处的对象上的所有声源对象;
[0071] 对查询到的所有声源对象设置淡出时间;
[0072] 淡出正在播放的音效,并在淡出结束后,删除第二碰撞体所处的对象上该碰撞过程的所有声源对象。
[0073] 在一部分实施例中,与第二碰撞体的材质匹配,具体为材质相同,这需要提前准备足够齐全的音效片段,当然,在另一些实施例中,也可以选择与第二碰撞体的材质最接近的材质所对应的音效片段。
[0074] 上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。