LOD多细节多材质层次显示

MMSDT.treeLOD2()

       克隆大批量树木或其它,并进行LOD多细节、多材质分层次显示,用于外景成千上万大量树木植被。备注:相比MMSDT.treeLOD()增加了材质颜色的设置。

构造函数

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

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

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

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

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

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

          color: 数组对象,设置颜色及对应的百分比。

            -color: RGB颜色,设置颜色。

            -percentage: 小数,该颜色对应的百分比。注意:总数加起来应小于1

 

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

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

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

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

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

 

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

属性

       .enabled( Boolean )

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

       .light( value )

       树木亮度,数字。

       .season( jsonData )

       数组对象,重新设置颜色及对应的百分比。

代码示例

var MMS3D_exceptionMesh = []; //需要材质拆分的网格 var MMS3D_instancingMesh = []; //合并实例化网格 //初始化场景 MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh ); camera.near = 5; //相机最近距离,小于该距离则事物不可见 camera.updateProjectionMatrix(); //重新设置后更新 //设置第3人称鼠标控制器 controls3.maxPolarAngle = Math.PI*0.498; //向下,最大角度限制 controls3.maxDistance = 400; //最远距离限制 controls3.screenSpacePanning = false; //右键平移是否上下移动 controls3.enableDamping = true; //是否开启惯性阻尼 controls3.dampingFactor = 0.05; //惯性阻尼系数 //设置第1人称鼠标控制器 controls1.movementSpeed = 25; //移动速度 controls1.lookSpeed = 0.15; //旋转灵敏度 //使用json文件让场景还原 MMSDT.onloadScene( "models/treeLOD/mms3D1666320972712.json", function(progress){ if( progress == 'done' ){ //加载完成 onloadDone(); }else if( progress == 'ok' ){ //渲染完成 }else{ //显示进度条数字 document.getElementById("loadNum").innerHTML = Math.round( progress )+'%'; } }); var treeLOD; var spring = [ { color: 0x133f0f, //深绿 percentage: 0.15, //所占百分比 }, { color: 0x1c7613, //绿色 percentage: 0.5, //所占百分比 }, { color: 0x4cdb1b, //浅绿 percentage: 0.2, //所占百分比 }, { color: 0x51b300, //草绿色 percentage: 0.1, //所占百分比 }, { color: 0xff46f0, //紫色 percentage: 0.05, //所占百分比 }, ] var summer = [ { color: 0x133f0f, //深绿 percentage: 0.4, //所占百分比 }, { color: 0x1c7613, //绿色 percentage: 0.4, //所占百分比 }, { color: 0x4cdb1b, //浅绿 percentage: 0.1, //所占百分比 }, { color: 0x51b300, //草绿色 percentage: 0.1, //所占百分比 }, ] var autumn = [ { color: 0x125418, //绿色 percentage: 0.05, //所占百分比 }, { color: 0x3f7121, //浅绿 percentage: 0.05, //所占百分比 }, { color: 0x526917, //草绿色 percentage: 0.3, //所占百分比 }, { color: 0x968517, //黄色 percentage: 0.3, //所占百分比 }, { color: 0x603800, //棕色 percentage: 0.2, //所占百分比 }, { color: 0x552f12, //土红色 percentage: 0.05, //所占百分比 }, { color: 0x561d0e, //酒红色 percentage: 0.05, //所占百分比 }, ] //加载完成 function onloadDone(){ var substitution = [ { childName: "shu", level1: "models/treeLOD/1.mms", //高精度 level2: "models/treeLOD/2.mms", //中精度 level3: "models/treeLOD/3.mms", //低精度 color: spring, //颜色参数 } ] var options = { distance: [50,150,700], //LOD三个等级的距离 scale: 4.5, //缩放大小 light: 1.0, //亮度 visible: true, //默认是否显示, false默认隐藏,true或者该对象为空则默认显示 } treeLOD = new MMSDT.treeLOD2( substitution, options, function(){ console.log("LOD树木加载完成") } ); } //自定义对外函数接口------------------------------------------------------------------------ //显示隐藏 MMAPI.visible = function(Boolean){ treeLOD.enabled(Boolean); } //树木亮度 MMAPI.lightChange = function(value){ treeLOD.light(value); } //季节切换 MMAPI.springChange = function(){ treeLOD.season( spring ); } //季节切换 MMAPI.summerChange = function(){ treeLOD.season( summer ); } //季节切换 MMAPI.autumnChange = function(){ treeLOD.season( autumn ); }

点击查看示例演示 →