2009-03-27 12 views
7

सीएडी और गेम उद्योग में प्रक्षेपण एल्गोरिदम आवश्यक है। और वे मुझे लगता है कि दो उद्योगों में अलग हैं। मेरे प्रश्न हैं:ऑक्लूजन एल्गोरिदम संग्रह

  1. दो indurstries में क्रमशः किस तरह के प्रलोभन एल्गोरिदम लागू होते हैं?
  2. और क्या अंतर है?

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


anwsers पढ़ के बाद, मैं स्पष्ट करने के लिए कि रोड़ा एल्गोरिदम यहाँ का अर्थ है "रोड़ा culling" चाहते हैं।

Google के साथ, मुझे gamasutra पर एक एल्गोरिदम मिला है। कोई अन्य अच्छा विचार या निष्कर्ष? धन्यवाद।

+0

ऐसा लगता है कि आप एक आइटम बफर का उपयोग कर रहे हैं: http: // stackoverflow।कॉम/प्रश्न/498601/क्या-सर्वोत्तम-दृष्टिकोण-से-गणना-कुशलता-पहले-छेड़छाड़-बीच-ए/570861 # 570861 यह खराब एल्गोरिदम नहीं है लेकिन दृश्य किनारों पर कुछ समस्याएं होंगी । –

उत्तर

3

यह मुझे अटक कि अधिकतर उत्तर अब तक केवल छवि आदेश रोड़ा पर चर्चा । मैं सीएडी के लिए पूरी तरह से निश्चित नहीं हूं, लेकिन गेम में प्रक्षेपण बहुत अधिक स्तर पर शुरू होता है, बीएसपी पेड़, ऑक्टेट पेड़ और/या पोर्टल प्रतिपादन को देखने के लिए दिखाई देने वाली वस्तुओं को जल्दी से निर्धारित करने के लिए प्रस्तुत करता है।

+0

+1। डायरेक्टएक्स/ओपनजीएल पहले से ही जो चीजें आप देखते हैं (जेड-बफर के माध्यम से) ड्राइंग का एक अच्छा काम करता है। यदि आप बेहतर प्रदर्शन प्राप्त करने के लिए जो सामान प्रस्तुत कर रहे हैं उसे सीमित करना चाहते हैं तो आपको इन एल्गोरिदम में से किसी एक को देखना होगा। –

+0

हां; लेकिन पिक्सेल आधारित प्रक्षेपण के अलावा, डी 3 डी और न ही ओपनजीएल दृश्य ग्राफ "जादू" करते हैं। क्लिपिंग और कूलिंग रेंडरिंग डिवाइस को ज्ञात सभी बहुभुज भेजने को उचित ठहराने के लिए पर्याप्त नहीं है, क्योंकि कुछ हद तक रैखिक रूप से क्लिपिंग स्केलिंग करते हैं। –

5

गेम 3 डी पुस्तकालयों में से एक का उपयोग कर दृश्य के पीछे गेम ऑक्लुजन किया जाता है: डायरेक्टएक्स या ओपनजीएल। विनिर्देशों में शामिल होने के लिए, Z buffer का उपयोग करके प्रक्षेपण किया जाता है। प्रत्येक बिंदु में एक जेड घटक होता है, जो बिंदु निकटवर्ती बिंदु हैं जो आगे हैं।

प्रक्षेपण एल्गोरिदम आमतौर पर एक समर्पित 3 डी ग्राफिक्स प्रसंस्करण चिप द्वारा हार्डवेयर में किया जाता है जो डायरेक्टएक्स या ओपनजीएल कार्यों को लागू करता है। डायरेक्टएक्स या ओपनजीएल का उपयोग करने वाला एक गेम प्रोग्राम 3 डी स्पेस में ऑब्जेक्ट खींच लेगा, और ओपनजीएल/डायरेक्टएक्स लाइब्रेरी में प्रक्षेपण और प्रक्षेपण को ध्यान में रखते हुए दृश्य प्रस्तुत किया जाएगा।

2

आपको जिस शब्द को खोजना चाहिए वह hidden surface removal है।

रीयलटाइम प्रतिपादन आमतौर पर छुपा सतह हटाने की एक साधारण विधि का लाभ उठाता है: बैकफ़ेस कूलिंग। प्रत्येक पॉली में "सतह सामान्य" बिंदु होता है जो सतह से एक निश्चित दूरी पर पूर्व-गणना करता है। कैमरे के संबंध में सामान्य सतह के कोण की जांच करके, आप जान लेंगे कि सतह का सामना करना पड़ रहा है, और इसलिए इसे प्रस्तुत करने की आवश्यकता नहीं है।

यहां कुछ इंटरैक्टिव flash-based demos and explanations है।

+0

यह प्रक्रिया आवश्यक है, लेकिन पर्याप्त नहीं है। किसी भी अवतल वस्तु को अभी भी सही क्रम में सतहों को प्रस्तुत करने की आवश्यकता होगी, और यदि एक वस्तु किसी दूसरे के सामने दिखाई देती है, तो सरल बैकफ़ेस कूलिंग मदद नहीं करता है। –

+0

मैंने बैकफ़ेस कोलिंग नाम दिया क्योंकि ज़ेड-बफरिंग का पहले ही उल्लेख किया गया था। अगर मैंने और लिखा है, तो मैं ज्यादातर लिंक किए गए विकिपीडिया पेज को दोहराता हूं। – spoulson

1

हार्डवेयर पिक्सेल जेड-बफरिंग अब तक की सबसे सरल तकनीक है, हालांकि उच्च-घनत्व ऑब्जेक्ट दृश्यों में आप अभी भी एक ही पिक्सेल को कई बार प्रस्तुत करने का प्रयास कर रहे हैं, जो कुछ स्थितियों में प्रदर्शन समस्या बन सकता है। - आपको निश्चित रूप से यह सुनिश्चित करने की ज़रूरत है कि आप हजारों ऑब्जेक्ट्स को मैपिंग और टेक्स्ट नहीं कर रहे हैं जो अभी दिखाई नहीं दे रहे हैं।

मैं वर्तमान में अपनी परियोजनाओं में से एक में इस मुद्दे के बारे में सोच रहा हूँ, मैंने पाया यह कुछ विचार को प्रेरित किया: http://www.cs.tau.ac.il/~dcor/Graphics/adv-slides/short-image-based-culling.pdf