簡體   English   中英

ThreeJS-如何在加載的材料之上添加環境圖?

[英]ThreeJS - How to add an environment map on top of loaded materials?

嗨,我是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更好嗎?

更新:我通過遍歷材料列表並設置環境圖來解決此問題。

    for(var i = 0; i < materials.length; i++){
        materials[i].envMap = cubeMap;

        if(materials[i].name =="body-paint"){
            materials[i].reflectivity = 0.2;
        }
    }

這是最好的方法嗎?

是的,您不應為envMap添加新材質,而應為現有(可能是單個)材質設置它。

當您知道JSON是該格式時,我認為使用JSONLoader很好,這也是大多數示例所做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM