位置: 编程技术 - 正文

THREE.JS入门教程(4)创建粒子系统(three.js 教程)

编辑:rootadmin
译序 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习。 0.简介 嗨,又见面了。这么说我们已经开始学习Three.js了,如果你还没有看过之前三篇教程,建议你先读完。如果你已经读完前面的教程了,你可能会想做一些关于粒子的东西。让我们直面这个话题吧,每个人都爱粒子效果。不管你是否知道,你可以很轻易地创建它们。 1.创建一个粒子系统 Three.js将粒子系统视为一个基本的几何体,因为它就像基本几何体一样,即有形状,又有位置、缩放因子、旋转属性。粒子系统将geometry对象里的每一个点视为一个单独的粒子。为什么这样做?我想基于以下的原因:首先,整个粒子系统地绘制只需要调用一次某个绘制函数,而不是调用上千次;其次,这允许你设定一些全局的参数来影响你的粒子系统内的所有粒子。 即使是粒子系统被视为一个整体的对象,我们仍然可以为每个粒子单独地着色,因为在绘制粒子系统的过程中,Three.js通过attribute变量colour向着色器传递了每一个顶点的颜色。我在本篇教程里并不准备这样做,如果你想知道这是怎样完成的,你可以去GitHub上看Three.js的例程。 粒子系统可能还有一种特殊效果需要引起你的注意:Three.js在粒子系统第一次被渲染的时候,会将其数据缓存下来,之后你无法增加或减少系统中的粒子。如果你不希望看到某个粒子,你可以将它的颜色中的alpha值设置为0,但你无法删除它。所以你应当在创建粒子系统的时候,就将所有可能需要显示的粒子考虑进来。 开始创建一个粒子系统,只需要这么多: 如果你运行: 1.你会发现粒子都是方的 2.粒子都不动 我们一个一个来修复。 2.风格 我们创建一个粒子基本材质时传入了颜色和尺寸。我们可能想做的是传入一张纹理图片用来显示粒子,而这样就可以很好地控制粒子看上去的样式了。 你也看到,粒子是以方块形状绘制的,所以我们也应当使用一张方形的纹理图片。为了看上去效果更好,我还会使用加法混合,但是这样做必须保证纹理图片的背景是黑色的而不是透明的。我理解的原因是:现在加法混合和透明材质之间不兼容。但是没关系,最后看上去会很棒。 我们来更新一下粒子基本材质和粒子系统,加入一些加法混合下透明的粒子。如果你喜欢,你也可以用我的粒子图片。 这看上去已经好多了。现在来引入一点物理,让粒子们动起来。 3.引入物理 默认情况下,粒子系统在三维空间中不运动,这很好。但我想让他们动起来,而且我要让粒子系统这样运动:让粒子绕着y轴旋转。而且粒子在每个轴的范围都在-到之间,所以绕着y轴旋转以为这它们绕着系统地中心旋转。 我还假定,你已经在某个地方有了帧循环的代码,和我在上一篇关于着色器中的教程中类似。所以这里我们只需这样: 现在我们开始定义单个粒子的运动(译者注:之前的旋转是整个粒子系统的运动)。我们来做个简单的雨点效果,这包含一下几步: 1.给每一个粒子赋一个初始为0的速度 2.在每一帧中,为每一个粒子赋一个随机的重力加速度 3.在每一帧中,通过通过加速度更新速度,通过速度更新位置 4.当一个粒子运动出了视线,重新设置初始位置和速度 听上去很多,其实代码写起来很少。首先,在创建粒子的过程中,我们为每个粒子增加一个水平速度: 接下来,在帧缓冲中我们传递每个粒子,并且,当粒子离开屏幕底部需要重置时,重置其位置和速度。 虽然不够震撼,但这个粒子至少展示了如何做。你完全应该自己创建一些美妙的粒子效果,然后让我知道。 这里有个警告你应该知道,在帧循环中,我越雷池了:我在一次循环中遍历了所有粒子,这实际上是种很粗放的方式。如果你的帧循环中做了太多的工作(译者注:注意帧循环的js代码是在cpu中运行的,它不像gpu,能一下子并发出成千上万个简单进程),浏览器就会卡顿,事实上如果你用了requestAnimationFrame,它视图每秒刷新次。所以还是优化你的代码,在帧循环中做尽量少的事情。 4.小结 粒子效果太棒了,是个人都爱粒子效果,而现在你知道如何在Three.js中加入粒子效果了。我希望你能用得顺手,就跟前面一样! 同样,这里有源码下载,而且,让我知道你喜欢它!

