2012-06-22 12 views
14

जब आपके पास तीन.जेएस/वेबजीएल में दो विमान हैं और उनमें से एक या दोनों पारदर्शी हैं, तो कभी-कभी विमान पीछे पारदर्शी विमान से छिपा होगा। ऐसा क्यों है?थ्री.जेएस/वेबजीएल - उनके पीछे अन्य विमानों को छिपाने वाले पारदर्शी विमान

उत्तर

10

यह एक बग नहीं है, यह ठीक है कि ओपनजीएल (और, इसलिए, वेबजीएल) कैसे काम करता है। पारदर्शी सतह जेड-बफर के साथ अच्छी तरह से नहीं खेलती है, और इस तरह मैन्युअल रूप से क्रमबद्ध और बैक-टू-फ्रंट प्रस्तुत किया जाना चाहिए। तीन जेएस आपके लिए ऐसा करने का प्रयास कर रहे हैं (यही कारण है कि जब आप एक्स मान> 0 सेट करते हैं तो समस्या दूर हो जाती है) लेकिन आप दिखाए जा रहे ज्यामिति को छेड़छाड़ करने के मामले को मजबूती से संभाल नहीं सकते हैं।

मैंने इस मुद्दे को different SO question में अधिक गहराई से समझाया है, तो आप इसका संदर्भ लेना चाहेंगे।

+1

उत्तर के लिए धन्यवाद लेकिन इसलिए आप मुझे बता रहे हैं कि बस मेरे खेल को फिर से डिजाइन करना बेहतर है या एक समाधान पीछा करने योग्य हैकिंग तीन है। जेएस? – MaiaVictor

+1

@ टोजी जो प्रश्न आप संदर्भित करते हैं वह बिल्कुल एक ही मुद्दे से निपट नहीं रहा है। दूसरे प्रश्न में यह ऑब्जेक्ट/बनावट का केवल एक हिस्सा है जो पारदर्शी है जहां इस प्रश्न में पूरा विमान पारदर्शी है और पारदर्शी विमान के लिए पूरी तरह से 'गहराई' को निष्क्रिय करके आसानी से हल किया जा सकता है। – Wilt

15

सामग्री में alphaTest: 0.5 जोड़ने का प्रयास करें।

+0

ने कोशिश की है, काम नहीं किया:/मुझे लगता है कि यह एक वेबलॉग समस्या है इसलिए मुझे फिर से डिजाइन करना होगा कि मेरा गेम विमानों को कैसे प्रदर्शित कर रहा है। हालांकि यह थोड़ा हैक किया जाएगा। – MaiaVictor

+1

मेरे पास एक विमान है जो कैनवास-आधारित बनावट है जिसमें टेक्स्ट प्रदर्शित करने के लिए मैप किया गया है। कुछ कोणों/पदों पर मुझे बनावट सामग्री की पारदर्शिता के साथ समस्याएं थीं और यह ठीक हो गया, इसलिए धन्यवाद! – plyawn

+3

नोट: 'अल्फाटेस्ट' एक ट्रेसहोल्ड है जो बनावट में अर्ध-पारदर्शी क्षेत्रों को पूरी तरह से अपारदर्शी (जब पिक्सेल अस्पष्टता> ट्रेसहोल्ड) या पूरी तरह से पारदर्शी (जब पिक्सेल अस्पष्टता Blaise

6

fwiw, यदि आपके पास बहुत सारे समानांतर विमान हैं (आपका नमूना नहीं देख सकता है, तो Google आपके डोमेन को हल नहीं कर सकता है), उन्हें लंबवत धुरी के साथ क्रमबद्ध रखना आसान है। विमानों की एक सूची के लिए [ए बी सी डी] ऑर्डर-टू-ड्रा या तो [ए बी सी डी] या [डी सी बी ए] होगा और कुछ भी नहीं! इसलिए सॉर्टिंग से प्रदर्शन हिट होने की आवश्यकता नहीं है। जैसे ही आप जाते हैं उन्हें बस रखें।

+0

समस्या यह है कि मेरे पास कुछ विमान हैं जिन्हें दूसरों को पार करना होगा। जैसे वे 3 डी फ्लैट तलवारें थे। क्या मैं पूछ सकता हूं, यह पूछे जाने के बाद आप कितने सवाल को ढूंढ गए और 4 अपवित्र यहां कैसे आए? – MaiaVictor

+0

आपके प्रश्न लोगों के व्यवहार को रोकते हैं, मैं जवाब नहीं दे सकता :) हालांकि, यदि आपके पास बहुभुज हैं जो एक-दूसरे को पार करते हैं, तो के-बफर या मूल ए-बफर एल्गोरिदम जैसे प्रति-खंडों के अलावा कोई आसान सही समाधान नहीं है, जब तक कि आप विशेष रूप से पुलिस नहीं त्रिभुज चौराहे और उन्हें फ्लाई पर tesselate। – bjorke

17

मान लें कि आप कुछ पारदर्शी * .png छवि का उपयोग कर रहे हैं। फिर इस में मदद मिलेगी:

new THREE.MeshBasicMaterial({ side:THREE.BackSide,map:texture, depthWrite: false, depthTest: false }); 
+0

किसी कारण से 'पक्ष: तीन। बैकसाइड' भाग ने मेरी छवियों को एक साथ प्रस्तुत करने से रोक दिया। लेकिन उस से अलग, बाकी महान काम किया! –

+3

आप शायद तीन का उपयोग करना चाहते हैं। डबलसाइड ताकि यह दोनों तरफ से दिखाई दे। – Blaise

+0

यह वास्तव में वास्तव में अच्छी तरह से काम करता है! – polyclick

12

false को depthWrite गुण को सेट मेरी समस्या हल हो जाती।

new THREE.MeshBasicMaterial({ 
    opacity: 0.25, 
    transparent: true, 
    side: THREE.DoubleSide, 
    depthWrite: false 
}); 
+0

आपको धन्यवाद। कोई और "पारदर्शी ब्लैक बॉक्स समस्या" नहीं! – Andy

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