变颜色

MMSDT.superposition()

       对指定的“IoT设备图标”、“子模型元素”,叠加颜色,突出显示。

       Tips: 对相同材质的设备,需要在MMSDT.initScene()里先进行材质拆分。

MMSDT.resSuperposition()

       对指定的“IoT设备图标”、“子模型元素”,恢复本身颜色。

构造函数

      MMSDT.superposition( object: string, color:color, Boolean )

       object - 字符串,“子模型元素”的名称,或者“IoT设备图标”的id号。或者为包含该字符串的数组。

       color - 颜色的rgb数值,需要变化的颜色。

       Boolean - 布尔值,变色时是否保留原贴图,true保留贴图,false或空则去掉贴图。

       无参数为空,则恢复所有本身颜色。

      MMSDT.resSuperposition( object: string )

       object - 字符串,“子模型元素”的名称,或者“IoT设备图标”的id号。或者为包含该字符串的数组。指定恢复颜色。

代码示例

var MMS3D_exceptionMesh = ['dmxx328','dmxx362','dmxx388','huojia1','huojia2','huojia3','huojia4']; //需要材质拆分的网格 var MMS3D_instancingMesh = []; //合并实例化网格 //初始化场景 MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh ); //设置第3人称鼠标控制器 controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制 controls3.maxDistance = 1000; //最远距离限制 controls3.screenSpacePanning = false; //右键平移是否上下移动 controls3.enableDamping = true; //是否开启惯性阻尼 controls3.dampingFactor = 0.1; //惯性阻尼系数 controls3.autoRotateSpeed = 1; //自动旋转速度 //使用json文件让场景还原 MMSDT.onloadScene( "models/mms3D_cangku1.json", function(progress){ if( progress == 'done' ){ //加载完成,播放动画 for( var i=0; i<actions[0].length; i++ ){ actions[0][i].play(); actions[0][i].timeScale = 0.5; } }else if( progress == 'ok' ){ //渲染完成 renderDone(); }else{ //显示进度条数字 document.getElementById("loadNum").innerHTML = Math.round( progress )+'%'; } }); //加载机械手臂的图标 MMSDT.getJson( "models/equip_cangku3.json", function(dataJson){ //添加IoT设备图标 var options = { dirUrl: 'models/equip/', //安装目录 scale: 1.5, //缩放比例 height: 50, //相对高度 visible: true, //默认显示 animate: true, //上下浮动 lookAt: true, //是否垂直约束 color: 0x1197ff, //默认颜色 } MMSDT.addIcon( dataJson, options); }); function renderDone(){ var eventAll = ['dmxx328','dmxx362','dmxx388'] //三个机械手臂 //对场景中包含子网格进行监听 var meshEvent = new MMSDT.mouseChildEvent( eventAll ); //移入场景模型 var onMove = function(name){ if( eventAll.indexOf( name ) > -1 ){ MMSDT.superposition(name,0xf000ff); //机械手臂变紫色 } } //移出场景模型 var outMove = function(){ MMSDT.superposition(); //移出机械手臂颜色恢复 } //移入设备图标 var onIot = function(icon){ if( icon.type == "7" ){ MMSDT.superposition(icon.id,0xf000ff); //指定机械手臂图标id变紫色 } } //移出设备图标 var outIot = function(){ MMSDT.superposition(); //移出机械手臂图标颜色恢复 } MMSDT.mouseMoveEvent( onMove, outMove, onIot, outIot ); } //自定义对外函数接口------------------------------------------------------------------------ //货架变色选择 MMAPI.display = function(num){ MMSDT.superposition(); //颜色恢复 switch(num) { case 0: //颜色恢复 break; case 1: //1号货架 MMSDT.superposition("huojia1",0xf000ff, true); break; case 2: //2号货架 MMSDT.superposition("huojia2",0xf000ff, true); break; case 3: //3号货架 MMSDT.superposition("huojia3",0xf000ff, true); break; case 4: //4号货架 MMSDT.superposition("huojia4",0xf000ff, true); break; } } //告警变色 var stops=[]; MMAPI.alarmStart = function(num){ switch(num) { case 1: //1号机器臂 if( stops[0] == null ){ //防止setInterval重复执行 stops[0] = setInterval(function(){ MMSDT.superposition( ['dmxx328','RBT01'],0xff0000); //变红色 setTimeout(function(){ MMSDT.resSuperposition( ['dmxx328','RBT01'] ); //交替恢复 },500) },1000) } break; case 2: //2号机器臂 if( stops[1] == null ){ stops[1] = setInterval(function(){ MMSDT.superposition( ['dmxx362','RBT02'],0xff0000); //变红色 setTimeout(function(){ MMSDT.resSuperposition( ['dmxx362','RBT02'] ); //交替恢复 },500) },1000) } break; case 3: //3号机器臂 if( stops[2] == null ){ stops[2] = setInterval(function(){ MMSDT.superposition( ['dmxx388','RBT03'],0xff0000); //变红色 setTimeout(function(){ MMSDT.resSuperposition( ['dmxx388','RBT03'] ); //交替恢复 },500) },1000) } break; } } //告警恢复 MMAPI.alarmStop = function(num){ switch(num) { case 1: //1号机器臂 clearInterval(stops[0]); //停止交替变色 stops[0] = null; break; case 2: //2号机器臂 clearInterval(stops[1]); //停止交替变色 stops[1] = null; break; case 3: //3号机器臂 clearInterval(stops[2]); //停止交替变色 stops[2] = null; break; } }

点击查看示例演示 →