推荐整理分享THREE.JS入门教程(4)创建粒子系统(three.js 教程),希望有所帮助,仅作参考,欢迎阅读内容。

THREE.JS入门教程(4)创建粒子系统(three.js 教程)

文章相关热门搜索词:three.js 入门,three.js入门指南,three.js入门教程(合集),three.js 教程,three.js入门教程(合集),three.js 教程,three.js入门指南,three.js 教程,内容如对您有帮助,希望把文章链接给更多的朋友!

THREE.JS入门教程(5)你应当知道的十件事 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学

js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍 IE左键是window.event.button=1右键是window.event.button=2中键是window.event.button=4没有按键动作window.event.button=0Firefox左键是event.button=0右键是event.button=2中键是event.b

THREE.JS入门教程(6)创建自己的全景图实现步骤 译序Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还处在发展阶段,资料极为匮乏,爱好

标签: three.js 教程

本文链接地址:https://www.jiuchutong.com/biancheng/379142.html 转载请保留说明!

上一篇:THREE.JS入门教程(3)着色器-下(three.js入门教程(合集))

下一篇:THREE.JS入门教程(5)你应当知道的十件事(three. js)

  • 携程代订住宿发票能作为差旅费报销吗
  • 电子发票作废了还能恢复吗
  • 印花税核定征收的计税依据
  • 公司现金支付管理办法
  • 销售金银首饰消费税怎么算
  • 个人设备投资需要交税吗
  • 企业可以不弥补以前年度亏损吗
  • 法院拍卖土地欠土地使用税
  • 售后维修费怎么开票
  • 融资租赁的服务费的标准
  • 进口一批原材料,海关核定的关税完税价格
  • 企业员工无偿使用合法吗
  • 工程预付款需要监理审批吗
  • 发票报销的补助是否缴纳个人所得税?
  • 如何从百旺开票系统中导出开票明细
  • 成本票和专票区别
  • 金三系统打印控件下载及报税流程
  • 增值税电子普通发票可以抵扣吗
  • 企业发给员工的福利要交税吗
  • 现金流量表的余额和资产负债表货币资金是不是一定相等
  • 在建工程二级科目待摊支出
  • 会计实操的重要性有哪些
  • 电脑pin码忘了开不了机,且鼠标失灵
  • 电脑c盘被损坏怎么修复
  • PHP:ftp_nb_get()的用法_FTP函数
  • 离职补偿金如何缴纳个人所得税?
  • 绿萝 用什么土
  • 应付股利属于债务吗
  • 应收债权换入无形资产
  • 金融资产减值的账务处理
  • 一般纳税人商业税负多少
  • ERROR: Could not build wheels for opencv-python which use PEP 517 and cannot be installed directly
  • Yii2中hasOne、hasMany及多对多关联查询的用法详解
  • 工程项目会计怎么样
  • Win11 Build 23430 预览版发布(附更新修复内容汇总)
  • 遗传算法排课代码python
  • ps2021和cs6有什么区别
  • 2022年最新公务员职务职级对照表
  • 小规模纳税人的增值税计入成本吗
  • 免征增值税个税计税依据
  • 可供出售金融资产新准则叫什么
  • 如何让主营业务成本增加
  • 收入费用表本期盈余与资产负债表不一致
  • 累计摊销属于什么类科目
  • 收到代理服务费怎么做分录呢
  • 在建工程转长期待摊费用是什么意思
  • 小规模纳税人能抵扣进项税额吗
  • 本年利润每个月有余额吗
  • 什么企业可以开培训费发票
  • 企业接受捐赠的固定资产,应增加营业外收入
  • 施工期间水电费没有发票财务不给报销
  • 成本类科目借贷规则
  • 公司支票可以进私人账户吗有限额吗
  • ubuntu系统如何安装
  • 安装metpy
  • win10系统如何添加隐藏wifi
  • mac安装软件提示无法检查更新
  • 进不去操作系统 怎么样修复引导
  • win7系统怎么给软件打开摄像头权限
  • windows8.1使用指南
  • linux在u盘中运行
  • javascript原生写法
  • javascript 表格
  • node.js ssh
  • unity openvr
  • 安卓中textview
  • JavaScript中的数据类型分为两大类
  • jquery one
  • 关于python中的判断条件
  • js获取div下指定元素的值
  • javascript如何学
  • bootstrap要学到什么程度
  • 汕头市国税局公务员待遇
  • 浙江国税电子税务局
  • 重庆国税电子税务局手机版
  • 年轻干部是什么意思
  • 个人土地建房
  • 个人所得税是先交还是后交
  • 嘉定办证中心营业时间
  • 购置税缴费方式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设