Unity3d引擎性能指标分析
一 Unity3D引擎采购需求分析
1.1 使用成熟的3D引擎在项目开发中的必要性
3D引擎是指一些已编写好的用来编辑制作电脑电视游戏或者互交式实时图像应用程序的核心组件。如同类库在软件开发中的作用,这些整合好的系统为游戏软件开发者提供各种编写程序所需的基本模块和开发工具,让程序开发方能够更简单、快速而高效地制作出游戏程序而不用由底层开始一点点实现。
随着软件和硬件工程业的飞速进步,当今的电脑3D模拟场景已经越来越真实。各种光线、阴影、物理算法的出现让软件不仅越来越接近现实,也更加庞大和复杂。所有需要虚拟现实的项目都希望可以提供最佳的用户体验,但越复杂的功能实现起来就越困难。开发者可能面临各种构架局限,逻辑冲突,花费大量的时间调整程序的性能与效果比。3D引擎的出现正是将开发者从这些繁杂的工作中解放出来,提供给他们成熟的解决方案,可以预见的性能开销和实现效果,以及完备的功能和良好的可扩展性。使用成熟的3D引擎,即可以为使用者节省大量的项目时间和开发预算,又不需要降低产品质量,还可以大大降低项目的风险。
引擎一般会包含渲染,实时物理,碰撞检测,三维动画,音效,脚本引擎,电脑动画,人工智能,网络以及场景管理等等的功能模块。但也有引擎只提供单一或很少的功能模块,需要集成其他引擎或插件才能开发完整的项目。
1.2 Unity3D引擎为项目开发提供丰富的功能模块
Unity3D引擎是一个成熟的多平台的游戏开发工具,是一个全面整合的专业3D引擎。其内置大量成熟的功能模块,包括图形图像渲染,实时物理和碰撞检测,音效,三位动画,视频播放,网络通信和下载,读取外部资源,内置游戏服务器和可动态加载的场景管理等等。每一个模块都简单易用而且高效。
开发者可以完全专注于程序逻辑的开发和场景的搭建而不用操心其他的方面。
1.3 Unity3D引擎编辑器提供全程可视化的开发环境
Unity3D引擎通过编辑器提供全程可视化的开发环境,使用者可以随时查看之前制作的效果。除了开发中一直用到的场景,摄像机界面,资源管理器和属性设置界面,使用者还可以查看动画编辑器对动画进行修改操作和绑定触发事件的时间,或者利用探查器实时监视程序运行时的各种开销。其详细追踪到脚本中每个函数所使用的CPU运算速度和开销以及内存使用。
1.4 Unity3D引擎拥有良好的可扩展性
通过编写脚本和Shader,开发者可以轻松掌控整个软件的运行。 所有程序运行的模块都有足够的API供开发者调用,并调用整实现各种功能。可以调用编辑好的dll,支持C++ 、Java、Object C编写的插件。
1.5 Unity3D引擎支持多个平台的发布
只要保证所使用的功能可以获得相应平台的支持,使用Unity3D引擎制作的项目可以直接发布在PC、 Mac、 Web 、iOS 和Android平台上而基本不用对制作好的项目进行任何修改。
1.7 Unity3D制作方向使用者提供良好的后续支持
通过官方论坛和官方Wiki网站,使用者可以获得后续的技术支持。
如果购买Unity3D源码,还可以随时获得来自开发团队的技术支持并保证项目始终能应用所有开发方新开发的功能。
1.6 Unity3D引擎拥有大量的第三方支援
Unity3D仿照苹果的AppStore建立了自己的AssetStore,为第三方和使用者提供购买和服务的渠道。许多顶尖开发商为Unity提供了大量的扩展功能、更真实的渲染效果并加强组件的功能。进一步降低了项目的开发时间和风险。
二 技术要求以及性能
2.1 开发技术要求
2.1.1 程序开发
开发人员至少应具有基础编程知识并了解面向对象设计和面向对象编程的技术。了解基本的三维技术和向量算法等数学知识和基本的经典物理知识。其他有助于开发项目的知识包括掌握人工智能,数据结构, 软件构件等。
2.1.2 视频特效
视频特效的开发通常需要美术人员与掌握计算机图形学的开发人员一起研发。一个效果实现的完美程度通常都依赖于程序和素材的契合度。仅仅拥有高级的算法或漂亮的素材不一定能达到期望的效果,或会损失一定的性能。
2.2 同类型软件对比
.1 画面效果
Unity3D引擎可以轻松的渲染大量的多边形,支持法线贴图、Lightmap、高光贴图、透明通道、环境贴图等常见效果贴图。其画质摇摇领先于ORGE、VisTools等在虚拟现实领域常见的3D引擎,使用基本功能可以与著名的游戏引擎BigWorld持平。达到Unreal Engine 3,Crysis Engine 2, Crysis Engine 3等高端3D引擎的画质有一定难度,但是不是不可实现的。开发方需要强劲的美术团队和掌握一定的计算机图形学技术。Unity3D良好的可扩展性让可以达到的效果上限几乎完全取决于开发者自己的技术。在硬件支持的情况下任何新颖优秀的图形图像算法都可以实现。
.2 开发难度
Unity3D引擎提供完备的可视化开发环境,对用户非常友善。所有的功能都简单易用,其编辑器还可以在运行状态下设置断点,实时监控游戏数据。其资源可以很容易的移动到不同的项目中,拥有自带的版本控制软件并支持第三方的版本控制软件和代码比对工具。可以说在开发难度来看Unity3D引擎在所有引擎中都是最容易的,有编程知识的人都可以利用现成的资源开发完备的游戏。
.3 开发时间
使用Unity3D引擎基本上不会有什么难以处理的需要花费大量时间解决的步骤。其内置编辑器和Shader编辑器允许开发者针对不同的硬件运行环境自动调用不同的处理方法,编译可执行文件也不需要任何其他的设置,直接就可以发布与编辑器效果完全一致的软件,并直接发布所有Unity3D支持的平台而几乎不用做任何更改。其开发时间基本与同类引擎一样取决于项目的复杂度。
.4 开发预算
Unity3D引擎基本上支持所有主流素材格式,并且只收取远远低于其他3D引擎的授权费用。相对于其他引擎开发需要的一系列授权费,发布费和收益分成,Unity3D只收取基本的授权费用,而且仅为其他性能相近引擎的几十分支一。这将有效降低使用Unity3D引擎开发项目的预算。
三 Unity3D引擎实际应用状况
3.1 当前主要的应用领域
3.1.1 游戏
当前Unity3D引擎在游戏领域主要应用在iOS, Android等智能手机游戏开发和Web端游戏的开发。Unity3D引擎开发的3D游戏在这几个领域拥有很大的市场份额。传统客户端游戏使用Unity3D引擎开发的游戏则主要注重其和Web等其他平台的通用性,用Unity3D引擎开发的游戏可以在浏览器,智能手机和客户端上拥有基本相同的效果并能直接实现联网而不需要任何其他设置和支持。
3.1.2 虚拟现实
Unity3D引擎以其较低的授权费用,出的画质和快捷高效的开发过程和多平台特性在虚拟现实领域受到大量青睐,被大量用于虚拟仿真,增强现实,场景漫游等领域。尤其是随着iPad代表的平板电脑和新的用户体验的出现,对iOS、Android平台有良好三维支持的Unity3D引擎更是获得了更多的应用空间。
3.2 成功案例
产品名称
发行商
平台
简介
老虎伍兹Online
EA
Web
《老虎伍兹 Online》由 EA Tiburon 研发,利用Unity3D在Web上的优异表现从测试期起就吸引了大量玩家的加入。
太空堡垒卡拉狄加OL
Bigpoint
Web
《太空堡垒卡拉狄加OL》是一款大型多人在线策略类太空战斗游戏,拥有庞大的太空场景和华丽的次时代画面。在游戏公测的5个月内,游戏已经拥有300多万注册用户。
武士II 复仇
MADFINGER Games
iOS
Android
PC
在中国、日本、美国的AppStore下载排行榜都进入前10名。 游戏画面拥有浓郁的漫画风格,深受各国玩家喜爱。
SHADOWGUN
MADFINGER Games
iOS
游戏拥有可以媲美Unreal的精致游戏画面和光影效果,紧张的战斗节奏和颇具挑战性的BOSS战。拥有iOS平台最佳画质的次时代游戏之一。
四 二次开发的内容及方案
需求
Unity3D引擎只提供程序的整合功能,所有项目用到的素材和程序逻辑实现都需要使用者提供和编写。
在开始制作原型程序时可以先利用官方提供的资源包和其他第三方素材来搭建。基于Uinty3D引擎良好的面向对象开发模式,这些素质可以分别更改和补充而且完全不会影响到项目的其他部分。
根据项目的具体需求,可以选择用Unity3D基本功能模块,对其进行扩展或提出新的解决方案。
 
