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;
}
点击查看示例演示 →
Powered by mms3D