पारदर्शिता आर्टिफैक्ट समस्या

हैलो, मुझे तीन.जेएस के साथ एक समस्या है। मैं अपने दृश्य पर एक "बड़ा" जीएलबी मॉडल आयात करता हूं जो पारदर्शी नहीं है, लेकिन अगर मॉडल कैमरे के दृश्य पर खुद से ढका हुआ है, तो अग्रभूमि पारदर्शी हो जाती है। (जैसा कि आप चित्र में देख सकते हैं, पृष्ठभूमि पर्वत अग्रभूमि पर है)

मैंने कुछ समाधानों की कोशिश की जैसे:

  • GLB सामग्री पर गहराई से गलत करने के लिए परीक्षण
  • असत्य को क्रमबद्ध करें
  • लॉगरिदमिकडेप्थबफर का प्रयोग करें
  • पारदर्शी सामग्री को असत्य में बदलें
  • अल्फा टेस्ट को 0 से 1 में 0.1 चरणों में बदलें

लेकिन कुछ भी काम नहीं करता। अगर किसी के पास समाधान है :)

शुक्रिया !

0
betameche111 6 अप्रैल 2020, 10:28

2 जवाब

पारदर्शी वस्तुओं का प्रतिपादन ठीक से नहीं किया जा सकता है। आपको पहले किसी भी गैर-पारदर्शी वस्तुओं को प्रस्तुत करने की आवश्यकता है, और फिर पारदर्शी सतहों को पीछे से सामने की ओर प्रस्तुत करना होगा, ताकि कोई भी नया उसके पीछे जो था उसके ऊपर मिश्रण हो। ऐसे कई मामले हैं जहां ऐसा नहीं किया जा सकता है, खासकर पारदर्शी वस्तुओं को प्रस्तुत करते समय जो स्वयं को ओवरलैप कर सकते हैं।

इसे ठीक करने में समस्याग्रस्त वस्तुओं (यहां तक ​​​​कि एकल त्रिकोण) को छोटे टुकड़ों में काटना शामिल होगा ताकि ऑर्डरिंग को संरक्षित किया जा सके, और यह अक्सर लगभग असंभव होता है। चूँकि आप Three.js के साथ काम कर रहे हैं, देखें कि क्या आप अपना डिज़ाइन बदल सकते हैं ताकि यह कोई समस्या न हो, या गलत रेंडरिंग ऑर्डर की कलाकृतियाँ बहुत अधिक ध्यान देने योग्य न हों।

0
L. Kärkkäinen 6 अप्रैल 2020, 10:33
उक्त सीमाएँ केवल WebGL या Three.js पर ही नहीं, बल्कि सभी सामान्य 3D रेंडरिंग पर लागू होती हैं। आप रेट्रैसर का उपयोग करके पूरी तरह से उनसे बच सकते हैं, लेकिन यह बहुत धीमा है और इसके लिए पूरी तरह से अलग कार्यान्वयन की आवश्यकता है।
 – 
L. Kärkkäinen
6 अप्रैल 2020, 10:36
आपकी विशेष समस्या में, क्या आप भूभाग को बिना पारदर्शिता के और फिर पानी को पारदर्शिता के साथ प्रस्तुत कर सकते हैं, दोनों गहराई परीक्षण सक्षम हैं? मुझे बिल्कुल याद नहीं है कि कैसे Three.js इसे संभालता है लेकिन सिद्धांत रूप में यह पहले गैर-पारदर्शी वस्तुओं को प्रस्तुत करने में सक्षम होना चाहिए।
 – 
L. Kärkkäinen
6 अप्रैल 2020, 10:49
आपके त्वरित जवाब के लिए धन्यवाद। लेकिन मेरी स्थिति में इलाका बिल्कुल भी पारदर्शी नहीं है ... और मुझे लगता है कि समस्या पानी से नहीं आती है क्योंकि अगर मैं पानी निकालता हूं तो समस्या बनी रहती है :( मैं पानी पर गहराई परीक्षण सक्षम करने की कोशिश करूंगा।
 – 
betameche111
6 अप्रैल 2020, 10:53
क्या आप ग्लोब मॉडल साझा कर सकते हैं?
 – 
Amritesh Anand
6 अप्रैल 2020, 12:00
आप मेरी ग्लोब फ़ाइल यहाँ से डाउनलोड कर सकते हैं: 1fichier.com/?z6hwqimlej12yw3uzaxv
 – 
betameche111
6 अप्रैल 2020, 14:14

donmccurdy को धन्यवाद जिन्होंने मेरे समाधान को तीन.जेएस मंच पर ढूंढ लिया है।

अंत में मेरी ग्लब फ़ाइल पारदर्शी थी :( तो दो समाधान हैं।

समाधान 1:

पता लगाएं कि मॉडल कैसे पारदर्शी है और इसे ठीक करें।

समाधान 2:

इसे वापस अपारदर्शी में बदलना, और डिफ़ॉल्ट डेप्थराइट मान को पुनर्स्थापित करना।

mesh = content.getObjectByName('mesh_0');
mesh.material.transparent = false;
mesh.material.depthWrite = true;
0
betameche111 8 अप्रैल 2020, 08:33