4.2 场景
4.2.1 场景加载
除了直接切换场景,Unity3D引擎还可以提供场景的实时加载和预加载来展现巨大的虚拟场景。针对读取较慢的情况还可以实现异步加载。
4.2.2 地形
默认地形最大支持4086x4086x32的高度图分辨率以及树木和草的自动优化。多个地形之间可以实现无缝衔接来构成更大的场景。地形生成可以直接由美术绘制,读取高度图文件,通过生成程序生成,通过脚本读取以及通过其他三维软件制作的模型转换。地形可以通过脚本导出成模型文件或直接导出高度图,方便美术人员进行创作和处理。地形上的纹理和植被数据也可以用脚本执行导出和写入操作,并支持程序运行状态下的实时修改。可以模拟植被从微风到飓风的不同摆动幅度并能针对特定区域进行模拟。
4.2.3 模型
场景中用到的模型通常都是在其他三维软件中制作的。树木可以通过引擎自带的功能制作,只需要提供贴图纹理。
4.2.4 光照
通常场景光照通过设置环境光以及一个平行光来调整。对地形和场景中的物体可以通过Lightmap来加强细节。
4.2.5 天空和环境雾
Unity3D引擎内置有静态天空盒和环境雾效果。动态天空盒需要通过脚本或开发插件的方面实现。
4.2.6 场景优化
Unity3D引擎提供细节贴图和自动生成Minmap。Pro版提供设置自定义的静态和动态批处理,遮挡剔除等方法实现场景渲染的优化。地形上有参数可以调整树木,草和地面细节的优化程度。除此之外还可以通过程序自行实现LOD等其他优化效果。
4.3 脚本
  程序的逻辑部分通过写脚本来实现。脚本可以通过调用其他类库和插件等方法缩短开发时间。
