基于Flash3D的粒子系统实现

因为项目需要,自己动手实现了一个粒子系统,同时为其编写了配套的粒子编辑器。由于自己对这一块并不是很熟悉,于是前前后后推翻重做了好多版,花费了大量的时间。所谓折腾使人进步,随着对粒子系统的编写、重构、优化,我自己对3D渲染的各方面也有了更深入的理解。随着时间的推进,粒子系统的设计也已经慢慢稳定下来,并经受了实际项目的考验。我想是时候记录一下自己在粒子系统这块探索的过程。

f

继续阅读

Flash骨骼动画渲染优化

这里的优化思路或许也不仅限于flash。优化说到底就是个发现问题 -解决问题的过程,首先使用性能分析工具找到瓶颈,然后再对症下药。

第一步:

在原有的设计中,我们的每根骨骼都是一个Object3D,会挂接在渲染树上,参与绘制流程。这样的方便之处在于我们可以很方便地把特效或者武器等物件挂接在某根骨骼上,只需要找到对应的骨骼调用addChild()就可以了。然而,这带来的比较大的性能开销:
1. 每根骨骼都要参与可见性判断、裁剪等过程。
2. 每根骨骼都要参与矩阵级联运算。

优化思路也很简单:
1. 把骨骼从渲染树上拆解出来,单独成为一套更新体系,省去了一系列可见性判断。
2. 原本每根骨骼的矩阵是相对于父骨骼的,现在会在解析模型的阶段将所有骨骼的矩阵预处理成相对于根骨骼的,避免了每次渲染时的矩阵级联运算。据说相对于根骨骼的矩阵在做插值时会遇到问题,但项目开发到现在,依旧没有出现肉眼能观察到的问题,所以这样是可行的。
3. 至于特效和武器的挂接问题,需要另外写机制实现,但总体效率会好过优化前。

继续阅读