CRI ADX  Last Updated: 2024-07-17 10:48 p
焦点

什么是焦点?

“焦点” 是在3D定位时用于精细控制收听点的功能。
通过使用焦点,可以分别控制从声源到收听者的“距离”和“方向”。

主要用途

焦点主要用于照相机和角色独立的第三人称游戏。
如果要使用3D定位功能创建第三人称游戏,则必须考虑应当将收听者配置在哪里。
如果配置到照相机上,将以声源与相机之间为基准计算与距离相对应的音量衰减,因此即使角色靠近声源,音量也会变小。
(用户将很难掌握角色和声源之间的距离感。)
而且,当照相机接近声源时,未在画面上显示的声源音量可能会很大。
为了避免以上问题,可以采用将收听者配置到角色的方法,但这种方法也并非万无一失。
将收听者配置到角色上时,根据角色和声源之间的距离确定音量衰减,因此音量将根据角色和声源之间的位置关系自然衰减。
但是,如下图所示,如果声源位置在角色和相机之间,由于声源位于角色背后,声音将从后置扬声器发出。
但声音听起来是从后面发出的,视频和音频会让人有不一致的感觉。
通过使用焦点可以解决上述问题。
在收听者之外再配置焦点,可以于在收听者和焦点之间的任意位置设置用于计算声源距离和方向的起点来计算。
例如,分别在角色上配置焦点、在照相机上配置收听者,将计算距离的起点设为角色,计算角度的起点设为照相机时,音量将因应声源和角色之间的距离衰减,而声源方向则由照相机的角度决定。

使用的API

使用以下API来控制焦点。
criAtomEx3dListener_SetFocusPoint 函数配置焦点,用 criAtomEx3dListener_SetDistanceFocusLevel 函数和 criAtomEx3dListener_SetDirectionFocusLevel 函数设置距离和方向的起点。
备注:
在0.0f~1.0f的范围指定距离和方向的起点位置。
0.0f对应于收听者,1.0f对应于焦点。
通过指定0.5f等,还可以将起点设置在收听者与焦点之间的位置。