彩票走势图

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

转帖|使用教程|编辑:鲍佳佳|2021-08-06 10:49:34.150|阅读 109 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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 元素。

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用于创建可视化音乐幅度的条形。


// Bars
CuboidMesh {
    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显示进度。这个元素有一个曲线形状的网格,它在一个级别上旋转以显示基于播放曲目的持续时间的进度。

// Progress
Mesh {
    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”或者扫描下方二维码即可加入

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP