2017-05-02 6 views
6

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

मैं उन में किरणों को शूट करना चाहता हूं और यह पता लगा सकता हूं कि कौन से ओओबीबी हिट हो जाते हैं। रे चौराहे परीक्षणों की संख्या के कारण मुझे (लाखों) करने की जरूरत है, सभी ओओबीबी के खिलाफ एक क्रूर बल दृष्टिकोण पर्याप्त नहीं होगा।

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

मैंने रैपिड लाइब्रेरी में ओबीबीटीएस के बारे में पढ़ा है, लेकिन ऐसा लगता है कि वे नीचे की ओर से बने हैं (बहुभुज सूप के साथ शुरू करें और पेड़ बनाने के लिए ओओबीबी के प्रगतिशील छोटे समूहों में उप-विभाजन), नीचे की ओर शुरू करें बहुत से ओओबीबी के साथ और उनसे एक पेड़ का निर्माण)।

क्या कोई अन्य डेटा संरचनाएं हैं जिनका उपयोग मैं अपने चौराहे परीक्षणों को तेज करने के लिए कर सकता हूं?

यहां मेरे ओओबीबी की एक तस्वीर है। जैसा कि आप देख सकते हैं, वे कसकर पैक कर रहे हैं और यदि आप कल्पना कर सकते हैं कि उनके एएबीबी कैसा दिखेंगे, तो आप देखेंगे कि वे उस बिंदु पर ओवरलैप करेंगे जहां एएबीबी आधारित पेड़ वास्तव में प्रदर्शन को बढ़ावा नहीं देगा (क्योंकि वास्तव में उनमें से सभी समूह के केंद्र के माध्यम से एक किरण शूटिंग द्वारा मारा जाएगा)।

यह ध्यान देने योग्य है कि मुझे एक किरण द्वारा मारा गया सभी ओओबीबी पूछने की ज़रूरत है, न केवल पहले/निकटतम।

OOBBs

+1

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

+0

दृश्य कितना गतिशील है? यही है, ओओबीबी बदलने तक आप कितनी किरणें डालेंगे, और वे कितनी भारी बदल जाएंगे? – Angew

+0

@programmerjake दुर्भाग्य से पहला सुझाव काम नहीं करेगा क्योंकि ओओबीबी हमेशा मेरी उदाहरण छवि में अच्छी तरह से गठबंधन नहीं किया जाएगा। दूसरा विकल्प किसी चीज़ के करीब हो सकता है, लेकिन स्मृति पदचिह्न और प्रीप्रोकैसिंग आवश्यकता एक समस्या हो सकती है ...मुझे बहुत बड़े 3 डी वातावरण में काम करने के लिए समाधान की आवश्यकता है, जहां एक 3 डी सरणी संभव नहीं होगी (उचित ग्रैन्युलरिटी बनाए रखने के दौरान सब कुछ शामिल करने के लिए अरबों कोशिकाओं की आवश्यकता होगी)। लेकिन सुझावों के लिए धन्यवाद। – Tyson

उत्तर

1

शायद सबसे अच्छा एक 3 डी अक्ष grid structure गठबंधन का प्रयोग है। ग्रिड में प्रत्येक सेल उस ओबब के सभी (एक वेक्टर, सरणी, आदि) रखता है जो उस सेल को छेड़छाड़ करता है। खाली जगह के ट्रैवर्सल को गति देने के लिए 8 खाली कोशिकाओं को एक बड़े खाली सेल में ध्वस्त किया जा सकता है। ग्रिड के आकार के लिए आपको इष्टतम आकार खोजने के लिए कुछ परीक्षण करना होगा।

उस ग्रिड को ट्रैवर्स करना मुश्किल है, आपको रे को मूल के निकटतम सेल से शुरू करना होगा, वहां सभी ऑब्जेक्ट्स का परीक्षण करें, फिर रे के साथ अगले सेल पर जाएं। सेल का ट्रैवर्स मूल रूप से एक 3 डी रूढ़िवादी रेखा रास्टरराइजिंग है, जो जटिलता में बहुत हल्का है। कि here


पर अधिक ही, यदि डेटा बहुत ओवरलैप हो रही है आप एक बड़ी ग्रिड (जहां कोशिकाओं बहुत छोटे हैं) कर सकते हैं। इस मामले में मैं आपको ग्रिड डेटा स्टोर करने के लिए पर देखने के लिए सलाह दूंगा। (z-order curve आश्चर्यजनक रूप से सरल है)

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