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