根据路线添加删除移动目标模型
目标动画模型的实时添加、删除、并按路径运动
参数
new MMSDT.addOrDellModel( parameter, callPosition)
parameter = {
model: ['models/man/hongren.gltf', 'models/man/lvren.gltf'], //需要添加的定位模型
icon: ['textures/line3.png','textures/line1.png'], //显示图标
scale: 20, //三维模型缩放大小
rotation: Math.PI*0.5, //面向前,旋转偏移
speed: 0.8, //移动速度
height: 20, //图标相对高度
size: 0.8, //图标缩放大小
}
callPosition( positions ): 回调函数,返回参数模型的三维坐标
属性
.add(list,array)
添加模型
list:调用模型的序号
array:运动路径的数组,三维向量
.remove()
删除所有本函数添加的模型
代码示例
var eventMouse = [];
var onMove = [];
var outMove = function(){ }
var onDown = [];
var onDouble = [];
var moveColor = [];
function goBack( dateJson ){}
//构建函数监听鼠标事件
MMSDT.mouseEvent( eventMouse, onMove, outMove, onDown, onDouble, moveColor, false, false, goBack );
//需要生成的路线样式1
var lineStyle1 = {
texture: [dirUrl+"textures/line1.png"], //指定贴图箭头
repeat: 20, //贴图密度
speed: 0.2, //流动速度,数字越大越快
high: 0.5, //相对坐标点的高度
width: 4, //线条宽度
closed: false, //线条是否封口
help: false, //是否显示辅助线
tension: 0.3, //线条张力(转折点的圆滑度)
};
//需要生成的路线样式2
var lineStyle2 = {
texture: [dirUrl+"textures/line2.png"], //指定贴图箭头
repeat: 20, //贴图密度
speed: 0.2, //流动速度,数字越大越快
high: 0.5, //相对坐标点的高度
width: 3, //线条宽度
closed: false, //线条是否封口
help: false, //是否显示辅助线
tension: 0.3, //线条张力(转折点的圆滑度)
};
//需要生成的路线样式3
var lineStyle3 = {
texture: [dirUrl+"textures/line3.png"], //指定贴图箭头
repeat: 20, //贴图密度
speed: 0.2, //流动速度,数字越大越快
high: 0.5, //相对坐标点的高度
width: 4, //线条宽度
closed: false, //线条是否封口
help: false, //是否显示辅助线
tension: 0.3, //线条张力(转折点的圆滑度)
};
var lines=[], lineList=-1; //线条及数量
//添加定位模型
var setting = {
model: ['models/man/hongren.gltf', 'models/man/lvren.gltf'], //需要添加的定位模型
icon: ['textures/line3.png','textures/line1.png'], //显示图标
scale: 20, //三维模型缩放大小
rotation: Math.PI*0.5, //面向前,旋转偏移
speed: 0.8, //移动速度
height: 20, //图标相对高度
size: 0.8, //图标缩放大小
}
var aodm = new MMSDT.addOrDellModel( setting, callPosition );
//回调函数,模型的实时坐标
function callPosition( positions ){
for( var i=0; i < positions.length; i++ ){
if( positions[i][3] == "9527" ){
let vector = MMSDT.mapped3to2( positions[i] );
document.getElementById("info").style.display = "block"; //显示div
document.getElementById("info2").innerHTML = "路线信息<br>ID号:" + positions[i][3] + "<br>消防救援路线";
document.getElementById("info").style.bottom = vector.y + 100 + "px"; //实时刷新二维div
document.getElementById("info").style.left = vector.x -85 + "px";
}
}
}
//鼠标右键绘制路线
var parameter = {
color: 0x00ff00, //画线颜色
high: 0.5, //相对坐标点的高度
size: 1.5, //点的大小
tension: 0.3, //线条张力(转折点的圆滑度)
}
var startDraw = new MMSDT.drawPath( parameter ); //默认鼠标右键绘制,须鼠标监听开启
//使用MMAPI类,自定义外部函数接口
//开始画线
MMAPI.beginDraw = function(){
alert("使用鼠标右键:点击地面画线");
//调用构建函数的开始属性
startDraw.start();
}
//结束画线
MMAPI.endDraw = function(list){
//调用构建函数的结束属性,并返回坐标点的值
var getArray = startDraw.end();
//重新格式化坐标点,把三维向量格式转成数组格式
var paths=[]; paths[0]=[];
for( var i=0; i < getArray.length; i++ ){
paths[0].push( [getArray[i].x, getArray[i].y, getArray[i].z] );
}
//画线
if( paths[0].length > 1){
lineList++;
if( list == 1 ){
lines[lineList] = new MMSDT.initDrawPath( paths, lineStyle1 ); //样式1(调用路线的构建函数)(路径,样式)
aodm.add(1,getArray); //添加小人(小人样式,路径)
}else if( list == 2 ){
lines[lineList] = new MMSDT.initDrawPath( paths, lineStyle2 ); //样式2(调用路线的构建函数)(路径,样式)
aodm.add(0,getArray); //添加小人(小人样式,路径)
}else if( list == 3 ){
lines[lineList] = new MMSDT.initDrawPath( paths, lineStyle3 ); //样式3(调用路线的构建函数)(路径,样式)
aodm.add(0,getArray, "9527"); //添加小人(小人样式,路径,赋予id号)
}
}
}
//删除路线
MMAPI.delDraw = function(){
aodm.remove(); //删除人物
for( var i=0; i <= lineList; i++ ){
lines[i].remove(); //删除线条
}
lineList=0;
document.getElementById("info").style.display = "none"; //隐藏div
}
在线演示
Powered by mms3D