threejs加载楼层的3ds文件后,需要解决自动寻路的网格中障碍物标记问题,因为所画网格和加载的3ds模型文件没有关联关系,要标记有障碍物的网格必须将两者关联。
我们以同一坐标原点作为参考点,拿出模型中各物体方块的四个顶点的 (x,y) 坐标,然后计算每个网格点是否与物体相交,相交则有障碍物。画图可以更好地说明,但只为自己记录,有时间再补充,直接上代码。
var gridWidth = 40; //导航格宽度
//3D障碍物方块
var objs = [
[{x:110,y:130},{x:110,y:150},{x:160,y:150},{x:160,y:130}],
[{x:85,y:20},{x:85,y:70},{x:110,y:20},{x:110,y:70}]
];
//生成数字全部一样的矩阵,比如说0或者1
//row:行,col:列
function produceSameNumber(row, col, number) {
var result = [];
var arr;
for ( var i = 0; i < row; i++ ) {
arr = (new Array(col)).join(',').split(',').map( function(){
return number;
});
result.push(arr);
}
return result;
}
//生成全0的矩阵,row:行,col:列
function zeros(row, col) {
return produceSameNumber(row, col, 0);
}
//获取物体边界值
function getBoundary(singleObj