MMSDT.renderTargetHDR()
用实景场景渲染HDR反射图,赋予需要真实还原的高光、玻璃面。
构造函数
MMSDT.renderTargetHDR( parameters: object )
parameters - json格式,参数设置。
childName - 数组,子网格名称,每一块材质使用一个渲染图,尽量不超过20个
near - 数字,渲染图最近距离(外景时需大于每一个子网格的体积,否则会反射室内结构)
pixel - 整数,二的冥次方,渲染图的像素分辨率
height - 数字,渲染点默认为每一个子网格的中心,这里为该中心的上下高度偏移
属性
.envMap(Boolean)
实景渲染反射图、与HDR默认图之间切换
Boolean - 布尔值,false为HDR材质图,true为实景渲染图
.updata()
更新实景渲染反射(环境、或天空改变后使用)
代码示例
var MMS3D_exceptionMesh = []; //需要材质拆分的网格
var MMS3D_instancingMesh = []; //合并实例化网格
//初始化场景
MMSDT.initScene( false, MMS3D_exceptionMesh, MMS3D_instancingMesh );
//设置第3人称鼠标控制器
controls3.maxPolarAngle = Math.PI*0.495; //向下,最大角度限制
controls3.maxDistance = 700; //最远距离限制
controls3.screenSpacePanning = false; //右键平移是否上下移动
controls3.enableDamping = true; //是否开启惯性阻尼
controls3.dampingFactor = 0.1; //惯性阻尼系数
controls3.autoRotateSpeed = 2; //自动旋转速度
//使用json文件让场景还原
MMSDT.onloadScene( "models/mms3D_pl2.json", function(progress){
if( progress == 'done' ){
//加载完成
}else if( progress == 'ok' ){
//渲染完成
onloadDone();
}else{
//显示进度条数字
document.getElementById("loadNum").innerHTML = Math.round( progress )+'%';
}
});
var targetHDR;
//场景加载完成
function onloadDone(){
var options = { //参数设置
childName: ["A01_3","A02_2","A03_2","A04_2","A05_3","A05_2","C10_2","C10_3","A07_2","A07_4","E10_2",
"B01_2","B02_2","B03_2","B04_2","B05_2","B05_4","B06_2","B07_2","F10_4"], //每一块材质使用一个渲染图,尽量不超过20个
near: 40, //渲染图最近距离(外景时需大于每一个子网格的体积,否则会反射室内结构)
pixel: 1024, //渲染图的像素分辨率
height: 10, //渲染点默认为每一个子网格的中心,这里为该中心的上下高度偏移
}
//场景初始化加载完成后,执行实景渲染反射(如子网格过多,并渲染图的像素分辨率过高,会卡顿几秒)
targetHDR = new MMSDT.renderTargetHDR( options );
}
//自定义对外函数接口------------------------------------------------------------------------
//是否选用实景反射,false为HDR材质图,true为实景
MMAPI.change = function(Boolean){
targetHDR.envMap(Boolean);
}
//变换天空
MMAPI.sky = function(num){
switch(num) {
case 1: //白天
MMAPI.skyBox(1);
break;
case 2: //傍晚
MMAPI.skyBox(7);
break;
case 3: //夜晚
MMAPI.skyBox(28);
break;
}
}
//更新实景渲染反射(环境、或天空改变后使用)
MMAPI.updata = function(){
targetHDR.updata();
}
点击查看示例演示 →
Powered by mms3D