【问题标题】:ThreeJS - How to add an environment map on top of loaded materials?ThreeJS - 如何在加载的材质上添加环境贴图?
【发布时间】: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


    【解决方案1】:

    是的,您不应该为 envMap 添加新材质,而是为现有(可能是单个)材质设置它。

    当你知道你的 JSON 是那种格式时,我认为使用 JSONLoader 是件好事,这也是大多数示例所做的。

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 2019-11-25
      • 2020-08-05
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2016-11-04
      相关资源
      最近更新 更多