2011-12-14 9 views
28

यह मेरा वस्तु है:तीन.जेएस - मैं वस्तु की अस्पष्टता को गतिशील रूप से कैसे बदल सकता हूं?

var object = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial({ map: THREE.ImageUtils.loadTexture("image.png") })); 
object.position.set(2, 3, 1.5); 
अब

के बाद मैं (init में इस वस्तु बना लिया है); समारोह, मैं सीधे वस्तु के पास जाकर अपनी स्थिति को बदलने के लिए, इस तरह कर सकते हैं:

object.position.x = 15; 

अब सवाल यह है कि मैं बनावट की अस्पष्टता बदल सकते हैं ???

धन्यवाद :-)

+0

मुझे लगता है कि अस्पष्टता सुविधा का उपयोग करते समय [इन] (https://www.udacity.com/course/viewer#!/c-cs291/l-91376562/m-103530762) को ध्यान में रखना अच्छा होता है। यह एक कोर्स से सामग्री है इसलिए आपको पिछले वीडियो देखना पड़ सकता है लेकिन वे कम हैं। –

उत्तर

46

THREE.MeshLambertMaterial फैली THREE.Material जो यह opacity संपत्ति विरासत में इसका मतलब है, तो तुम सब करने की जरूरत है अपने वस्तु पर सामग्री का उपयोग, और सामग्री की अपारदर्शिता बदलने है:

object.materials[0].opacity = 1 + Math.sin(new Date().getTime() * .0025);//or any other value you like 

यह भी ध्यान रखें कि सामग्री में transparent संपत्ति सत्य होनी चाहिए।

object.materials[0].transparent = true; 

मुझे पता है कि Three.js 'संदर्भ' के साथ समस्याएं हैं कि (आप इस ओर इशारा करते हुए के लिए ड्रयू और डोइ धन्यवाद), लेकिन आप वर्ग के लिए स्रोत फ़ाइल पर एक नज़र हो सकता है आप इसका उपयोग और सभी गुणों/विधियों का उपयोग करते हैं और यदि यह कुछ और बढ़ाता है।

+0

धन्यवाद जॉर्ज ... मुझे लगता है कि आप मेरे तीन.जेएस गुरु; -) ... मुझे अपना खुद का समाधान मिला, मुझे थोड़ी देर लग गई ... लेकिन फिर यह समझने का सबसे अच्छा तरीका है – BorisD

+14

ध्यान दें कि आपको सेट करना होगा 'material.transparent = true' साथ ही 'अस्पष्टता'। –

+0

'0.5 + 0.5 * Math.sin (नई तिथि()। GetTime() * .0025);' बेहतर हो सकता है;) – Hotted24

10
var map = THREE.ImageUtils.loadTexture(myJSONObject[i].url); 
var material = new THREE.MeshLambertMaterial({ map: map, transparent: true }); 
var object = new THREE.Mesh(geometry, material); 

material.opacity = 0.6; 
5

मुझे पता है कि यह प्रश्न बहुत पुराना है, लेकिन अगर किसी को इसकी आवश्यकता हो तो मैं इसका उत्तर देना चाहता था। तीन.जेएस के साथ, मैंने ग्रीन्सॉक के टिनमैक्स/टिविनाइट के माध्यम से ट्विनिंग का उपयोग किया। इसके साथ, मैं किसी ऑब्जेक्ट की किसी भी संपत्ति को ट्विन करने में सक्षम था और यह आसानी से भाग गया। लाइब्रेरी here देखें। मुझे गुणों के बीच की जरूरत थी:

TweenLite.to(object, duration, properties); 

जहां अवधि सेकेंड में है और गुण किसी ऑब्जेक्ट में हैं। इसके लिए "गॉचा", खासकर तीन.जेएस का उपयोग करते समय, यह सुनिश्चित करना है कि आप ऑब्जेक्ट पैरामीटर के साथ विशिष्ट हो जाएं। उदाहरण के लिए, इस सवाल का प्रति, यदि आप एक जाल की अस्पष्टता को बदल रहे हैं, तो आप

TweenLite.to(mesh, 2, {material.opacity: 0}); 

बल्कि, आप अधिक विशिष्ट हो सकता है और लिखने

TweenLite.to(mesh.material, 2, {opacity: 0}); 

मुझे आशा है कि यह किसी को मदद करता है की जरूरत नहीं कर सकते। ट्विनिंग वास्तव में कमाल है!

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