最近事情比较多,博客更新的有点慢了,今天更新一期,主要聊一聊通过Threejs提供的音频API实现音频的可视化效果,先看下最终实现的效果
音频可视化
在Three.js中,音频功能是通过Web Audio API实现的。Web Audio API可以生成、控制和处理音频,要实现音频的可视化效果,我们需要先来了解下Threejs给我们提供的音频相关的类,Threejs给我们提供的音频相关的类主要包括Audio、AudioListener、PositionalAudio、AudioAnalyser和AudioLoader这几个类。
Audio类用于创建一个全局的audio对象,表示一个音频源,在Three.js中用于播放音频和控制音频参数。
Audio( listener : AudioListener ) 其中:listener参数是一个AudioListener对象,用于监听音频的播放
创建Audio对象需要传入一个AudioListener对象作为参数, 所以,在创建Audio对象前,需要先创建一个AudioListener 对象
// 创建一个 AudioListener 并将其添加到 camera 中
const listener = new THREE.AudioListener()
camera.add( listener )
// 创建一个全局 audio 源
const sound = new THREE.Audio( listener )
AudioListener 类是Three.js中用于监听音频的类,用一个虚拟的listener表示在场景中所有的位置和非位置相关的音效。它负责处理场景中所有3D音频源的音量、音调、距离效果等。主要作用是使用户能够模拟3D空间中的音频效果。 一个three.js程序通常创建一个AudioListene。它是音频实体构造函数的必须参数。listener对象是camera的子对象.。Camera的3D变换表示了listener的3D变换。
AudioListener的构造函数没有参数,它创建了一个用于监听音频的对象。 AudioListener( ):创建一个新的AudioListener。
cosnt listener = new THREE.AudioListener()
camera.add( listener )
上述代码创建了一个用于监听音频的listener对象,使其随着相机一起移动。然后,可以通过调用listener的setMasterVolume()方法来设置所有音频的音量大小
AudioContext是Web Audio API中的音频上下文环境,用于处理音频数据。在Three.js中,AudioContext类用于创建一个用于处理音频的上下文环境,可以用于创建和控制音频节点。在AudioListener和AudioLoader 类中被使用。
PositionalAudio 类用于创建一个位置相关的音频对象。 PositionalAudioThree.js中用于实现3D空间音效的音频源类,它继承自THREE.Audio对象,并添加了音源在3D空间中的位置、方向、距离效果等属性。主要作用是使用户能够在Three.js场景中实现3D声音效果。用于使音效根据360度方向自适应,同时还可以调整立体声效果。
PositionalAudio( listener : AudioListener ) PositionalAudio的构造函数需要传入一个AudioListener类型的listener参数,表示用于监听音频的对象。这个listener参数是必须的
const listener = new THREE.AudioListener()
camera.add( listener )
const sound = new THREE.PositionalAudio( listener )
const audioLoader = new THREE.AudioLoader(