2011-11-27 17 views
6

मैं Three.js के लिए नया हूँ ... अब तक एक बिंदु है जहां मैं कैमरा दृश्य के साथ आकार और दृश्य & खेलने बना सकते हैं के लिए आया था।तीन.जेएस - कस्टम आकार?

अपने प्रोजेक्ट में आकार मेरे द्वारा बनाए गए क्षेत्रों हैं और मैं सामग्री .... के लिए बनावट के रूप में छवि का इस्तेमाल किया

मेरा प्रश्न एक कस्टम आकार (क्षेत्र नहीं, आयत ...) बनाने के लिए कैसे है? उदाहरण के लिए मैं आधा क्षेत्र कैसे बना सकता हूं?

अब के लिए मेरे कोड:

  // create texture 
    texture = THREE.ImageUtils.loadTexture('red.png');  

    // create a sphere shape   
    geometry = new THREE.SphereGeometry(50, 16, 16); 

    // give a shape red color 
    material = new THREE.MeshLambertMaterial({map: texture}); 

    // create an object 
    mesh = new THREE.Mesh(geometry, material); 

उत्तर

19

ज्यामिति, एक 3 डी संपादक के माध्यम से (ब्लेंडर, जैसे जो के लिए एक अच्छी three.js exporter पहले से मौजूद है), बनाने के लिए Three.js में उपयोग करने के लिए निर्यात मॉडल से भी कई तरीक़े हैं खरोंच से ज्यामिति।

एक तरह से THREE.Geometry का उदाहरण बना सकते हैं और कोने में जोड़ें, फिर से काम करते हैं उन कैसे चेहरे सूचकांकों में जोड़ने के लिए कनेक्ट करने के लिए है, लेकिन यह नहीं एक आसान तरीका यह करने के लिए। मैं मौजूदा ज्यामिति (अतिरिक्त/geometries पैकेज में पाया) THREE.CubeGeometry, THREE.CylinderGeometry, THREE.IcosahedronGeometry, THREE.OctahedronGeometry, आदि) के साथ शुरू करने की सलाह देते हैं होता

साथ ही वहाँ कुछ वास्तव में अच्छा कक्षाएं हैं कि आपको extrusions (THREE.ExtrudeGeometry) और lathes (THREE.LatheGeometry) उत्पन्न करने की अनुमति देता है। Extrusions के लिए यह example देखें।

आप आधा एक क्षेत्र बनाने का उल्लेख किया। यह LatheGeometry का उपयोग करने के लिए एक आदर्श उम्मीदवार है। आपको केवल एक अर्ध-सर्कल पथ (वेक्टर 3 उदाहरणों की एक सरणी के रूप में) बनाने की आवश्यकता है और इसे खराद तक पास करें ताकि यह आधे चक्र को 3 डी - आधा क्षेत्र में घुमाए। अपने जाल में

var pts = [];//points array - the path profile points will be stored here 
var detail = .1;//half-circle detail - how many angle increments will be used to generate points 
var radius = 200;//radius for half_sphere 
for(var angle = 0.0; angle < Math.PI ; angle+= detail)//loop from 0.0 radians to PI (0 - 180 degrees) 
    pts.push(new THREE.Vector3(Math.cos(angle) * radius,0,Math.sin(angle) * radius));//angle/radius to x,z 
geometry = new THREE.LatheGeometry(pts, 12);//create the lathe with 12 radial repetitions of the profile 

प्लग है कि ज्यामिति और बलबीर के आप चाचा: यहाँ एक उदाहरण है!

वैकल्पिक रूप से आप GeometryUtils का उपयोग कर मेष/धुरी केंद्रित कर सकता है:

THREE.GeometryUtils.center(geometry); 

मज़ा!

+0

धन्यवाद संभोग ... मैं देख सकता हूँ तुम जानते हो कि तुम क्या बारे में बात कर ... इसलिए आप इसका अंदाज़ा लगा रहा वस्तुओं खींचने योग्य बना सकते हैं क्या है? मैंने कुछ उदाहरण देखा और पाया कि इसे तीन के साथ करना है। रे ... आप इसके बारे में कुछ जानते हैं? – BorisD

+2

खुशी है कि यह मदद करता है। जब भी मैं Three.js के साथ कुछ करना चाहता हूँ मैं जाँच वहाँ एक उदाहरण है यदि पहले से ही :) [webgl_interactive_draggablecubes] (http://mrdoob.github.com/three.js/examples/webgl_interactive_draggablecubes.html) शुरू करने के लिए है। आपको माउसअप/mousedown/mousemove श्रोताओं का उपयोग करने की आवश्यकता है। विचार है कि माउस 2 डी निर्देशांक कैमरे के आधार पर 3 डी में परिवर्तित हो जाते हैं और एक रे को गहराई से अंतरिक्ष के माध्यम से 'शॉट' किया जाता है। फिर यह जांचने के लिए एक परीक्षण है कि उस किरण/रेखा (किसी भी चौराहे) पर कोई ऑब्जेक्ट है, यदि ऐसा है, तो सूची में पहली वस्तु पर सेट किया गया है (यदि कोई है) .. आदि –

+0

लंबी कहानी छोटी, अगर आप उन 3 की प्रतिलिपि बनाते हैं श्रोताओं को अपनी परियोजना में शामिल करें और शीर्ष पर चयनित और प्रक्षेपित और प्रोजेक्टर चर हैं, इसे आपकी फ़ाइल में भी काम करना चाहिए। –

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