4.4 视觉效果
4.4.1 渲染器(shader)
Unity3D引擎提供几十种内置渲染器,基本可以满足一般项目的开发需求。针对不能满足的效果可以通过自行编写Shader来实现,并可以通过摄像机接口实现个性化的全屏后期处理。
4.4.2 摄像机和后期处理
场景中可以同时有多个摄像机一起工作,可以实现分屏显示和叠加等效果。同时引擎提供接口可以让开发者在摄像机进行视锥剪裁、准备渲染和渲染结束阶段进行自定义操作,实现如动态模糊,景深,颜修正等后期效果。
4.4.3 渲染模式
支持正向渲染顶点渲染和灯光延迟三种模式。每个摄像机可以设置不同的渲染模式。
粒子特效
内置粒子发射器和粒子动画组件可以实现常用的粒子特效。针对特殊的粒子行为函数可以用脚本实现,来模拟特殊的体效果。粒子同时也支持物理碰撞检测和物理运算。
OpenGL接口
允许用户之间向显卡写入渲染信息,包括渲染指定模型、图片和绘制图形。
投影
用于模拟投影仪,复杂的多边形纹理衔接,模拟简单阴影等。
灯光,头光斑和Cookie
内置平行光,点光和射灯三种灯光。可以自定义镜头光斑和灯光Cookie
阴影和Lightmap
Pro版可以使用动态阴影。对于静止的物体可以利用Lightmap可以降低渲染开销。通过脚本可以实现动态的Lightmap阴影。
4.4.9 批处理渲染
在Pro版中可以对静止的物体设置静态状态进行批处理减少渲染开销。
4.5 音效
内置3D 和2D音效,并可以通过音频滤波器调整音效和混音。
网络和数据库
  4.6.1 通过网页访问服务器
利用内置WWW函数可以像网页一样访问服务器进行通信和下载资源,其中图片和声音可以直接获取文件而不用打包。
  4.6.2 本地数据库
库实现访问数据库,XML等功能。
  4.6.3 自带网络模块
基于RakNet的多平台多人网络模块可以实现建立服务器和支持最多32个客户端之间的同步运行。
  4.6.4 库实现网络连接
利用Unity3D引擎支持 .Net Socket的功能可以自行开发网络功能模块。
  4.6.7 利用第三方资源
