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 );
}