树木LOD多细节层次显示

MMSDT.treeLOD()

       程序克隆大批量树木,并进行LOD多细节分层次显示,用于外景成千上万大量树木植被。

构造函数

      MMSDT.treeLOD( substitution:object, option:object, callback:function )

        substitution - 数组对象,需要替代的树木模型。

          level1: 字符串,模型url,高精度。

          level2: 字符串,模型url,中精度。

          level3: 字符串,模型url,低精度。

          percentage: 浮点数,该种树木所占百分比。

 

        option - 对象,基本参数设置。

          childName: 字符串,对应的网格标记名称。

          distance: 数组,LOD3个等级的距离。

          scale: 数字,树木缩放大小,系统自动对每个植物随机旋转和随机大小。

          light: 数字,树木亮度,默认1。

          aoMap: 数字,光照深度,默认1。

          visible: 布尔值,默认是否显示。

 

        callback - 回调函数,LOD树木加载完成。

属性

       .enabled( Boolean )

       开启或关闭显示,Boolean 布尔值。

       .light( value )

       树木亮度,数字。

代码示例

var MMS3D_exceptionMesh = []; //需要材质拆分的网格 var MMS3D_instancingMesh = []; //合并实例化网格 //初始化场景 MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh ); camera.near = 5; //相机最近距离,小于该距离则事物不可见 camera.updateProjectionMatrix(); //重新设置后更新 //设置第3人称鼠标控制器 controls3.maxPolarAngle = Math.PI*0.49; //向下,最大角度限制 controls3.maxDistance = 1000; //最远距离限制 controls3.screenSpacePanning = false; //右键平移是否上下移动 controls3.enableDamping = true; //是否开启惯性阻尼 controls3.dampingFactor = 0.05; //惯性阻尼系数 //设置第1人称鼠标控制器 controls1.movementSpeed = 25; //移动速度 controls1.lookSpeed = 0.15; //旋转灵敏度 //使用json文件让场景还原 MMSDT.onloadScene( "models/treeLOD/mms3D1670579348870.json", function(progress){ if( progress == 'done' ){ //加载完成 onloadDone(); }else if( progress == 'ok' ){ //渲染完成 }else{ //显示进度条数字 document.getElementById("loadNum").innerHTML = Math.round( progress )+'%'; } }); var treeLOD; //LOD树 //加载完成 function onloadDone(){ var substitution = [ { level1: "models/treeLOD/66/a/1.mms", //高精度 level2: "models/treeLOD/66/a/2.mms", //中精度 level3: "models/treeLOD/66/a/3.mms", //低精度 percentage: 0.25, //所占百分比 },{ level1: "models/treeLOD/66/b/1.mms", //高精度 level2: "models/treeLOD/66/b/2.mms", //w中精度 level3: "models/treeLOD/66/b/3.mms", //低精度 percentage: 0.15, //所占百分比 },{ level1: "models/treeLOD/66/c/1.mms", //高精度 level2: "models/treeLOD/66/c/2.mms", //中精度 level3: "models/treeLOD/66/c/3.mms", //低精度 percentage: 0.15, //所占百分比 },{ level1: "models/treeLOD/66/d/1.mms", //高精度 level2: "models/treeLOD/66/d/2.mms", //中精度 level3: "models/treeLOD/66/d/3.mms", //低精度 percentage: 0.15, //所占百分比 },{ level1: "models/treeLOD/66/e/1.mms", //高精度 level2: "models/treeLOD/66/e/2.mms", //中精度 level3: "models/treeLOD/66/e/3.mms", //低精度 percentage: 0.15, //所占百分比 },{ level1: "models/treeLOD/66/f/1.mms", //高精度 level2: "models/treeLOD/66/f/2.mms", //中精度 level3: "models/treeLOD/66/f/3.mms", //低精度 percentage: 0.15, //所占百分比 } ] var options = { childName: "shu", //标注点网格名称 distance: [100,200,700], //LOD三个等级的距离 scale: 4.5, //缩放大小 light: 1.0, //亮度 aoMap: 1.0, //光照深度 visible: true, //默认是否显示, false默认隐藏,true或者该对象为空则默认显示 } treeLOD = new MMSDT.treeLOD( substitution, options, function(){ console.log("LOD树木加载完成") } ); //初始化LOD树木 } //自定义对外函数接口------------------------------------------------------------------------ //显示隐藏 MMAPI.visible = function(Boolean){ treeLOD.enabled(Boolean); } //树木亮度 MMAPI.lightChange = function(value){ treeLOD.light(value); } //光照深度 MMAPI.lightMap = function(value){ treeLOD.aoMap(value); }

点击查看示例演示 →