Nebula3中的Visibility系统

VisibilityMar2010新增加的一个模块. 严格上来说, 也不是增加, 其实是原有的场景管理可见性更新部分的一个扩充, 同时主要的目的是把可见性更新多线性化, 方便充分利用Win32CPUPS3SPU.

大体结构, 如图

l  InternalStage是这个系统它妈, 不用说

l  VisibilityChecker是核心类, 相当于一个管理器吧.所有加入Stage的实体都会在这里注册一下, 加入VisibilitySystem. 有一点值得学习的是VisibilityQuery, 这里持有俩实例, 每次取的都是上一帧的结果, BackBuffer&FrontBuffer很像, 呵呵.

l  VisibilityQuery就是实际操作查询的类了.功能是把查询请求变成一个Job任务提交, 并取得查询结果. 至于Job的工作原理, 下回再说.

l  VisibilitySystemBase可见性系统基类. 可以看到, 它有3个子类(当然, 可以自己扩展).

n  VisibilityQuadtree 这就是老的那一套场景管理, 只不过多了个爹而已.

n  VisibilityBoxSystem VisibilityBox其实就是个包围盒, 里面一堆实体. 这个子系统的管理方式很简单: 如果摄像机在一个box, 那么它只能看到这个box和邻近box内的实体; 如果摄像机不在任何box, 那么所有box都是可见的. 简单的说, 就是你在这个房间里的话, 只能看到这个房间和隔壁房间里的东西.

n  VisibilityClusterSystem VisibilityCluster, , 这个, 怎么说呢, 跟上面这个类似, 不过它是一个逻辑上的概念, 在关卡编辑器里指定的, 不深入讨论.

 

没几句话就说完了, 其实还是Job的工作原理才是核心, 抽时间仔细看看那一块儿.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值