IN2AR Flare3D2.5
我在下班前,忽然看到Andy君在昨晚的朋友圈分享了高大上的Haagen Dazs Concerto Timer应用截图,确实如Andy所说,实现不难,主要是创意,印象中,比较成功的AR实现技术是一个叫Penguin Navi 的项目,够完全,够创意,而且特别可爱,
我在下班前,忽然看到Andy君在昨晚的朋友圈分享了高大上的Haagen Dazs Concerto Timer应用截图,确实如Andy所说,实现不难,主要是创意,印象中,比较成功的AR实现技术是一个叫Penguin Navi 的项目,够完全,够创意,而且特别可爱,
昨天折腾一个晚上的结果,是在白爷的帮助下,将Blog搬家到了这里,在此要向白爷无私地提供后端技术支持表示感谢。
杀死一只知更鸟中,哈珀小姐对黑人的描写充满着富含悲悯的温暖,原文截取一段如下(isbn:978-7-5447-2276-6 p:145):
”进入教堂院子后,扑面而来的是一股洁净的黑人身上散发出的温暖苦甜的气息——‘爱之心’发乳混合着阿魏,鼻烟,‘霍伊特’古龙香水、布朗骡子牌嚼烟、薄荷以及丁香搽粉的味道。“
昨天暂停在代码实现之前的部分,为了让坦克主体能够分别表现炮击瞬间的后坐力的效果,我对整个模型的结构做了一下层级调整,关于如何让一个模型成为另外一个模型的子部分,是直接拖拽放置即可实现的。
层级如下:
在亲爱的老婆和可爱的儿子回家去之后,我经历了短暂的伤感,玩命补动漫和闲书之后,终于罹患上呼吸道感染,进而诱发咳喘,现在一大喘气就跟拉风箱似的,呼噜呼噜,也终于打起精神来,继续写博客,今天要记录的是,利用Flare3D为Tank模型制作一个开火的射击效果,很简单,重点在如何利用Flare3D创建粒子效果,并实地在自己的代码中引用它们。
首先,我需要一个意向,于是我找到了下面这张图片,作为我想实现的目标(我命名为炮打菊花)。
之前的TexturePacker是可以直接添加swf文件并转化成序列的动画的,新版本的不知道为什么需要单独分离出一个叫FlashUnpacker的东西(SWF格式变化,或者作者将其列为收费点也未可知)。总之想直接用swf导出之前的Sprite Sheet没有那么爽,即便我安装了这个插件,导出时仍然很慢。
自从我发现Flash CC支持直接导出Sprite Sheet之后,我顿觉虎躯一震,这无疑为Flash继续作为动画制作利器开辟了一个完美的途径,可以这个性能可能会使得传统动画师和AS开发者彻底分裂开。这些担心无需多写,反正Flash要成为过去式是早晚的事儿。
我在偶然看到某人推荐的一篇,《森林故事,以及干脆面军团考证》中,发现一些较为精细图片的水印指向一个网址,arkive.org,寻根至此发现这是一个专门收集,介绍濒危物种的公益性质网站。对物种的描述非常全面,并配备有大量的图片和视频资料,令人心生敬仰,并想为此作点什么,(写博记录和传播也是一种帮助吧)。
浏览中,遇到鸟类分类下的一种名字很土著的胖鸟,唤做Kakapo,于是发了搜索病,试译部分内容如下。
一日不复药,血压归旧高,诚如二弟所言,高血压是一辈子的事。继续完成剩余译文。
扁平化Sprite(Flattened Sprites)
为了追求最小化的状态变更,你已经做了一大堆事以期你的游戏获得性能提升。然而Starling仍然需要遍历你所有的对象,检查它们的状态,并且把它们的数据提交到GPU——这可是在每一帧都发生的事啊!(好恐怖啊!)
别慌,我们下一步就来搞定这个问题。如果在你的游戏中的某个部分的几何图案处于静态,不发生(或者很少发生)变化,可以在这个Sprite上调用flatten方法。Starling将会预处理它和它的子对象数据并提交给GPU。在接下来的帧调用中,它将被正常的绘制,不触发任何CPU处理,也不需要在上传它的数据给GPU。
这是一个非常棒的特性,这潜在地大量减轻了GPU的负担。但是要注意的是即便扁平化的sprite们被从状态变更的苦难中隔离了出来:如果被扁平化的Sprite中包含有不同渲染状态的子对象,它仍然是会被多步骤的绘制的。
今天来翻译第二部分。
针对Starling的专门建议
把状态变更缩减至最小
如你所知,Starling使用Stage3D做所有的可见对象渲染。这意味着所有的绘制都是由GPU完成的。
目前,Starling每次提交一个四边形数据,一个接一个地向GPU提交,一个接一个地绘制。实际上,这也是最初版本的Starling的工作办法,所以可以通过一次向GPU提交大批量的数据进行绘制的办法,来获得最佳性能。
这也是为什么新的Starling版本在每次向GPU提交之前尽量积存较多的四边形数据。不过,它只能批量提交具有相似特性的四边形。每当遇到一个状态发生变化的四边形时,一个“状态变更”就发生了,之前的批量数据们就被提交绘制了。
由于最近一直在折腾Starling相关的开发,这已经不是第一次向Starling进击了,因此也鸡贼了一些,今天静下心来仔细细读了一遍官方的优化建议,终于使自己手上的项目运行在一个比较理想的性能指标上了,故而饮水思泉,想翻译原文一篇,供大家一起研究。
Starling的性能优化
尽管Starling仿造了Flash显示列表的经典结构,但是在这表象的背后却蕴含着巨大的不同。因此,想要使程序达到最佳的性能,你首先应该了解其架构中的一些关键性概念。下面是一个最佳实践列表,你可以按照这个顺序实践来使你的游戏运行得尽可能地快,哦耶。
与标准AS3相关的建议
永远要以发布版本(release build)作为性能比照的依据