Crysis引擎分析

很早以前研究过crysis的引擎,最近和同事讨论起来这个东西,现在简单总结一下。

 

这里关注的是crysis的场景管理和光影。

 

crysis的场景管理是通过把玩他的编辑器猜测的,不一定完全正确,还有部分是我自己的设想。

crysis的场景管理是全实时的不需要什么预计算,以他的室内场景为例,他是通过放置VisArea和Portal以及Furtums的Portal剪切筛选来实现的。可以通过编辑器编辑VisArea,这个VisArea就是一个几何体,将各种模型(静态,运动均可)拜访其中,只有当相机在VisArea内部时才会渲染它内部的模型。而VisArea之间通过放置Portal来连接。相机的Furtums会被Portal进行剪切并迭代的提出相关VisArea内部的模型,如此迭代。只有这样做才能做到实时,且编辑器和游戏统一放案。

 

接下来说一下我设计场景管理方案,以及资源制作办法。

首先也采用VisArea+Poral+Furtums剪切,与此同时VisArea内部增加一个可选择的八叉树用于管理VisArea内部物体。在制作室外场景时也是使用一个巨大的VisArea,在其内部使用这个八叉树来管理内部数据繁多的模型。当然这个八叉树管理是可选的,在编辑器的VisArea属性有一个勾选项,用来标示是否启用。对于VisArea区域不大,完全可以就是用视锥进行剔除。

在资源制作的时候,首先在Max编辑好整个场景,至少是一个VisArea内部的场景主结构,美术需要适当的分割物体(比如一个地板也许会被分割成几块)这样有利于视锥剔除。在到出的时候每个SubMesh都被单独保存为独立的Mesh,这样也有利于视锥剔除和在编辑器中的二次编辑。

之所以这样做是因为我没有用Crysis的编辑器从头做过场景,打开的都是现有的场景,看到一个室内陈设了大量模型的场景,想象不出来美术如何一点一点地把模型拼起来,而且在Crysis进行场景拼装肯定不如在max里面来的方便,所以决定在Max里面制作,并到处,而在编辑器中提供简单的二次编辑功能(也就是缩放,旋转,平移)

 

crysis2的光照也都是实实的,其实就是shadowmap + deffershading + ssao。他并没有全局光照,只使用直接光照,这没什么问题,因为全局光照事可以被大量点光源来进行模拟的,问题是要摆放大量的点光源和恰当的摆放位置。在crysis的场景中可以看到的确有大量的光源,但也不是十分过分,而且也并不是追求真正的物理上的光照。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值