网站大量收购闲置独家精品文档,联系QQ:2885784924
  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Pv3D10.粒子

10 粒子 ? 粒子是2D图形,它们相对于3D坐标系定位,但不使用透视投影。换句话说,粒子始终面对摄像机。另一个粒子的特点是,它们是轻量级的物体。由于你的3D应用程序性能受三角形数很大影响,因此粒子的轻量使得它们能成为很好的工作伙伴。在这一章中,我们将讨论为什么使用粒子,然后通过一些例子,一步一步演示如何创建它们。 ? 本章包括以下内容: ? 什么是粒子,以及为什么使用它们 如何创建粒子和应用粒子材质(materials) 给粒子添加交互性 如何创建粒子域 使用Flint粒子系统 ? 在我们研究如何创建粒子前,让我们看看它们是什么以及我们如何使用它们。 ? 什么是粒子以及为什么使用它们 ? 如果你有玩过3D游戏,你肯定看到过粒子起作用。许多3D游戏使用的粒子模拟各种现象(多半是自然现象)如爆炸,落叶,和血液飞溅。 ? 在Papervision3D,一个粒子可以被描述为一个二维图形,可以相对于一个3D点缩放和定位。可以设想为一个轻量级的平面,始终面对着摄像头。本章主要讨论了以下两方面的粒子使用: ? 告示牌(Billboarding),用于削减你的场景中三角形数量的技术 创建自然现象,通常是在粒子系统的帮助下完成 ? 这两个方面并不互相排斥。但是,当讨论Papervision3D里的粒子时,这种分类是一个很好的起点。 ? 告示牌 ? 假设你想要在你的场景中有一些树。要创建树木,你可能需要许多多边形。但是,渲染树木对用户的计算机来说可能会相当困难,具体随场景中的其它对象而异。或者假设你想加上1000个反光球。创建1000个有渲染的球体也将非常消耗CPU。一种处理这种情况的技术就是使用粒子。 ? 现在,假设我们有一个反光球的2D图形。通过相对于3D坐标系定位和缩放2D维图形,你可以得到这是一个3D物体的错觉。这样,你将极大地削减多边形。这种用面对摄像机的2D图形代替3D物体的技术就叫告示牌。 ? 看看以下图片,这是一个Papervision3D场景的截图。它展示了三个反光球,似乎是3D空间中的3D物体。但是它们不是创建于Papervision3D或建模程序中的球体。它们是简单的2D图形,创建于图形编辑程序。 ? ? 告示牌有利有弊。使用2D图形代替有很多三角形的3D物体给了渲染器一个轻得多的工作负荷。但是,告示牌粒子可能看起来比3D物体真实感更少,有两个原因。首先,你不能绕着一个粒子移动摄像机,以得到一个不同角度的视图,而3D物体可以。其次,虽然先前截图里的粒子看起来像反光的球,但是不管摄像机在哪里,反光看起来总会是一样的,这会导致真实感比实时渲染的球体更少。 ? 谈到真实感,粒子不需要成为烘培渲染(baked shading)的图形。在这章里,我们将看到仅有圆形或方形组成的粒子。但是,在你的场景中产生,定位及缩放很多这些粒子仍然能创建漂亮强烈的3D体验,比如,用来暗示一片星域。以下截图也是从Papervision3D场景中获得的。 ? ? 就像我们将在例子里看到的,创建像前面截图里展示的粒子星域在Papervision3D里相当简单。但是创建现象,如爆炸,落雪,或喷泉要更复杂,需要相当高级的编码,这是粒子系统起作用的地方。 ? 粒子系统 ? 有很多途径来定义什么是粒子系统。让我们总结下所有定义共有的东西: ? 粒子系统模拟有机现象(organic phenomena),如烟火和落叶。 粒子系统产生和移动一批小物体(粒子)。 粒子有属性,如速度和加速度。 有一内置随机元素在一定的限制下操作粒子属性,这些限制通常由程序设置。 粒子有生命周期——它们被创建,根据特性移动,然后销毁。 ? 通常,由发射器(emitter)产生粒子,并初始化每个粒子的属性。以下截图展示了一个在粒子系统帮助下创建的喷泉: ? ? Papervision3D不包括粒子系统,但是在这章结尾,我们将看一看一个外部开源类库Flint,它能很好的和Papervision3D一起使用。 ? 我们已经讨论了什么是粒子,以及用它们来做什么。该是融合这些想法到一些实际例子并看看怎样在Papervision3D里创建粒子的时候了。 ? 创建粒子 ? 创建和显示粒子的过程看起来如下: ? 创建粒子材质 创建Particles实例,这会被用来包含和渲染粒子。 使用Particle类实例化一个粒子(或者大约,一整群),传递材质,尺寸,以及位置作为其参数。 使用addParticle()方法添加粒子到Particles对象。 ? 前两步的顺序可以交换,因为粒子材质和Particles实例不需要彼此。 ? 使用Particles类,还有Par

文档评论(0)

bokegood + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档