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