2017-12-18 238 views
0

我使用three.js拉伸功能來繪製幾何體,並且我想添加2個紋理,一個用於頂部和底部,另一個用於其他邊。three.js:用於拉伸幾何體的多材質問題

根據This Post它似乎是可能的。但我無法做到這一點。

這裏是我的代碼:

//Create BaseForm (Bottom) 
    var shape = new THREE.Shape(); 
    shape.moveTo(0,0); 
    shape.lineTo(0,2); 
    shape.lineTo(0.5,1.5); 
    shape.lineTo(1,2); 
    shape.lineTo(1,0); 
    shape.lineTo(0.5,0.5); 
    shape.lineTo(0,0); 
    //Extrude XScores 
    var extrudeSettings={amount: 50, bevelEnabled: false, material: 0, extrudeMaterial: 1, steps: 10}; 
    var geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); 

    var material1 = new THREE.MeshStandardMaterial({color: 0x111111, roughness: 0.1, metalness: 0.4, side: THREE.DoubleSide}); 
    var material2 = new THREE.MeshStandardMaterial({color: 0x8dbe8d, roughness: 0.7, metalness: 0, side: THREE.DoubleSide}); 

    var materials = [ 
     material1, 
     material2]; 

    var localmesh = THREE.SceneUtils.createMultiMaterialObject(geometry,materials);  
    return localmesh; 

,但只有一個紋理適用於所有的面孔(材料2)。

注意:因爲我在擠壓小物件時遇到問題,所以我使用了耳朵。

感謝你的幫助,

+0

嘗試'var localmesh = new THREE.Mesh(geometry,materials);' – prisoner849

+0

它的工作原理。非常感謝你 – Alexglvr

回答

0

你需要做的是這樣的:

var localmesh = new THREE.Mesh(geometry, materials); 

THREE.SceneUtils.createMultiMaterial()是用於其他目的。它只是創建兩個相同幾何體的對象,但在同一個地方使用不同的材質。