2012-09-24 147 views
19

我有攪拌機出口一些.js文件,並與THREE.JSONLoader();three.js所 - 更改材質上運行

我的回調加載它們:

var callback = function(geometry) { createMesh(geometry); 

我裝:

loader.load("Models/sculp.js", callback); 

我製作方法:

function createMesh(geometry){ 

    inArr[id] = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({ color: 0xbbbbbb})); 
    inArr[id].scale.set(100, 100, 100); 
    scene.add(inArr[id]); 
    id++; 
} 

現在我想通過使用我的鍵盤在運行時更改我的材質(更改顏色和不透明度)。

我該怎麼做?

回答

33

當您爲每個網格創建一個新材質時,我假定您只想更改inArr數組中的一個網格的顏色,而不是全部,並且您可能需要某種選擇。但改變單獨材料的顏色是很容易的:

var onKeyDown = function(event) { 
    if (event.keyCode == 67) { // when 'c' is pressed 
    object.material.color.setHex(0xff0000); // there is also setHSV and setRGB 
    } 
}; 
document.addEventListener('keydown', onKeyDown, false); 

object是要更改的網格。關鍵代碼可以在這裏找到:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+1

非常感謝。它工作正常,現在我嘗試了與立方體和領域前幾天,我用:'THREE.SceneUtils.traverseHierarchy(obj,function(geo){geo.material = new THREE.MeshLambertMaterial({color:0x900000});}) ;'但現在我只能使用'obj.material = new THREE.MeshLambertMaterial(..);' – Phipps