有没有办法使用TextureLoader.load为对象添加不同的纹理

时间:2016-10-01 22:46:42

标签: javascript three.js load loader

我想在盒子的每个面上添加不同的纹理,但我不确定loader.load是否可以这样做,现在我有:

loader.load('img/brick.jpg', function ( texture ){
    var boxGeometry = new THREE.BoxGeometry( 3, 3, 3 );
    var boxMaterial =  new THREE.MeshLambertMaterial({
        map: texture,
        overdraw: 10 
    });

    var box = new THREE.Mesh( boxGeometry, boxMaterial );
    box.castShadow = true;

    scene.add(box);
}

是否可以在loader.load中添加更多图像,或者我是否必须使用其他方法?

1 个答案:

答案 0 :(得分:0)

您只需使用loader.load加载图片,并将其存储在变量中:

var loader = new THREE.TextureLoader();

var brick = loader.load('img/brick.jpg');
var occlusion = loader.load('img/ao.jpg'); //Example texture
//More textures here

然后您可以像这样应用它:

var boxGeometry = new THREE.BoxGeometry( 3, 3, 3 );
var boxMaterial = new THREE.MeshLambertMaterial({ 
    map: brick,
    aoMap: occlusion, //An example use 
    overdraw: 10 
});
var box = new THREE.Mesh( boxGeometry, boxMaterial );
box.castShadow = true;

scene.add(box);

不是加载纹理并使用匿名回调,只需加载纹理,将其存储在变量中,然后在需要的地方应用。