基于相机位置的事件判断
相机运动到指定的关键点时候,可执行自定义的相关操作。
常用到自动巡检中,在关键点位暂停、弹出信息框等。
参数
new MMSDT.pauseEvent( parameter, callback )
parameter: [{
[-96,0,44],
[-44,0,34],
[5,0,145]
], //数组,关键点坐标
scopes: 6, //检测范围距离
}
callback: 回调函数,每到达一个点位,回调位置点位序号
属性
.onOff( Boolean )
布尔值,是否开启位置监听
代码示例
//自动巡游, 位置监听
var autoCruise, eventPause;
//读取巡检路径
MMSDT.getJson( dirUrl+"models/paths2.json", callback);
//回调路径json
function callback( dateJson ){
//自动巡检
var parameters = {
model: 'models/fly.gltf', //三维模型
scale: 0.0015, //三维模型缩放大小
rotation: Math.PI, //模型面向前,旋转偏移
distance: 6, //默认镜头与中心模型的距离
height: 1.5, //默认镜头与中心点的高度
speed: 0.3, //巡游速度
veer: 0.3, //镜头转向速度
repetition: true, //一圈后是否重复
}
autoCruise = new MMSDT.routingInspection( dateJson, parameters, cruiseEnd ); //初始化自动巡检
function cruiseEnd(){
//巡检完成
MMSDT.cameraTarget([0,0,0], [-224,108,47], 1000 ); //镜头复位
MMSDT.controlsTarget( [0,0,0], 400, 1000 ); //控制器复位
controls.maxPolarAngle = Math.PI*0.498;
controls.minPolarAngle = Math.PI*0.35;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//基于相机位置的事件判断
var parameter2 = {
positions: dateJson.path, //数组,关键点坐标
scopes: 6, //检测范围
}
eventPause = new MMSDT.pauseEvent( parameter2, callback ); //构建函数初始化
//回调函数,到达某个关键点
function callback(list){
//显示div
document.getElementById("info").style.display = "block";
document.getElementById("info2").innerHTML = "巡检暂停" + "
当前点位序号:" + list + "
3秒后恢复";
//暂停巡游
autoCruise.onOff( false );
setTimeout(function(){
document.getElementById("info2").innerHTML = "巡检暂停" + "
当前点位序号:" + list + "
2秒后恢复";
},1000);
setTimeout(function(){
document.getElementById("info2").innerHTML = "巡检暂停" + "
当前点位序号:" + list + "
1秒后恢复";
},2000);
setTimeout(function(){
document.getElementById("info2").innerHTML = "巡检暂停" + "
当前点位序号:" + list + "
0秒后恢复";
},3000);
//暂停3秒后继续
setTimeout(function(){
autoCruise.onOff( true );
document.getElementById("info").style.display = "none";
},4000);
}
}
//使用MMAPI类,自定义外部函数接口
MMAPI.startCruise = function(){
autoCruise.onOff( true ); //开启自动巡游
models[1].visible = true;
}
MMAPI.person1 = function(){
autoCruise.person( 1 ); //第一人称视角
}
MMAPI.person3 = function(){
autoCruise.person( 3 ); //第三人称视角
}
MMAPI.stop = function(){
autoCruise.stop(); //停止巡游
}
MMAPI.onOff = function(value){
eventPause.onOff = value; //布尔值,是否开启关键点监听
}
在线演示
Powered by mms3D