可以说,自从2000年开始接触Flash以来,我就一直期望有一天能在Flash里面自由地运用3D模型,原因是当时我在上海交大同时学习Flash 4和Maya 3。多少年后,两个软件的版本伴随着我的年龄一起增长,在Flash领域我也渐行渐深,但是在3D领域一直没有什么建树,因为我一直没有在工作上进入这个领域。不过一些主流的3D软件依旧是我硬盘中的常客,因为在内心深处,其实我还是偏爱3D技术多一些。
因为这个原因,期待3D引擎成为Flash Player标准配置成了我脑海中一根若有若无却永远挥之不去的游丝。每一次Flash新版本的发布都会翘首以望,但遗憾的是每次都以失望收场。而令人意外的是在Macromedia/Adobe公司对Flash内置3D引擎一再保守(他们的官方理由是:增加3D模块会使Flash Player体积大大增加,而他们的理念是做世界上最小的播放器)的同时,外部的Flash 3D插件的开发却如火如荼。近年来光本人研究使用过的就有Blaze 3D, Papervision 3D, Away 3D。但是,由于Flash Player本身并不包含3D解析模块,这些外部插件都很难归入到真正的3D引擎阵营中去。因为Flash Player不支持硬件加速,所有的数据都靠CPU运算,所以像D3D,OpenGL等都无法得以运用。基于此,这些3D插件的前景不管开发者如何鼓吹都好不到哪里去,因为离开了显卡的硬件加速支持,这些Flash 3D引擎所能渲染三角面是非常有限的,只能做做像网站之类3D模型比较简单项目,要应用到游戏之类的项目,那是蚂蚁拉牛车,实在太难为它们了。
记得当时CS4发布之前传出Adobe将推出Flash 3D引擎的消息,着实让我激动了一把,并因此一度中断对Papervision3D的探究,及至发布日,发现那个3D引擎竟是如此3D法,不由得大骂Adobe误人子弟。而现在CS5又将发布,从目前已有的消息来看,3D引擎依旧没有进入Adobe的发布日程表。这种太监急煞皇帝悠闲的现象显得有些奇怪,不能不引起我们的思考。
我之所以一直认为Adobe会推出Flash 3D的引擎,是因为我觉得3D应用是未来网络的发展方向,Adobe收购Macromedia的主要目标就是要从平面媒体发布垄断拓展到网络媒体发布垄断,那么花了那么多钱买来得网络优势它不可能白白地看着它被别人侵消,也不会白白浪费Flash Player近乎100%的装机率,所以它一定会推出Flash 3D引擎模块。但近来我的这种信念渐渐地产生了动摇,其原因是网络上出现了另一种东西,那就是Unity 3D。
Unity 3D本来是由德国的一些苹果粉丝开发的一款游戏引擎,一直只能用于Mac平台,所以一直不被业外人士所知晓。但是今年推出了2.5版,同时发布了PC版本,并将其发布方向拓展到手持移动设备。几乎像当初的Flash一样,一下子就火爆了起来。我试用了一下,感觉是:被彻底镇住了。试用时所感受到的那种冲击力,和我当初第一次使用Flash的感觉是一样的:超简单的使用方法,方便的可视化创作环境,完美的工作流程,高效的工作效率……但同时它比当时的Flash有一个无可比拟的优势:它已经有成熟的并广为人知的脚本语言:C#和Javascript。这些特点可以归结到一点:可以让无数水平不等的使用/开发者轻松上手,而这正是一款软件能够迅速流行起来的主要因素。我只试用了十几分钟,就产生一种强烈的感觉:Flash 3D永远没戏了。
网络上的3D应用,除了游戏之外,目前比较有前景的是3D虚拟社区,此外还有一些3D场景的虚拟展示。作为一个从3D游戏引擎发展起来的软件(其实它目前还只是个游戏引擎而不是通用软件),用Unity 3D做这些事情自然是举重若轻。一些用Flash开发需要“高高手”才能完成的项目,用Unity 3D只要稍微设置一下,加一点控制脚本就能轻松完成,而运行速度方面Flash根本不在一个数量级。而它的web player插件也只有4M多一点点,和Flash Player差不多。
等了那么多年,总算搞明白的两件事:一是对Flash内置3D引擎的期待本来就是我们的一厢情愿,而Adobe早就不是一个有创意的公司了。
现在回过头来看,其实在Flash技术里面添加真正的3D引擎几乎是不可能的。首先是Flash Player里面已经有两套虚拟机同时工作,第一套虚拟机解释AS1.0和AS2.0,第二套虚拟机解释AS3.0,这时它的体积已经是4M多了。如果要解释真正的3D程序,势必要再增加一套虚拟机,因为Flash是基于矢量图形的运算的,所以想和3D解释引擎合二为一可能性不大。这样的话播放器的体积就可能会超过8M,而且2D虚拟机和3D虚拟机如何协同工作还是个问题。其次Flash的目标市场本来就是2D市场,指望它同时兼容3D就像指望把Photoshop和Maya合二为一一样。
Adobe公司发展到现在,已经是个很成熟的软件公司了,而成熟型公司的共同特点是不再擅长技术创新,而是擅长资本运作和市场投放。他会总是怀里揣着巨款眼睛搜寻着市场,一旦市场上出现了一项新技术,就会立刻评估它的价值和未来对公司业务带来的影响。如果这项技术对公司未来的发展有利,那么就等它差不多成熟的时候收购它,如果它以后会对公司的业务带来损害,那就用巨款毁灭它。这是典型的富二代行事方式。所以,我可以在这里做一个大胆的预测:如果Unity 3D在未来的两年里发展的好(开发群体迅速扩大,web player装机率快速上升),那么Adobe公司会在一个适当的时候复制收购MacroMedia那一幕。即使是现在,要说Adobe的那些头头头脑里一点这种念头都没有,那是打死我也不会相信的。到那时,在Adobe的产品线里,Flash继续统治2D Web,而统治3D Web。
所以,不要再对所谓的Flash 3D抱有什么希望,也不要再去花心思学习那些杂七杂八的Flash 3D插件,赶紧学习才是正经。