【发布时间】:2015-08-13 01:51:57
【问题描述】:
您好,我是 ThreeJS 的新手,我正在尝试在使用 JSON 加载器加载的材料之上添加环境贴图……这就是我想要做的:
var gun = null;
var loader = new THREE.JSONLoader();
loader.load("obj/nissan/nissan-gt-r-nismo.json", function(geometry, materials){
var mat = new THREE.MeshPhongMaterial({
color: 0xffffff,
envMap: cubeMap,
shininess: 2.0
});
materials.push(mat);
var matface = new THREE.MeshFaceMaterial(materials);
gun = new THREE.Mesh(geometry, matface);
gun.scale.set(0.5,0.5, 0.5);
scene.add(gun);
} );
但是,环境映射似乎被 JSONloader 加载的材料覆盖,(当我删除加载的材料时,环境映射工作)
顺便说一句,使用 JSONLoader 还是 ObjectLoader 更好?
更新:我通过遍历材料列表和设置 ENVMAP 解决了这个问题。
for(var i = 0; i < materials.length; i++){
materials[i].envMap = cubeMap;
if(materials[i].name =="body-paint"){
materials[i].reflectivity = 0.2;
}
}
这是最好的方法吗?
【问题讨论】:
标签: javascript three.js