许多服务器开发方直接提供面向Unity3D的解决方案,如SmartFoxServer。
4.7 物理,碰撞检测和其扩展
4.7.1 刚体
Unity3D引擎内置刚体物理解算组件,自带高效可分层解算的碰撞检测。可以设置刚体的重量,空气阻力等属性并通过添加物理材质模拟不同摩擦力表面的物理解算。
其他物理和碰撞效果
提供射线,区域和体射线碰撞检测。碰撞盒使用复杂的多边形进行检测,并可以返回详细的碰撞信息。
扩展物理模拟效果
针对特殊的需求可以利用脚本实现柔体、流体的物理模拟,并计算物体爆炸、切割、损毁等。
4.8 三维动画
4.8.1 动画控制,分割动画和动画编辑器
Unity3D可以播放由三维软件制作的骨骼动画,可以在引擎中对制作好的动画数据进行分割,利用动画编辑器制作、修改并设置触发事件。
4.8.2 融合动画
Unity3D引擎可以设置动画之间的融合以达到自然的过度。通过设置动画的融合范围还可以实现动作间的叠加,减少美术工作量。
4.8.3 动画与物理系统结合
可以利用物理系统驱动角动画,实现模拟真实碰撞效果的动画。
4.8.4 脚本驱动动画
利用脚本对动画进行修正或驱动,可以通过实时计算动画达到预设动画不能实现的个性化体现。比如实现角行走位置与地面高度贴合。
4.9 实时生成和修改模型
Unity3D引擎允许用户利用代码生成和修改模型,实现实时显示物理损毁运算,根据数据生成模型等功能。
4.10 制作场景编辑器
通过制作场景编辑器,可以让美术和关卡策划人员在已实现程序的基础上组合搭建场景或关卡而不需要了解编程知识。
其他功能和应用
.1 动态加载资源
针对Web端和移动平台需要快速下载和读取场景的特性,可以利用动态加载技术节省打开场景时需要调用的资源并在实际使用到的时候进行加载。对大型资源还可以实现异步加载。
.2 内置GUI
Unity内置一套简单易用的GUI,可以加快原型开发进度。默认GUI可以自适应屏幕位置,自动排列GUI元素。但是由于其CPU开销的性价比偏低,一般在实际项目中都会重新开发一套GUI系统。
.3 视频
可以播放多种常用格式的视频,并可以把视频当做材质贴在模型上,实现动态的模型外观效果。
.4 材质
支持多种图片格式,可以直接将摄像机渲染画面反贴到模型,支持Cubemap实现环境反射效果。可以通过脚本生成贴图,对贴图进行剪裁和合并,直接将生成的贴图编码成PNG格式。
.5 插件
支持利用C++,Java,Object C开发的插件。
.6 资源包
可以将当前项目中制作的内容打包成资源移植到其他的项目中使用,也可以用来在多人开发时合并最终的项目。
五 运行环境
5.1 Unity 开发
  Window XP SP2或更高版本
  Mac OS X
  Intel CPU & “Leopard”或更高版本
  注:Unity没有在服务器版本的Windows和 OS X环境中测试过
  64MB 显存
  拥有像素着器或4个纹理单元
  在2000年之后生产发售的显卡
  遮挡剔除需要GPU闭塞查询的支持(某些Intel GPU不支持)
  其余需求取决于项目的复杂性
5.2 Unity iOS 开发
  基于Intel的Mac
  Mac OS X  ” Snow Leopard”
  其余需求取决于项目的复杂性
5.3 Unity Android 开发
  同Unity开发的系统要求
  Android SDK和Java开发工具包(JDK)
5.4 Unity 产品发布平台
  Windows 2000 或更高版本; Mac OS X 10.4 或更高版本
  大部分3D显卡,视程序复杂度而定
  Web端适用于大部分浏览器,包括IE,火狐,Safari和Chrome等
  Android需要配置的设备:
    ARMv7体系(Cortex系列) CPU电源
六 Unity3D引擎授权方式
6.1 各授权版本支持功能
.1 基本功能
Unity Pro
Unity
iOS Pro
iOS
Android Pro
Android
物理
手机游戏源码论坛音频(3D定位和经典立体音)
音频滤波器
视频播放和流
1,2
2
基于RakNet的多平台多人网络模块
资源包完整流化
1iOS设备不支持网络流
2视频播放只能以全屏模式允许在iOS和 Android设备上。不支持以纹理方式在模型表面上播放。
.2 部署
Unity Pro
Unity
iOS Pro
iOS
Android Pr
Android
一键部署
Web浏览器集成
自定义屏幕分辨率
自动剥离未使用模块
.3 图形
Unity Pro
Unity
iOS Pro
iOS
Android Pr
Android
图形优化
Shaders(内置和自定义)
Lightmapping
光照贴图结合全局照明
自动动态整合批处理
自定义静态批处理
地形系统(大型,高细节,自动优化的地形景观)
渲染到纹理效果
全屏后期处理效果
低级别渲染访问
遮挡剔除
实时阴影
延迟渲染
.4 代码
Unity Pro
Unity
iOS Pro
iOS
Android Pr
Android
基于 .NET库的脚本(支持语言 C#, JavaScript, Boo)
通过WWW函数库之间与网络数据沟通
在用户浏览器中打开一个URL
支持 .Net Socket
支持本地代码插件
.5 编辑器
Unity Pro
Unity
iOS Pro
iOS
Android Pr
Android
集成编辑器
快速的自动导入和自动更新资源
集成动画编辑器
集成树木生成器
探查器
支持外部版本控制器
脚本访问资源流
专业版编辑器外观
.6 关于其他许可证需要询问Unity3D官方
(具体授权功能请参考Unity3D:)
6.2 授权费用
基础产品
费用(美元)
Unity
免费
Unity Pro
可选插件
(需要先购买基础产品)
费用(美元)
iOS
iOS Pro
Android
Android Pro
Asset Server client license
+$500
其他许可证
Wii standalone and WiiWare
源代码许可证(可以获得技术支持并保证游戏拥有最新功能)
教学许可证
以上许可需要联系Unity3D官方
  (具体授权费用以Unity3D为准:)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。