AI判断能否看到物体

来源:互联网 发布:listview性能优化 编辑:程序博客网 时间:2024/05/21 14:46

AI判断能否看到物体的几种方法

观察者发射射线

这里写图片描述
如图所示,观察者所看向的方向有一个夹脚,计算出夹角范围并发出射线
这里写图片描述

缺点也是显而易见的,虽然Raycast速度很快,但是,随着观测距离的上升,或者被观测物体的减小,物体可能出现在视线内的两道射线之间。此时只能通过发射更多射线解决,而且加上Y轴将会发射非常多的射线。
这里写图片描述

被观察者发射射线

因为光线的传播是相互的,由被观测者发射出射线,如果射线被其它物体阻挡,则观察者观测不到我。并且,如果向量和观察者方向向量夹角大于观察者的范围,那么直接可以判断为看不到。如图
这里写图片描述

这样我们就可以连同y轴一并被处理掉,当然我们不能只用物体坐标一道射线,理论上的最佳方案是每个顶点都发出射线,只要有一道射线没有碰撞到物体,那么
这里写图片描述

这样又是无数的射线,优化方案为使用部分顶点用来判断,缩小射线检测数量,一般来说如果是人物,那么都是躯干骨骼关节部位外侧的点为关键点,身体最突出的点一般在这些点上,而头部的则是五官这些突出点为关键点。

重写编辑器,可以自定义保存检测顶点的索引。