MMSDT.smallPartLOD()
层级控制小体积模型的显示隐藏,远处的小体积模型自动隐藏,近处显示,以提高硬件的渲染效率。
构造函数
MMSDT.smallPartLOD( parameters: object )
models - 数组,需要层级控制的,场景中模型的数组下标。
distance - 数组,层级显隐,距离阈值(数组内可设置任意层级,按从近到远)。
volume - 数组,子网格包围体积、正射面积。小于此值的子网格模型超过距离阈值会被隐藏(数组内可设置任意层级,按从小到大)。
属性
.enabled( Boolean )
是否开启或关闭该功能。true开启,false关闭。
代码示例
var MMS3D_exceptionMesh = []; //需要材质拆分的网格
var MMS3D_instancingMesh = []; //合并实例化网格
//初始化场景
MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh );
//设置第3人称鼠标控制器
controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制
controls3.maxDistance = 1700; //最远距离限制
controls3.screenSpacePanning = false; //右键平移是否上下移动
controls3.enableDamping = true; //是否开启惯性阻尼
controls3.dampingFactor = 0.1; //惯性阻尼系数
controls3.autoRotateSpeed = 2; //自动旋转速度
//使用json文件让场景还原
MMSDT.onloadScene( "models/mms3D_cangku1.json", function(progress){
if( progress == 'done' ){
//加载完成,播放动画
for( var i=0; i<actions[0].length; i++ ){
actions[0][i].play();
actions[0][i].timeScale = 0.5;
}
}else if( progress == 'ok' ){
//渲染完成
onloadDone();
}else{
//显示进度条数字
document.getElementById("loadNum").innerHTML = Math.round( progress )+'%';
}
});
var calculate; //定义小物体层级控制全局变量
//场景加载完成
function onloadDone(){
var config = {
models:[0], //数组,需要层级控制的,场景中模型的数组下标
distance: [400,700], //层级显隐,距离阈值(数组内可设置任意层级,按从近到远)
volume: [30,100] //子网格包围体积、正射面积。小于此值的子网格模型超过距离阈值会被隐藏(数组内可设置任意层级,按从小到大)
}
calculate = new MMSDT.smallPartLOD( config ); //初始化小物体层级控制
}
//自定义对外函数接口------------------------------------------------------------------------
//开启关闭
MMAPI.switchOnOff = function(Boolean){
calculate.enabled( Boolean ); //开启或关闭该功能
}
点击查看示例演示 →
Powered by mms3D