三维仿真云图

MMSDT.cloudAtlas()

       三维仿真云图,应力分布仿真。

构造函数

      MMSDT.cloudAtlas( option:object )

        option - 对象,云图参数设置。

          model: 整数,模型下标。

          position: 数组,云图中心点坐标。

          scale: 数字,云图缩放比例。

          maxOpacity: 浮点数,最大值的透明度

          minOpacity: 浮点数,最小值的透明度

          radius: 数字,影响范围(半径,按图的像素点大小计算)。

          accuracy: 数字,取样精度(边缘锯齿及像素点大小,越大越精细)。

          maxValue: 数字,最大值(例如达到该值为红色)。

          minValue: 数字,最小值。

          colorStep: 对象,0~1阈值及对应的颜色等级。

属性

       .updateColors( value )

       更新监测点数值,value 二维数组。

          数组一维: 自定义各个监测点。

          数组二维: 云图的x坐标,云图的y坐标,该坐标点的值。

       .help( Boolean )

       开启或关闭云图坐标位置参考图,Boolean 布尔值。

       .visible( Boolean )

       是否显示云图,Boolean 布尔值,true显示,false隐藏。

       .opacity( value,time )

       云图的透明度,value浮点数,0~1透明值; time渐变动画的补间时间,0为无渐变动画。

代码示例

var config = { edit: false, //是否编辑状态,true编辑状态,false监控状态 exception: [], //需要材质拆分的网格名称 instancing: ["Sc46134_2","Sc46753_2","Sc46264_2"], //合并实例化网格名称 shadowSide: true, //物体模型的背面是否产生阴影,true有阴影,false背面没有,默认false shadowUpdata: true //阴影是否自动更新,true实时自动更新,false仅在初始化的时候生成固定阴影,默认true } MMSDT.initScene( config ); //设置第3人称鼠标控制器 controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制 controls3.maxDistance = 400; //最远距离限制 controls3.screenSpacePanning = false; //右键平移是否上下移动 controls3.enableDamping = true; //是否开启惯性阻尼 controls3.dampingFactor = 0.1; //惯性阻尼系数 controls3.autoRotateSpeed = 2; //自动旋转速度 //使用json文件让场景还原 MMSDT.onloadScene( "models/mms3D_jianyu1.json", function(progress){ if( typeof progress === 'number' ){ //显示进度条数字 document.getElementById("loadNum").innerHTML = Math.round( progress )+'%'; }else if( progress == 'done' ){ //加载完成 onloadDone(); }else if( progress == 'ok' ){ //渲染完成 onloadOk(); } }); //全局变量 var cloudAtlas, feaPoints; //场景加载完成 function onloadDone(){ //设置云图参数及初始化 var config = { model: [0], //需要覆盖的模型下标 position: [0,10,0], //云图中心点坐标 scale: 350, //云图缩放比例 maxOpacity: 0.9, //最大值的透明度 minOpacity: 0, //最小值的透明度 radius: 20, //影响范围(半径,按热力图的像素点大小计算) accuracy: 1, //取样精度(边缘锯齿及像素点大小,越大越精细) maxValue: 100, //最大值(例如达到该值为红色) minValue: 0, colorStep: { //0~1阈值及对应的颜色等级 1.0: '#ff0000', 0.9: '#fff000', 0.6: '#00ff00', 0.4: '#0066ff', 0.2: '#0000ff' } } cloudAtlas = new MMSDT.cloudAtlas(config); //初始化云图 } //场景渲染完成 function onloadOk(){ cloudAtlas.visible(true); //显示云图 //更新初始数据,模拟的 feaPoints=[ [52,57,80], [46,57,80], [36,51,80], [36,57,80], [57,43,80], [71,33,80], [54,17,80], [49,10,80], [64,12,80], [10,35,80], [10,47,80], [10,59,80], ] cloudAtlas.updateColors( feaPoints ); } //自定义对外函数接口------------------------------------------------------------------------ //辅助调试 var thisDebug = false; MMAPI.helpDebug = function(){ thisDebug =! thisDebug; cloudAtlas.help(thisDebug); } //显示隐藏 var thisVisible = true; MMAPI.visible = function(){ thisVisible =! thisVisible; cloudAtlas.visible(thisVisible); } //监测点位 MMAPI.changeValue = function(num,value){ feaPoints[num][2] = value; cloudAtlas.updateColors( feaPoints ); } //调整透明度 MMAPI.opacity = function(value){ cloudAtlas.opacity(value,0); //透明度值0~1,补间动画时间毫秒 } //位置变化 var tempState = 0; MMAPI.position = function(value){ //模拟的随机位置 for( var i=0; i<feaPoints.length; i++ ){ if( value > tempState ){ feaPoints[i][0] += Math.random()*value*0.04; feaPoints[i][1] += Math.random()*value*0.04; }else{ feaPoints[i][0] -= Math.random()*value*0.04; feaPoints[i][1] -= Math.random()*value*0.04; } } cloudAtlas.updateColors( feaPoints ); tempState = value; }

点击查看示例演示 →