MMSDT.createGrids()
创建模型线框风格,用于科技感水晶模式、或线框网格模式。
该方法包括透明渐变动效,生长或缩进(反生长)动效。该线框占用硬件性能开销大,尽量在小范围内使用。
Tips:因模型线框是独立于原模型并新创建的,所以创建线框需在模型加载完成之后执行,之后并不受原模型的任何影响。
Tips:不支持创建动画线框。
构造函数
MMSDT.createGrids( mesh:array, parameters:object )
mesh - 数组,初始化创建包含子网格名称的字符串, 如为['']则包含整个场景的模型元素。
parameters - json参数,设置颜色及透明度。
属性
.add( array, time, grow )
显示指定名称的子网格
array - 数组,包含子网格名称的字符串。如为['']则包含整个场景的模型元素。
time - 数字,透明渐变的持续时间,毫秒
grow - 是否展现生长动画,true有生长动画,false无生长动画
.remove(time, grow)
移除线框网格
time - 数字,透明渐变的持续时间,毫秒
grow - 是否展现缩进(反向生长)动画,true有缩进动画,false无缩进动画
.add2( arrayIndex, time, grow )
显示指定下标模型的线框网格(Tips:注意和add的区别)
arrayIndex - 数字,显示指定下标模型的线框网格。
time - 数字,透明渐变的持续时间,毫秒
grow - 是否展现生长动画,true有生长动画,false无生长动画
.remove2( arrayIndex, time, grow)
移除指定下标模型的线框网格(Tips:注意和remove的区别)
arrayIndex - 数字,移除指定下标模型的线框网格。
time - 数字,透明渐变的持续时间,毫秒
grow - 是否展现缩进(反向生长)动画,true有缩进动画,false无缩进动画
代码示例
var MMS3D_exceptionMesh = []; //需要材质拆分的网格
var MMS3D_instancingMesh = ["shu"]; //合并实例化网格
//初始化场景
MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh );
//设置第3人称鼠标控制器
controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制
controls3.maxDistance = 1000; //最远距离限制
controls3.enablePan = false; //是否开启鼠标右键屏幕空间平移
controls3.enableDamping = true; //是否开启惯性阻尼
controls3.dampingFactor = 0.1; //惯性阻尼系数
//使用json文件让场景还原
MMSDT.onloadScene( "models/mms3D_fdc3.json", function(progress){
if( progress == 'done' ){
//加载完成
onloadDone();
}else if( progress == 'ok' ){
//渲染完成
}else{
//显示进度条数字
document.getElementById("loadNum").innerHTML = Math.round( progress )+'%';
}
});
//线框网格的颜色和透明度
var techStyle = {
color: 0x0041ac, //设置颜色
opacity: 0.03, //设置透明度
bloom: true, //线框是否发光
}
var gridStyle;
//场景加载完成
function onloadDone(){
//加载完成,播放风机动画
for( var i=0; i<actions[0].length; i++ ){
actions[0][i].play();
}
//依据现有网格创建新的线框网格,需在模型加载完成之后进行
gridStyle = new MMSDT.createGrids( [''], techStyle );
}
//自定义对外函数接口------------------------------------------------------------------------
//显示方式
MMAPI.objStyle = function(num){
switch(num) {
case 0: //恢复实景
gridStyle.remove2( 0, 1000, false );
gridStyle.remove2( 1, 1000, false );
MMAPI.modelVisible(0, true);
MMAPI.modelVisible(1, true);
break;
case 1: //全部线框
gridStyle.add2( 0, 2000, true );
gridStyle.add2( 1, 2000, true );
MMAPI.modelVisible(0, false);
MMAPI.modelVisible(1, false);
break;
case 2: //线框树木
gridStyle.remove2( 0, 1000, false );
gridStyle.add2( 1, 1000, false );
MMAPI.modelVisible(0, true);
MMAPI.modelVisible(1, false);
break;
case 3: //线框风机
gridStyle.remove( 0, false );
MMAPI.modelVisible(0, false);
MMAPI.modelVisible(1, false);
setTimeout(function(){
gridStyle.add( ['feiji'], 1000, false );
},100)
break;
case 4: //风机和道路线框
gridStyle.remove( 0, false );
MMAPI.modelVisible(0, false);
MMAPI.modelVisible(1, false);
setTimeout(function(){
gridStyle.add( ['feiji','ffhhh04','ddds03'], 1000, false );
},100)
break;
}
}