Dream3D 引擎开发状态(一)

好久没没有在 Blog 上更新关于 Dream3D 引擎的开发状态了,主要是一直在忙。目前引擎的核心部分已经完成了 3D 图形游戏的基本功能,包括场景图管理、渲染系统、动画系统、粒子系统、资源管理、材质系统,工具部分包括 max 导出插件、粒子特效编辑器、实体编辑器。以上各个系统具体的功能还有许多,比如动画系统支持骨骼动画、顶点动画、uv 动画、轨迹动画,其中骨骼动画还支持动画混合、动画过渡、子动画、多动画,uv 动画支持任意 texture 层等等。实际上上述功能在 7 月份就已纪基本完成,核心部分在 5 月份已经完成,其中骨骼动画部分在 5 月份进行了重构,导出插件部分在 6 月份进行了重构,7 月份又进行了资源管理的重构,目前正在进行的是粒子特效系统的重构,重构是为了能拥有更强的编辑和扩展能力。引擎的结构也进行了多次的大大小小的调整,目前调整部分比较少的就是场景图管理、渲染系统、材质系统。
从 8 月份开始,公司的游戏项目开始使用 Dream3D 引擎开发游戏 Demo,9月末 Demo 第一版开发完成。在图形表现上并没有特别复杂之处,加了 PostGlow 的全屏特效,Full Scene 的 ShadowMap,VS 实现的草被风动的效果,uv 动画,引擎的动画过渡技术使角色运动起来更平滑。游戏中动态物体比较多,有大量的碰撞会同时发生,不过从测试的效果上看,性能还是令人满意的,这归功于 Bullet 物理引擎的高效。另外,我们还为游戏 Demo 开发了关卡编辑器,在开发之前我希望在编辑器中实时切换到游戏状态,这会给策划提供很大的便利。为了这个目标,我搭建了一个编辑器和游戏应用的框架,最后做到了能在编辑器中编辑数据之后实时切换到游戏,效果还算令人满意。
在这期间我尝试了几种次时代 3D 技术,比如 Deferred Shadow Map,基本的功能目前已经完成,不过还需要一些完善才能达到实用,首先是软阴影的实现,目前我采用随机采样点实现软阴影的边缘,但是是基于屏幕空间,这样会出现无论物体远近,阴影的边缘都是相同粒度的现象,对于离 Camera 较远的阴影效果不好,所以我打算采用基于 View 空间来进行点采样,这也是 Crysis 和 UE3 采用的技术。其次是对于阴影物体的选择问题,因为是基于后期处理,所以对于不需要产生阴影和不需要被投影的物体进行过滤,我考虑可以使用 Stencil buffer,不过如果和其他渲染技术结合的话,有可能会出现争用 Stencil Buffer 的情况,所以最好是用单独的 RT 保存 Shadow Mask。
Advertisements
此条目发表在DreamEngine 3D 图形引擎开发分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s