关于torque中场景管理

最近做了一个场景,很大,很丰富,当然也很卡,搜了一下场景管理的文章,找到了一篇关于portal的文章,如下(来源:http://blog.sina.com.cn/s/blog_55288aa2010009ea.html):

这两天由于工作的原因,又回头看了不少场景管理的文章.有讨论FarCry,HL2的,也有针对WOW的场景管理方式进行的一些深入讨论.除了HL2以外,我对FarCry和WOW并没用很多的研究.HL2严格意义上就没有对室外场景进行支持.它的场景管理方式个人认为也并不适合目前的一些网游的制作.虽然我个人并不喜欢做网游....可惜做单机实在没饭吃..大体上,几乎所有人都支持室内和室外采用QuadTree+Portal+BSP来实现整个完整的场景管理,而且这里每一种技术都非常成熟,并得到了广泛的应用,无须做太多的解释.但从实现方式上,特别是制作方式上,大家存在这不少的想法和意见.主要的问题是由于中国的美术人员几乎都没有经历过BSP时代..而且连做一个符合Shadow Volume标准的模型都要再三解释,实在不要期望他们能在MAX里面真正建出符合标准的场景.最好的方式就是提供给他们CG编辑器,也无须讲解太多原理,从规格上就去限制住美术.但是..做一个成熟的CG编辑器谈何容易..哪个老板又愿意花钱给你去做这种不能带来直接经济效益的东西呢(不要跟我说自己业余做...你能做的很成熟我佩服你)?我们必须用一种更简便的方式来达到我们的目的,老板高兴,我们也不用花太多的时间就可以达到我们的目的.说了那么多废话,终于要进入正题了....=.=国内不少人应该知道Torque这款便宜的引擎,而且鉴于中国程序员的无私的精神,相信已经人手一份了.很多程序员对于一款如此便宜的引擎不以为然,甚至觉得它一无是处..可是,你并没有真正去了解这款引擎.试问,国内有几款所谓的商业引擎能够做到把脚本编译器做到引擎里,并且和所有的引擎元素完整的结合起来,不要告诉我没意义,这对策划的意义不是一点半点(有问题的话欢迎深入讨论.)更重要的是,它以一个方便的方式实现了我们想要的场景管理.基本的做法是这样的: 室外场景我想不必多说,采用QUADTREE的地形管理方式,很多人都把它作为3D入门做的第一项技术.真正重要的在于它对室内场景的处理,TORQUE编辑器本身并不支持室内场景的编辑。在Torque中,室内场景作为一个单独的实体(Entity)存在,和模型,场景物体一样,它被Torque称作"interior"。internior就是一个完整的BSP Tree,在torque里,程序员通过portal把各个区域分成一个一个的zone。在引擎中,Torque只是实现了BSP的加载渲染,它的室内部分采用了一款叫做Quark的免费CG编辑器,并专门为这款编辑器制作了导出插件,来导出自己引擎所需要的元素(例如材质,Portal),并且从原理上来说,DOOM编辑器和WORLDCRAFT导出的文件它同样可以使用.从CG编辑器里把场景导出后,室内场景和其他的引擎元素(模型,角色)一样,是一个独立的实体,我们只需要把它放置在场景中就可以了.在渲染的时候,先在地形上做一遍裁减,而一旦interior在渲染列表中,那么它在渲染的时候会获得外部的frustum并根据自身的Portal来对frustum做进一步的裁减,这样一层一层下去,最终得到了室外和室内场景相结合的效果.如果当前摄像机在室内,从内往外看的时候,只需要判断摄像机的Position,然后采用同样的裁减逻辑,对室外的地形和物体进行裁减. 写了这么多,也不知道有几个人能明白我的意思..欢迎任何人进一步的探讨,目前公司的引擎也实现了这个方法,从技术上验证了这个方法的可行性.只是没有大规模的应用(万恶的网游..).而且Torque对于编辑器的扩展也很好,对于自己引擎中Portal和材质等特定元素的完美支持,也显出了这种方法的灵活性.BTW,这种方法比自己写编辑器会麻烦一些,但的的确确节省了程序员的工作量,而且,现在BSP渲染代码满天飞,你甚至不用去理解什么SECTOR,LEAF这样晦涩的概念就可以很轻松的把它们加入游戏,技术就是为游戏服务的,不是么? 以上只是解决了渲染的问题,到实际的应用中,我们还会面对更多的问题:碰撞的问题,如果你的游戏可以允许基于逐三角形的碰撞,那么恭喜你,你已经解决了这个问题。。。

在编辑器中给室内场景中加入实体,一种简单的方式是让实体只是成为整个室内的一部分,附属在特定的zone上。裁减时根据Portal裁过的frustum来计算,虽然粗糙,但是却很有效

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值