* 先说实现的思路:首先得有一个室内模型,然后利用工具生成一张导航网格,有了导航网格即可利用算法进行导航路径规划
效果图:
一、环境以及工具
1、示例代码实现环境:node.js 环境,python2.7+ 环境
2、示例代码使用辅助工具:免费开源的Blender 建模工具,Python写convert_obj_three.py模型转json工具
3、第三方开源库:PatrolJS, git地址:
4、参考资料(fq查看):
www.donmccurdy.com/2017/08/20/…
二、实现步骤
1、首先得有一个模型,本示例不提供模型(本文模型是用revit创建的一个室内模型)
2、用Blender对模型处理,生成导航网格,生成导航网格的方法步骤如下:
- 打开Blender,先清除场景中原有的模型,然后倒入要生成导航网格的模型,并调整好模型的位置及视角,入下图:
- 在Blender头部,把模式选为Blander Game模式,如下图:
- 右侧面板选择:
- 然后右侧面板选择
这里有一些参数:Cell Size、Cell Height 调整穿透大小、高度
Agent列表里的Height Radius 分别调整空间高度以及人在里面的最小半径(这些都是猜的,反正调整这里会对产生的导航网格有很大的影响,有些地方会因为通道过小而不会产生导导航网格
-
点击Build Navigation Mesh 按钮生成导航网格(点击这个按钮前,要先选中整个模型)
生成网格效果如下:(彩色的就是导航网格)
-
导出导航网格:先选中生成的导航网格,点击File -> Export -> 选择要导出的格式,如下图所示:
然后在左下角面板中勾选Selection Only(仅导出选中的导航网格):
然后命名导出的文件名,点击export Obj(这里以导出Obj格式为例),如下图:
3、把得到的模型用javascript代码(PatrolJS)导入到场景中,任意一个开始点和结束点即可实现室内