居于WEBGL与Blender建模工具实现室内导航

2,540 阅读2分钟

* 先说实现的思路:首先得有一个室内模型,然后利用工具生成一张导航网格,有了导航网格即可利用算法进行导航路径规划

效果图:

一、环境以及工具

1、示例代码实现环境:node.js 环境,python2.7+ 环境

2、示例代码使用辅助工具:免费开源的Blender 建模工具,Python写convert_obj_three.py模型转json工具

3、第三方开源库:PatrolJS, git地址:

github.com/donmccurdy/…

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)导入到场景中,任意一个开始点和结束点即可实现室内