QSpatialSound类
3D空间中的声音对象。 更多信息...
| 头文件 | #include <QSpatialSound> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS SpatialAudio) target_link_libraries(mytarget PRIVATE Qt6::SpatialAudio) | 
| qmake | QT += spatialaudio | 
| 继承 | QObject | 
公共类型
| 枚举类型 | DistanceModel { 对数,线性,手动衰减 } | 
| 枚举 | Loops { 无限,一次 } | 
属性
| 
 | 
 | 
公共函数
| QSpatialSound(QAudioEngine *engine) | |
| virtual | ~QSpatialSound() | 
| bool | autoPlay() const | 
| float | directivity() const | 
| float | directivityOrder() const | 
| float | distanceCutoff() const | 
| QSpatialSound::DistanceModel | distanceModel() const | 
| QAudioEngine * | engine() const | 
| int | loops() const | 
| float | manualAttenuation() const | 
| float | nearFieldGain() const | 
| float | occlusionIntensity() const | 
| QVector3D | position() const | 
| QQuaternion | rotation() const | 
| void | setAutoPlay(bool autoPlay) | 
| void | setDirectivity(float alpha) | 
| void | setDirectivityOrder(float alpha) | 
| void | setDistanceCutoff(float cutoff) | 
| void | setDistanceModel(QSpatialSound::DistanceModel model) | 
| void | setLoops(int loops) | 
| void | setManualAttenuation(float attenuation) | 
| void | setNearFieldGain(float gain) | 
| void | setOcclusionIntensity(float occlusion) | 
| void | setPosition(QVector3D pos) | 
| void | setRotation(const QQuaternion &q) | 
| void | setSize(float size) | 
| void | setSource(const QUrl &url) | 
| void | setVolume(float volume) | 
| float | size() const | 
| QUrl | source() const | 
| float | volume() const | 
Public Slots
Signals
| void | autoPlayChanged() | 
| void | directivityChanged() | 
| void | directivityOrderChanged() | 
| void | distanceCutoffChanged() | 
| void | distanceModelChanged() | 
| void | loopsChanged() | 
| void | manualAttenuationChanged() | 
| void | nearFieldGainChanged() | 
| void | occlusionIntensityChanged() | 
| void | positionChanged() | 
| void | rotationChanged() | 
| void | sizeChanged() | 
| void | sourceChanged() | 
| void | volumeChanged() | 
Detailed Description
QSpatialSound表示3D空间中的可听对象。您可以定义其在空间中的位置和方向,设置它正在播放的声音以及为对象定义音量。
对象可以具有不同的衰减行为,主要向一个方向或球形地发射声音,并且就像被某个其他物体遮挡一样。
成员类型文档
enum class QSpatialSound::DistanceModel
定义了声音的音量如何随着与听者的距离而缩放。
| 常数 | 值 | 描述 | 
|---|---|---|
| QSpatialSound::DistanceModel::Logarithmic | 0 | 音量以对数方式随距离减小。 | 
| QSpatialSound::DistanceModel::Linear | 1 | 音量以线性方式随距离减小。 | 
| QSpatialSound::DistanceModel::ManualAttenuation | 2 | 衰减是通过使用manualAttenuation属性手动定义的。 | 
enum QSpatialSound::Loops
允许您使用以下值控制声音播放循环:
| 常数 | 值 | 描述 | 
|---|---|---|
| QSpatialSound::Infinite | -1 | 无限播放 | 
| QSpatialSound::Once | 1 | 单次播放 | 
属性文档
autoPlay : bool
确定当指定源时,是否应自动开始播放声音。
默认值为true。
访问函数
| bool | autoPlay() const | 
| void | setAutoPlay(bool autoPlay) | 
通知信号
| void | autoPlayChanged() | 
directivity : float
定义了声音源的指向性。0的值表示声音在所有方向上均匀发射,而1的值表示源主要朝前方向发射声音。
有效值在0和1之间,默认为0。
访问函数
| float | directivity() const | 
| void | setDirectivity(float alpha) | 
通知信号
| void | directivityChanged() | 
directivityOrder : float
定义声音源方向性的顺序。阶数越高意味着声音锥形定位越精确。
此属性的默认值和最小值是1。
访问函数
| float | directivityOrder() const | 
| void | setDirectivityOrder(float alpha) | 
通知信号
| void | directivityOrderChanged() | 
distanceCutoff : float
定义声音从源头发出的距离,超过此距离则不再有声。如果听众距离声物体比截止距离更远,则将无法听到。
访问函数
| float | distanceCutoff() const | 
| void | setDistanceCutoff(float cutoff) | 
通知信号
| void | distanceCutoffChanged() | 
distanceModel : DistanceModel
定义此声音源的距离模型。音量从size开始向下缩放至distanceCutoff。对于小于size的距离,音量为恒定值;对于大于截止距离的距离,音量为0。
访问函数
| QSpatialSound::DistanceModel | distanceModel() const | 
| void | setDistanceModel(QSpatialSound::DistanceModel model) | 
通知信号
| void | distanceModelChanged() | 
另请参阅QSpatialSound::DistanceModel.
loops : int
确定声音在播放器停止之前播放的次数。将值设置为QSpatialSound::Infinite,则声音将一直循环播放。
默认值是1。
访问函数
| int | loops() const | 
| void | setLoops(int loops) | 
通知信号
| void | loopsChanged() | 
manualAttenuation : float
如果distanceModel设置为QSpatialSound::DistanceModel::ManualAttenuation,则定义手动衰减系数。
访问函数
| float | manualAttenuation() const | 
| void | setManualAttenuation(float attenuation) | 
通知信号
| void | manualAttenuationChanged() | 
nearFieldGain : float
定义声音源近场增益。有效值在0和1之间。近场增益为1将在非常接近听众的距离内将声音信号的音量提高约20 dB。
访问函数
| float | nearFieldGain() const | 
| void | setNearFieldGain(float gain) | 
通知信号
| void | nearFieldGainChanged() | 
occlusionIntensity : float
定义对象被遮挡的程度。0表示对象完全没有被遮挡,1表示声源完全被另一个对象遮挡。
完全被遮挡的对象仍然可以听到,但是尤其是在高频部分将减弱。此外,对象仍将参与在房间的回声和反射中。
大于1的值可以进一步减弱来自源头的直达声。
默认值是0。
访问函数
| float | occlusionIntensity() const | 
| void | setOcclusionIntensity(float occlusion) | 
通知信号
| void | occlusionIntensityChanged() | 
position : QVector3D
定义声音源在3D空间中的位置。默认单位为厘米。
访问函数
| QVector3D | position() const | 
| void | setPosition(QVector3D pos) | 
通知信号
| void | positionChanged() | 
另请参阅QAudioEngine::distanceScale.
旋转 : QQuaternion
定义了声音源在3D空间中的方向。
访问函数
| QQuaternion | rotation() const | 
| void | setRotation(const QQuaternion &q) | 
通知信号
| void | rotationChanged() | 
大小 : float
定义了声音源的大小。如果听者比大小更接近声音对象,则音量将保持恒定。大小还用于遮挡计算,其中大源可以被墙壁部分遮挡。
访问函数
| float | 大小() const | 
| void | setSize(float size) | 
通知信号
| void | sizeChanged() | 
源 : QUrl
要播放的声音的源文件。
访问函数
| QUrl | 源() const | 
| void | setSource(const QUrl &url) | 
通知信号
| void | sourceChanged() | 
音量 : float
定义了声音的音量。
介于0到1之间的值会衰减声音,而高于1的值提供额外的增益提升。
访问函数
| float | 音量() const | 
| void | setVolume(float volume) | 
通知信号
| void | volumeChanged() | 
成员函数文档
[显式] QSpatialSound::QSpatialSound(QAudioEngine *engine)
为engine创建空间声音源。该对象可以放置在3D空间中,并且越接近听者,声音越大。
[虚拟 noexcept] QSpatialSound::~QSpatialSound()
销毁声音源。
QAudioEngine *QSpatialSound::engine() const
返回与此听者关联的引擎。
[槽] void QSpatialSound::pause()
暂停声音播放。调用 play() 将继续播放。
[槽] void QSpatialSound::play()
开始播放声音。如果声音已经播放,则不执行任何操作。
[槽] void QSpatialSound::stop()
停止声音播放,并重置当前位置和当前循环计数到0。调用 play() 将从声音文件的开始处开始播放。
© 2024 Qt公司。此处包含的文档贡献是各自所有者的版权。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证第 1.3 版许可的。Qt及其相关标志是 Finland 和/或全球其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。