Iot动态设备控制

MMSDT.addModel()

       加载IoT动态设备模型,在原函数的基础上优化新增了动画的控制。

构造函数

      MMSDT.addModel( data: dataJson, parameters: object, callBack: function )

       data - 载入的.json文件数据内容。备注:该文件在paas.mms3d.cn编辑器中编辑。

       parameters - json格式,参数设置。

           dirUrl: 'models/equip/', //String(安装目录)

           scale: 2.5, //Number(设备模型大小缩放,在已编辑的大中小基础上)

           height: 0, //相对高度

           visible: false, //Boolean(默认是否显示,true显示,false隐藏)

       callBack - function回调函数,所有IoT设备加载完成。

属性

       .animate( array, Boolean )

       array - 包含id号字符串的数组。

       Boolean - true动画开启,false动画停止。

       .speed( array, value )

       array - 包含id号字符串的数组。

       value - 数字,动画速度,默认为1,负数为动画倒放。

       .rotation( array, value, time )

       array - 包含id号字符串的数组。

       value - 数组,xyz旋转弧度坐标,默认为[0,0,0]。

       time - 数字,补间动画持续时间,毫秒。为0或者为空则无补间动画。

       .repetitions( array, integer )

       array - 包含id号字符串的数组。

       integer - 整数,播放次数,Infinity无限次。

代码示例

var MMS3D_exceptionMesh = []; //需要材质拆分的网格 var MMS3D_instancingMesh = []; //合并实例化网格 //初始化场景 MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh ); //设置第3人称鼠标控制器 controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制 controls3.maxDistance = 500; //最远距离限制 controls3.screenSpacePanning = false; //右键平移是否上下移动 controls3.enableDamping = true; //是否开启惯性阻尼 controls3.dampingFactor = 0.1; //惯性阻尼系数 controls3.autoRotateSpeed = 2; //自动旋转速度 //使用json文件让场景还原 MMSDT.onloadScene( "models/treeLOD/mms3D1666320972712.json", function(progress){ if( progress == 'done' ){ }else if( progress == 'ok' ){ //渲染完成 onloadDone(); }else{ //显示进度条数字 document.getElementById("loadNum").innerHTML = Math.round( progress )+'%'; } }); var iotModel; //IoT动态模型 //场景加载完成 function onloadDone(){ //场景树木设置颜色 var spring = [ { color: 0x002b04, //深绿 percentage: 0.35, //所占百分比 }, { color: 0x003505, //绿色 percentage: 0.4, //所占百分比 }, { color: 0x1d4211, //浅绿 percentage: 0.2, //所占百分比 }, { color: 0x36470a, //草绿色 percentage: 0.05, //所占百分比 }, ] //设置场景树木模型 var substitution = [ { childName: "shu", level1: "models/treeLOD/1.mms", //高精度 level2: "models/treeLOD/2.mms", //中精度 level3: "models/treeLOD/3.mms", //低精度 color: spring, //颜色参数 } ] //设置树木参数 var options = { distance: [50,150,1000], //LOD三个等级的距离 scale: 4.0, //缩放大小 light: 3.0, //亮度 } //初始化树木 var treeLOD = new MMSDT.treeLOD2( substitution, options ); //读取json设备信息并加载 MMSDT.getJson( "models/equip_fdc1.json", function(dataJson){ var options1 = { dirUrl: 'models/equip/', //String(安装目录) scale: 1.0, //Number(设备模型大小缩放,在已编辑的大中小基础上) height: 0, //相对高度 visible: true, //Boolean(默认是否显示,true显示,false隐藏) } iotModel = new MMSDT.addModel(dataJson, options1); //载入IoT设备 //添加IoT设备图标 var options2 = { dirUrl: 'models/equip/', //安装目录 scale: 1.2, //缩放比例 height: 17, //相对高度 visible: true, //默认显示 animate: true, //上下浮动 flash: false, //张弛闪动 lookAt: true, //是否垂直约束 color: 0x00ff00, //默认颜色 } new MMSDT.addIcon( dataJson, options2); }); } //自定义对外函数接口------------------------------------------------------------------------ //设备筛选 MMAPI.iotCoverage = function(num ){ switch(num) { case 0: //全部隐藏 MMSDT.coverage(); break; case 1: //全部显示 MMSDT.coverage( 'all', 'all' ); break; case 2: //筛选A区 MMSDT.coverage( ['A'], 'all'); break; case 3: //筛选B区 MMSDT.coverage( ['B'], 'all' ); break; case 4: //筛选C区 MMSDT.coverage( ['C'], 'all' ); break; case 5: //指定显示 MMSDT.coverageID( ['power001','power002','power006'], true ); break; case 6: //指定隐藏 MMSDT.coverageID( ['power001','power002','power006'], false ); break; case 7: //指定停止 iotModel.animate( ['power003','power004','power005','power006','power007'], false ); MMSDT.superposition( ['power003','power004','power005','power006','power007'], 0xff0000); //相应的图标变色提醒 break; case 8: //指定动画 iotModel.animate( ['power003','power004','power005','power006','power007'], true ); MMSDT.superposition(); //相应的图标颜色恢复 break; } } //设备动画速度 MMAPI.iotSpeed = function(value){ iotModel.speed( ['power001','power002','power008','power011','power012'], value ); } //指定设备旋转 MMAPI.iotRotate = function(value){ iotModel.rotation( ['power001','power002','power008','power011','power012'], [0,value,0], 0 ); }

点击查看示例演示 →