2012-09-24 14 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

संबंधित मुद्दे