QSpatialSound Class
三维空间中的声音对象。更多
头文件: | #include <QSpatialSound> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SpatialAudio) target_link_libraries(mytarget PRIVATE Qt6::SpatialAudio) |
qmake: | QT += spatialaudio |
继承: | QObject |
公共类型
enum class | DistanceModel { Logarithmic, Linear, ManualAttenuation } |
enum | Loops { Infinite, Once } |
属性
|
|
公共功能
QSpatialSound(QAudioEngine *engine) | |
virtual | ~QSpatialSound() override |
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 |
公共插槽
信号
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() |
详细说明
QSpatialSound 表示三维空间中的声音对象。您可以定义它在空间中的位置和方向,设置它正在播放的声音,并为该对象定义音量。
该对象可以有不同的衰减行为,可以主要向一个方向或球形方向发出声音,也可以像被其他对象遮挡一样发出声音。
成员类型文档
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 。距离小于尺寸时音量恒定,距离大于截止距离时音量为零。
访问功能:
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
定义声源在三维空间中的位置。默认单位为厘米。
访问功能:
QVector3D | position() const |
void | setPosition(QVector3D pos) |
通知信号:
void | positionChanged() |
另请参阅 QAudioEngine::distanceScale 。
rotation : QQuaternion
定义声源在三维空间中的方向。
访问功能:
QQuaternion | rotation() const |
void | setRotation(const QQuaternion &q) |
提示信号:
void | rotationChanged() |
size : float
定义声源的大小。如果聆听者距离声源物体的距离大于尺寸,音量将保持不变。该尺寸还可用于闭塞计算,在这种情况下,大型声源可能会被墙壁部分闭塞。
访问功能:
float | size() const |
void | setSize(float size) |
通知信号:
void | sizeChanged() |
source : QUrl
要播放的声音的源文件。
访问功能:
QUrl | source() const |
void | setSource(const QUrl &url) |
提示信号:
void | sourceChanged() |
volume : float
定义声音的音量。
0 至 1 之间的数值会减弱声音,而 1 以上的数值则会提供额外的增益提升。
访问功能
float | volume() const |
void | setVolume(float volume) |
Notifier 信号:
void | volumeChanged() |
成员函数 文档
[explicit]
QSpatialSound::QSpatialSound(QAudioEngine *engine)
为engine 创建空间声源。物体可以放置在三维空间中,离听众越近,声音越大。
[override virtual noexcept]
QSpatialSound::~QSpatialSound()
摧毁声源。
QAudioEngine *QSpatialSound::engine() const
返回与此监听器相关的引擎。
[slot]
void QSpatialSound::pause()
暂停声音播放。呼叫play() 将继续播放。
[slot]
void QSpatialSound::play()
开始播放声音。如果声音已在播放,则不起任何作用。
[slot]
void QSpatialSound::stop()
停止声音播放,并将当前位置和当前循环次数重置为 0。调用play() 将从声音文件的开头开始播放。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.