翻譯|使用教程|編輯:鮑佳佳|2021-02-03 11:48:02.730|閱讀 546 次
概述:Audio Visualizer演示了如何實現將Qt 3D渲染與Qt Quick 2D元素結合使用的應用程序。該示例使用媒體播放器播放音樂,并將音樂的大小可視化為動畫條。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Qt自帶集成開發環境(IDE),名為Qt Creator。它可以在Linux、OS X和Windows上運行,并提供智能代碼完成、語法高亮、集成幫助系統、調試器和剖析器集成,還集成了所有主要的版本控制系統(如git、Bazaar)。除了Qt Creator外,Windows上的開發人員還可以使用Qt的Visual Studio插件。也可以使用其他的IDE(如KDE上的KDevelop)。但當然絕不是必須使用任何IDE。
演示結合了Qt 3D渲染和Qt Quick 2元素。
Audio Visualizer演示了如何實現將Qt 3D渲染與Qt Quick 2D元素結合使用的應用程序。該示例使用媒體播放器播放音樂,并將音樂的大小可視化為動畫條。
運行示例
要從Qt Creator運行示例,請打開“Welcome”模式,然后從“demo”中選擇demo。
Qt Quick 2D實施該audio-visualizer-qml/main.qml示例中的Qt快速實現MediaPlayer用于播放音頻內容。
MediaPlayer { id: mediaPlayer autoPlay: true volume: 0.5 source: "qrc:/music/tiltshifted_lost_neon_sun.mp3"
播放器由playButton和c {stopButton}控制。基于點擊的按鈕state的mainview變化。
使用該Scene3D類型渲染3D內容。音頻可視化器的狀態保留在中mainview。它會傳遞給visualizerbar動畫所需的。
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相關組件:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: