2010-11-21 20 views
6

में तेज़ और आसान दृश्य-स्वतंत्र छायाएं w/o शेडर्स कैसे बनाएं, मेरे पास कमरे के केंद्र में कुछ जाल (पूर्व क्षेत्र के लिए) है, जो cubes और एक प्रकाश स्रोत से भरा है। मैं को "मानक" (निश्चित) फ़ंक्शंस का उपयोग करके ओपनजीएल में छाया-कास्टिंग को तेज़ और आसान कैसे बना सकता हूं? नोट: परिणाम में घन और गोलाकार छाया भी होनी चाहिए।ओपनजीएल

+1

बीटीडब्ल्यू- "मानक कार्य" वास्तव में वह अभिव्यक्ति नहीं है जिसे आप ढूंढ रहे हैं। "फिक्स्ड फ़ंक्शन" उतना ही अधिक है, लेकिन शेडर्स अब कुछ वर्षों से "मानक" हैं। – Kos

+0

हां, मैं सोच रहा था कि मेरे प्रश्न को लिखते समय इसे कैसे कॉल करें। यह अभी तय है, धन्यवाद! =) – shybovycha

उत्तर

4

यदि आप क्षेत्र के सिल्हूट उत्पन्न कर सकते हैं तो आप shadow volumes का उपयोग कर सकते हैं। एनवीडिया हार्डवेयर ने मेले के लिए फिक्स्ड फ़ंक्शन shadow mapping का भी समर्थन किया है।

छाया खंडों में बहुत अधिक भरने की दर आवश्यकताओं का नुकसान होता है। छाया मानचित्र बेहतर हो सकते हैं लेकिन अतिरिक्त पास की आवश्यकता होती है।

यदि आप एक विमान पर प्रक्षेपण कर रहे हैं तो यह project the object on to a plane पर आसान हो सकता है।

+0

बिंदु सार्वभौमिक एल्गोरिदम का उपयोग करना है - केवल क्षेत्र सिल्हूट के लिए नहीं =) लेकिन वैसे भी धन्यवाद! =) – shybovycha

+0

क्षमा करें, कुछ हद तक दूसरे लिंक पर क्लिक नहीं किया है ... हाँ, आप सही थे, छाया मैपिंग अच्छा विचार है और मैंने इसे स्वयं से खोज लिया है (बेवकूफ मुझे) =) – shybovycha

+0

@shybovycha: बस इतना पता है। ऊपर सूचीबद्ध तकनीकों में से कोई भी केवल गोलाकारों के लिए नहीं है;) – Goz

2

कोई तेज़ और आसान तरीका नहीं है। कई अलग-अलग तकनीकें हैं, जिनमें से प्रत्येक के पास अपने स्वयं के पेशेवर और विपक्ष हैं। आप जिथब पर होस्ट की गई एक प्रोजेक्ट को देख सकते हैं, जो छाया वॉल्यूम तकनीक (http://iuiz.github.com/VolumeShadow/) का उपयोग करके छाया बनाने के लिए बहुत ही सरल कोड का उपयोग करता है। हालांकि यह जावा में लिखा गया है, लेकिन इसे किसी भी अन्य भाषा में बंद करना मुश्किल नहीं होना चाहिए।

छाया बनाने के लिए सबसे महत्वपूर्ण तरीके तथाकथित "छाया मैपिंग" विधि हैं, जहां आप एक दृश्य में अपने दृश्य (प्रकाश स्रोत पर कैमरे के साथ, प्रत्येक छाया कास्टिंग ऑब्जेक्ट को निर्देशित) प्रस्तुत करते हैं। और दूसरी तकनीक छाया voulume विधि है (Doom3 के साथ प्रसिद्ध)।

+0

धन्यवाद, लेकिन मुझे पहले ही विचार मिल गया है =) प्रोजेक्टिव छायाएं पर्याप्त हो =) – shybovycha

1

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

हालांकि इस विधि को बनावट as shown here का उपयोग करके थोड़ा सा बदला जा सकता है।

सभी को धन्यवाद! =)