骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索

骑砍战团引擎浅层剖析(四)人与场景物机制的异同

已有 104 次阅读2018-11-13 14:49 |个人分类:mod制作相关心得| 骑马与砍杀

第一期讲了武器和场景物有一定同源的引擎功能和机制,本期讲讲人和场景物功能机制上的同源性。

从总体层面上,其实人可以看成是一个被条件写死一些运动和碰撞特性的Physics(动态)场景物,而战团几乎全部现有场景物可以看作是默认关闭动态物理效果的static(静态)场景物。

为什么这么说呢?首先人(agent即troop中的一个个体实例)与场景物(sceneprop)都有可以关闭开启的动态物理效果,开启关闭后一些运动碰撞特性有很多相似的地方。区别是:

1.在旋转运动方面,人在引擎内部有一个校准地面坡度的设定,使得无论是Physics还是static状态的人不处于撞倒杀伤的情况下会保持身体与地面垂直的空间相对位置关系,使得无法使用旋转的基础操作对人体进行对x或y轴的空间位置旋转运动而场景物可以(所以这时候人的对x或y轴的旋转要靠动画了,不过对z轴的可以靠位置坐标变换)。

2.在平移运动方面,static状态的人没有开放在两个坐标间匀速动画式平移的功能(场景物在mod系统中有这一功能开放),不过可以用极限变换坐标实现static人移动(而Physics状态的人就是靠引擎的地面坡度检测和碰撞检测加上mod系统可修改层面的ai系统驱动移动)。

3.在箭矢攻击方面:Physics状态的场景物在箭矢击中的情况下也会呈现与Physics状态的人一样的中箭状态(即保持箭在射中相对位置随人或场景物的移动一起移动,而static状态的场景物中箭移动箭矢还是会处于原坐标位置),还有的不同之处是人在某些情况下会被动受引擎设定清除身上中的箭矢,而Physics状态的场景物在如今的mod系统中可以支持mod作者控制所中箭矢的清除(这并不是说明人和场景物在中箭效果上引擎层面有什么差别,应该是利用同一原理,只是对于mod作者来说只开放了场景物的箭矢清除操作,要搞清楚有没有和给不给的区别)。

4.在碰撞方面:在前面我讲了好多碰撞的东西,所以我再通俗讲一下碰撞检测机制到底是什么意思,就是当物体A移动的时候,保证A在开发者所设想的位移允许条件下,环境中不允许越过的其他物体就是障碍物,A在预期的移动方向上将与障碍物有表面或内部的坐标交叉,通过碰撞检测反应达到一定条件就会利用障碍物和A最先达到模型碰撞交叉的区域的坐标距离判定来阻止A在这个方向的移动(比如向前移动检测到快撞上障碍物就会触发某条件停止运行前进的移动代码)。所以不难看出碰撞检测的关键在于物体模型在游戏环境中的坐标的获取。而出于优化考虑,一般游戏获取坐标的方式有两个,一个是只需时刻知道物体身上的特征点(比如人,采用hitbox,只需要知道手脚头肩膀等等人体关键部位的一个或几个坐标就可以满足碰撞控制的需求),另外一个就是raycast,利用类似红外制导的射线对物体表面的坐标进行获取(比如Physics状态的场景物,不过骑砍mod系统也可以直接判断Physics状态的场景物是否交叉,但原理上还是对raycast的应用封装的功能)。

所以人和场景物在碰撞检测层面所用的坐标获取方面是不一样的,但是坐标获取后的判定碰撞原理是大同小异的,比如想在地面上走不沉下去只要能获取模型底面区域的坐标和地表接触区域的坐标就可以根据坐标距离来限制向z坐标反方向的移动代码即可,其他障碍物也是同理(把整个大地也可以看成一个障碍物或场景物,其实说法也没错,因为大地天空与部分石头树木在引擎里给过命名叫他们“环境场景物”,比那些正常的“装饰场景物”在mod系统上缺少大部分控制权限),顺便提一下,一般向前碰到障碍物对向前移动的代码进行限制的时候有的游戏里就算你只按W还会加一点对z轴旋转运动来致使单位可以被动绕开障碍物,不过骑砍不是,骑砍是只按W向前遇到障碍物就不能触发前移移动的代码了,这时候你就需要鼠标+W或ASD来绕开了(使控制体和障碍物体拉开碰撞判定的条件距离)。

5.动画方面:人和场景物都有动画,虽然所用动画形式不一样,前者采用骨骼动画,后者采用顶点动画,其实骑砍还有一种动画叫做UV动画,但应用上我们更习惯于把UV动画的应用归于Shader系统。还有,电脑上最早的3D模型动画是骨骼动画quake-MDL,而最早的顶点动画md2和md3技术是基于MDL的,而半条命的mdl技术和quake的是一样的,半条命二代的mdl是根据doom3开发过程的中间产物MD4改造的,所以事实上骨骼动画和顶点动画很多原理是差不多的,区别是优化和可维护程度,并且一定条件下可以互相转化。而骑砍的Physics状态的人动画和运动攻击互动等行为互为触发条件的,如果有耐心和基础,场景物也是可以根据此变成活物。所以这在人和场景物两者间从引擎层面上开发潜力没有多大差距。

6.通俗解释动态物理效果决定了什么:动态物理效果决定的就是物体的运动,前面所说的平移旋转自然是物体的运动,而前面所说的碰撞和动画也只是对物体运动的环境条件的限制调整以及触发条件或运动产生的后果。

所以综上所述:人和场景物功能机制在引擎内部具有同源性,对于他们的模型资源的功能设定上很多是相同的,不过根据游戏中的具体分工对一些基础功能进行了条件限定或者只是没有对mod制作者开放一些功能的控制权限。

题外话:骑砍的人和场景物在引擎里的关系这就像自然界人和动物的关系,有同一个祖宗,在自然界担任不同的分工,具体功能上出现分化,但还是有大量相似特征。不过人总以自己的标准评判是非愚智,不会画画算人类算术的动物就一定比会这些的大猩猩聪明?聪明的标准要看环境和场合,动物也有许多本事和智慧行为是人类无法做到的(比如声呐猫头鹰的夜视能力鸟类对猎物锁定的精准运算),但是一般不会纠结这个,因为分工不同,评价需要中肯客观。但是也可以互相学习,可以得到一些不可思议的提升,而且你也不能否定大自然这个造物者以后会让某个动物也进化出类似人的生物。



路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册(Register!)

Archiver|手机版|小黑屋|骑马与砍杀中文站 ( 鄂ICP备07001403号 )

GMT+8, 2018-12-17 15:31 , Processed in 0.048956 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部