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 公司的商标。所有其他商标均为各自所有者的财产。