QML 粒子模拟

粒子模拟

粒子模拟

        粒子模拟的核心是粒子系统(ParticleSystem), 它控制共享时间线。一个粒子使用发射器元素(Emitter)发射, 使用粒子画笔(ParticlePainter)实现可视化, 它可以是一张图片,一个QML项或者是一个着色项(shader Item)。

        发射器元素 提供 向量 来控制粒子方向(发送后就 发射器无法再控制)。粒子模型提供 粒子控制器(Affector),它可以 控制  己发射的粒子的参数

  • 粒子系统粒(ParticleSystem- 管理发射器之间的共享时间线。 
  • 发射器(Emitter- 向系统中发射逻辑粒子 向系统中发射逻辑粒⼦。
  • 粒⼦画笔(ParticlePainter- 实现粒⼦可视化。
  • ⽅向(Direction- 已发射粒⼦的向量空间。
  • 粒⼦组(ParticleGroup- 每个粒⼦是⼀个粒⼦组的成员。
  • 粒⼦控制器(Affector- 控制已发射粒⼦。

简单的模拟

  • 绑定所有元素到一个模拟的粒子系统
  • 一个向系统发射粒子的发射器
  • 一个ParticlePainter 派生类元素(包括CustomParticle、ImageParticle、ItemParticle), 用来实现粒子可视化

上面代码:

ParticleSystem: 定义一个粒子系统

Emitter :定义一个发射器

emitRate: 发射频率,例如 每秒钟发射 10 个粒子
lifeSpan:每个粒⼦的⽣命周期 ;lifeSpan:1000(每个粒子的生命周期是 1000 毫秒)

lifeSpanVariation:一个己发射粒子的生命周期变化;(lifeSpanVariation:500)⼀个已发射粒⼦的⽣命周期变化是500毫秒

size:⼀个粒⼦开始的⼤⼩是16个像素(size:16),

endSize:⽣命周期结束时的⼤⼩是32个像素(endSize:32

已发射粒⼦的⽣命
周期变化

 效果:

 

import QtQuick 2.15
import QtQuick.Particles 2.15Rectangle
{id: rootwidth: 480; height: 160color: "#1f1f1f"ParticleSystem {id: particleSystem}Emitter {id: emitteranchors.centerIn: parentwidth: 160; height: 80system: particleSystememitRate: 10lifeSpan: 1000lifeSpanVariation: 500size: 16endSize: 32//Tracer { color: 'green' }}ImageParticle{source: "1234.png"system: particleSystem// color: '#1f1f1f'}// Emitter {//     id: emitter//     anchors.centerIn: parent//     width: 20; height: 20//     system: particleSystem//     emitRate: 40//     lifeSpan: 2000//     lifeSpanVariation: 500//     size: 64//     endSize: 32//     //Tracer { color: 'green' }// }// ImageParticle{//     source: "star.jpeg"//     system: particleSystem//     color: '#FFD700'//     colorVariation: 0.2//     rotation: 15//     rotationVariation: 5//     rotationVelocity: 45//     rotationVelocityVariation: 15//     entryEffect: ImageParticle.Scale// }// Emitter {//     id: emitter//     anchors.left:  parent.left//     anchors.verticalCenter: parent.verticalCenter//     width: 1; height: 1//     system: particleSystem//     // emitRate: 10//     lifeSpan: 6400//     lifeSpanVariation: 500//     size: 32//     //Tracer { color: 'green' }//     // velocity: AngleDirection{//     //     angle: 0//     //     angleVariation: 15//     //     magnitude: 100//     //     magnitudeVariation: 50//     // }//     // velocity: AngleDirection{//     //     angle: -45//     //     magnitude: 100//     // }//     // acceleration: AngleDirection{//     //     angle: 90//     //     magnitude: 25//     // }//      // velocity: PointDirection{//      //     x: 100//      //     y:0//      //     xVariation: 0//      //     yVariation: 100/6//      // }//     velocity: TargetDirection {//         targetX: 100//         targetY: 0//         targetVariation: 100/6//         magnitude: 100//     }// }// ImageParticle{//     source: "star.jpeg"//     system: particleSystem//     color: '#FFD700'//     colorVariation: 0.2//     rotation: 15//     rotationVariation: 5//     rotationVelocity: 45//     rotationVelocityVariation: 15//     entryEffect: ImageParticle.Scale// }// ItemParticle {//     id: particle//     system: particleSystem//     delegate: itemDelegate// }// Component {//     id: itemDelegate//     Rectangle {//         id: container//         width: 32*Math.ceil(Math.random()*3); height: width//         color: 'white'//         Image {//             anchors.fill: parent//             anchors.margins: 4//             source: 'star.jpeg'//         }//     }// }// Emitter {//     id: emitter//     anchors.left:  parent.left//     anchors.verticalCenter: parent.verticalCenter//     width: 1; height: 1//     system: particleSystem//     // emitRate: 10//     lifeSpan: 6400//     lifeSpanVariation: 500//     size: 32//     velocity: TargetDirection {//         targetX: 100//         targetY: 0//         targetVariation: 100/6//         magnitude: 100//     }//     Age {//         anchors.horizontalCenter: parent.horizontalCenter//         width: 240; height: 120//         system: particleSystem//         advancePosition: true//         lifeLeft: 1200//

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492472.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的Consumer接口应该如何使用(通俗易懂图解)

应用场景: 第一次程序员A写好了个基础的遍历方法: public class Demo1 {public static void main(String[] args) {//假设main方法为程序员B写的,此时需要去调用A写好的一个遍历方法//1.如果此时B突然发现想将字符串以小写的形式打印出来,则…

WPF+MVVM案例实战与特效(四十四)- WPF多语言支持全解析:轻松实现国际化应用

文章目录 1、引言2、案例效果3、准备工作1、创建项目结构2、代码实现1、语言资源2、资源引用3、页面功能4、实现效果3、总结1、引言 在当今全球化的背景下,开发一个多语言支持的应用程序变得越来越重要。WPF提供了强大的功能来实现应用程序的国际化和本地化。本文将详细介绍如…

Java爬虫大冒险:如何征服1688商品搜索之巅

在这个信息爆炸的时代,数据就是力量。对于电商平台而言,数据更是金矿。今天,我们要踏上一场Java爬虫的冒险之旅,目标是征服1688这个B2B电商巨头,获取按关键字搜索的商品信息。这不仅是技术的挑战,更是智慧的…

《Django 5 By Example》读后感

一、 为什么选择这本书? 本人的工作方向为Python Web方向,想了解下今年该方向有哪些新书出版,遂上packt出版社网站上看了看,发现这本书出版时间比较新(2024年9月),那就它了。 从2024年11月11日至2024年12月18日期间&…

TouchGFX移植(3)增加SDRAM驱动

一)SDRAM驱动增加到工程中 1)加入驱动sdram.c文件,文件在上节课里有源代码。 2)在fmc.c文件里指定位置增加代码 SDRAM_Init();另外需要包含文件:#include “sdram.h” /* USER CODE BEGIN 0 / #include “sdram.h” …

Apache Kylin最简单的解析、了解

官网:Overview | Apache Kylin 一、Apache Kylin是什么? 由中国团队研发具有浓厚的中国韵味,使用神兽麒麟(kylin)为名 的一个OLAP多维数据分析引擎:(据官方给出的数据) 亚秒级响应&#xff…

【Token】校验、会话技术、登录请求、拦截器【期末实训】实战项目学生和班级管理系统\Day15-后端Web实战(登录认证)\讲义

登录认证 在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。 这是不安全的,所以我们今天的主题就是登录认证。 最终我们要实现…

前端(组件传参案例)

父组件(商品详情页) 子组件上边放大图 底下缩小轮播图 需求分析:父组件获取图片数据,传给底下子组件进行进行轮播,实现父组件给子组件传参。然后底下子组件轮播后,把当前图片下标给父组件,实现子组件给父组件传参。父组…

【Linux网络编程】第十二弹---构建与优化HTTP请求处理:从HttpRequest到HttpServer的实战

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、HttpRequest类 1.1、基本结构 1.2、构造析构函数 1.3、反序列化函数 1.4、GetLine() 1.5、打印函数…

使用k6进行kafka负载测试

1.安装环境 kafka环境 参考Docker搭建kafka环境-CSDN博客 xk6-kafka环境 ./xk6 build --with github.com/mostafa/xk6-kafkalatest 查看安装情况 2.编写脚本 test_kafka.js // Either import the module object import * as kafka from "k6/x/kafka";// Or in…

Linux内存管理 --- 进程创建虚拟地址的过程

文章目录 前言一、进程虚拟地址空间二、进程号1的创建过程2.1 kernel_init2.2 kernel_execve2.2.1 alloc_bprm2.2.2 bprm_stack_limits2.2.3 copy_string_kernel2.2.4 bprm_execve 2.3 bprm_execve2.3.1 prepare_binprm2.3.2 load_binary2.3.3 interpreter 三、load_elf_binary…

uniapp blob格式转换为video .mp4文件使用ffmpeg工具

前言 介绍一下这三种对象使用场景 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态 Blob - FileBlob -Base64Base64 - BlobFile-Base64Base64 _ File uniapp 上传文件 现在已获取到了blob格式的…

springboot447教师薪酬管理系统(论文+源码)_kaic

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,老师信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入:sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入:sudo apt-get remove docker docker-engine …

Java JDK8之前传统的日期时间-Date、SimpleDateFormat、Calendar

1. Date (1) Date代表的是日期和时间 (2) 常见构造器和常用方法 构造器说明public Date()创建一个Date对象,代表系统当前日期和时间public Date(long time)根据传入的时间毫秒值创建一个Date对象 方法说明public long getTime()返回从1970.1.1 00:00:00到此时的毫…

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:http…

matlab绘图时设置左、右坐标轴为不同颜色

目录 一、需求描述 二、实现方法 一、需求描述 当图中存在两条曲线,需要对两条曲线进行分别描述时,应设置左、右坐标轴为不同颜色,并设置刻度线,且坐标轴颜色需要和曲线颜色相同。 二、实现方法 1.1、可以实现: 1…

初学stm32 --- 窗口看门狗

STM32F1 窗口看门狗 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位(WWDG->CR 的第六位)变成 0 前被刷新,看门狗电…

Kafka Streams 在监控场景的应用与实践

作者:来自 vivo 互联网服务器团队- Pang Haiyun 介绍 Kafka Streams 的原理架构,常见配置以及在监控场景的应用。 一、背景 在当今大数据时代,实时数据处理变得越来越重要,而监控数据的实时性和可靠性是监控能力建设最重要的一环…

论文笔记:是什么让多模态学习变得困难?

整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记 背景方法OGR基于最小化OGR的多监督信号混合在实践中的应用 实验 背景 直观上,多模态网络接收更多的信息,因此它应该匹配或优于其单峰网络。然而,最好的…