Qt 3D:音频可视化器示例

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。演示结合 Qt 3D 渲染和 Qt Quick 2 元素。

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。

下载Qt6最新试用版

Qt组件推荐:

  • QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面

Qt 3D:音频可视化器示例

演示结合 Qt 3D 渲染和 Qt Quick 2 元素。

Qt 3D:音频可视化器示例

Audio Visualizer 演示了如何实现将 Qt 3D 渲染与 Qt Quick 2D 元素结合使用的应用程序。该示例使用媒体播放器播放音乐,并将音乐的大小可视化为动画条。

运行示例

要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。

Qt 快速二维实现

audio-visualizer-qml/main.qml示例中的 Qt Quick ImplementationMediaPlayer用于播放音频内容。

MediaPlayer {    id: mediaPlayer    autoPlay: true    volume: 0.5    source: "qrc:/music/tiltshifted_lost_neon_sun.mp3"

播放器由playButton和 c{stopButton} 控制。基于单击的按钮state的mainview更改。

3D 内容是使用Scene3D类型呈现的。Audio Visualizer 的状态保持在mainview. 它被传递给visualizer酒吧动画所需要的。

Scene3D {    anchors.fill: parent    Visualizer {        id: visualizer        animationState: mainview.state        numberOfBars: 120        barRotationTimeMs: 8160 // 68 ms per bar    }}

Qt 3D 实现

该示例的 3D 元素是在audio-visualizer-qml/Visualizer.qml. 相机设置在固定位置,以从正确的角度显示可视化条。

Camera {    id: camera    projectionType: CameraLens.PerspectiveProjection    fieldOfView: 45    aspectRatio: 1820 / 1080    nearPlane: 0.1    farPlane: 1000.0    position: Qt.vector3d(0.014, 0.956, 2.178)    upVector: Qt.vector3d(0.0, 1.0, 0.0)    viewCenter: Qt.vector3d(0.0, 0.7, 0.0)}

ANodeInstantiator用于创建可视化音乐幅度的条形。

// BarsCuboidMesh {    id: barMesh    xExtent: 0.1    yExtent: 0.1    zExtent: 0.1}NodeInstantiator {    id: collection    property int maxCount: parent.numberOfBars    model: maxCount    delegate: BarEntity {        id: cubicEntity        entityMesh: barMesh        rotationTimeMs: sceneRoot.barRotationTimeMs        entityIndex: index        entityCount: sceneRoot.numberOfBars        entityAnimationsState: animationState        magnitude: 0    }}

该visualizer还包含一个Entity显示进度。这个元素有一个曲线形状的 格,它在一个级别上旋转以显示基于播放曲目的持续时间的进度。

// ProgressMesh {    id: progressMesh    source: "qrc:/meshes/progressbar.obj"}Transform {    id: progressTransform    property real defaultStartAngle: -90    property real progressAngle: defaultStartAngle    rotationY: progressAngle}Entity {    property Material progressMaterial: PhongMaterial {        ambient: "#80C342"        diffuse: "black"    }    components: [progressMesh, progressMaterial, progressTransform]}

在audio-visualizer-qml/BarEntity.qml有旋转酒吧和更改栏颜色动画。钢筋按照环形形式在水平面上旋转。同时,条的颜色是动画的。

QQ2.NumberAnimation {    id: angleAnimation    target: angleTransform    property: "barAngle"    duration: rotationTimeMs    loops: QQ2.Animation.Infinite    running: true    from: startAngle    to: 360 + startAngle}QQ2.SequentialAnimation on barColor {    id: barColorAnimations    running: false    QQ2.ColorAnimation {        from: lowColor        to: highColor        duration: animationDuration    }    QQ2.PauseAnimation {        duration: animationDuration    }    QQ2.ColorAnimation {        from: highColor        to: lowColor        duration: animationDuration    }}

每个小节的大小是从基于正在播放的曲目的单独 .raw 文件中读取的。当条形围绕环旋转时,高度会缩放以突出显示当前播放的位置。一整轮旋转后,将为该条获取一个新值。

====================================================

想要了解或购买Qt正版授权的朋友,欢迎咨询官方客服

Qt技术交流群现已开通,QQ搜索群 “765444821”或者扫描下方二维码即可加入

Qt 3D:音频可视化器示例

Qt 3D:音频可视化器示例

 

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月3日
下一篇 2021年7月3日

相关推荐

发表回复

登录后才能评论