2012-09-24 34 views
19

Tôi có một số file .js xuất khẩu từ Blender và tải chúng với THREE.JSONLoader();Three.js - Change Material trên Runtime

callback của tôi:

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

tải của tôi:

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

của tôi phương thức tạo:

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++; 
} 

Bây giờ tôi muốn thay đổi tài liệu của mình trong thời gian chạy bằng cách sử dụng bàn phím của tôi (thay đổi màu và độ mờ đục).

Tôi có thể làm như thế nào?

Trả lời

33

Khi bạn tạo một tài liệu mới cho mỗi lưới, tôi giả sử bạn chỉ muốn thay đổi màu của một lưới và không phải tất cả trong mảng inArr và bạn có thể cần một số loại lựa chọn cho điều đó. Nhưng việc thay đổi màu sắc của vật liệu một mình là khá dễ dàng:

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 là lưới bạn muốn thay đổi. Bạn có thể tìm thấy mã khóa ở đây: http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

+1

cảm ơn rất nhiều. Nó hoạt động tốt bây giờ tôi đã thử nó với khối lập phương và hình cầu một vài ngày trước và tôi đã sử dụng: 'BA.SceneUtils.traverseHierarchy (obj, function (geo) {geo.material = new THREE.MeshLambertMaterial ({color: 0x900000});}) ; 'nhưng bây giờ tôi chỉ có thể sử dụng' obj.material = new THREE.MeshLambertMaterial (..); ' – Phipps