के बीच कुशल टकराव का पता लगाने के लिए सर्वश्रेष्ठ एल्गोरिदम मैं उलझन में हूं। अच्छी तरह से उलझन में नहीं, 6 परीक्षण कार्यक्रम नहीं करना चाहते हैं यह देखने के लिए कि कौन सा एल्गोरिदम सबसे अच्छा है। तो मैंने सोचा कि मैं अपने विशेषज्ञ मित्रों से यहां अपने अनुभव का लाभ देने के लिए यहां पूछूंगा।ऑब्जेक्ट्स
परिदृश्य एक 3 डी दृश्य है जिसमें संभावित रूप से काफी बड़े क्षेत्र हैं, इसके अंदर वस्तुओं के आकार की तुलना में। दृश्य में संभावित रूप से हजारों वस्तुएं हैं। ऑब्जेक्ट्स एक इकाई के दसवें से लेकर लगभग 10 इकाइयों तक आकार में भिन्न होते हैं, लेकिन कोई बड़ा (या छोटा) नहीं होता है। वस्तुओं को एक साथ क्लस्टर किया जाता है, लेकिन वे क्लस्टर संभावित रूप से दृश्य में कहीं भी दिखाई दे सकते हैं। सभी वस्तुओं गतिशील और चलती हैं। क्लस्टर एक साथ स्थानांतरित होते हैं, लेकिन जब वे अपनी गति करते हैं तो वे हर समय समान नहीं हो सकते हैं। विचार करने के लिए स्थैतिक ज्यामिति भी है। यद्यपि बड़ी संख्या में गतिशील वस्तुएं हैं, दृश्य में कुछ स्थैतिक वस्तुएं भी हैं (स्थैतिक वस्तुएं गतिशील वस्तुओं की तुलना में परिमाण के एक या दो आदेश होते हैं)।
अब, मैं जो चाहता हूं वह दृश्य में सभी वस्तुओं के लिए टकराव का प्रदर्शन करने के लिए एक स्थानिक डेटा संरचना है। यह बहुत अच्छा होगा अगर एल्गोरिदम ने प्रतिपादन पाइपलाइन के लिए भी दृश्यता क्वेरी का समर्थन किया हो। सादगी के लिए, मान लीजिए कि टकराव का पता व्यापक चरण है (यानी सभी गतिशील वस्तुएं केवल सही क्षेत्र हैं)।
(1) Octree (2) ढीला Octree (3) रैखिक Octree (+ ढीला) (4) केडी ट्री (5) बसपा:
तो, मेरे अनुसंधान के क्षेत्र में मैं किसी एक का उपयोग कर सकते हैं वृक्ष (6) हैशिंग
अब तक (6) एकमात्र ऐसा है जिसे मैंने आजमाया है। यह वास्तव में गति के मामले में पूरी तरह से शानदार है (8192 आइटम टक्कर मेरे सिस्टम पर 1 एमएमएस के तहत चेक किया गया है) यदि दृश्य में ऑब्जेक्ट औसतन समान रूप से फैल गए हैं। यह इतना अच्छा एल्गोरिदम नहीं है यदि सभी वस्तुओं को एक छोटे से क्षेत्र में जोड़ दिया जाता है, जो मुझे लगता है कि संभव है।
क्या किसी के पास कुछ अंतर्दृष्टि है कि किस चीज का उपयोग करना है, या किसी भी चाल को मैं चीजों को गति देने के लिए नियोजित कर सकता हूं? मैं सोच रहा हूं कि जो कुछ भी होता है मैं स्थिर ज्यामिति के लिए एक अलग बीएसपी पेड़ का उपयोग कर सकता हूं। मुझे लगता है कि गतिशील "गोलाकार" मुझे सबसे ज्यादा चिंता करते हैं। नोट: कोई CUDA नहीं, यह केवल सीपीयू है: पी।
धन्यवाद
संपादित करें: ठीक है, फ्लोरिस करने के लिए धन्यवाद, मैं AABB पेड़ के बारे में अधिक जानकारी नहीं मिली। GameDev पर यहां एक पुरानी चर्चा है: http://www.gamedev.net/topic/308665-aabb-tree---wheres-the-poly-o_o/। एक अच्छा समझौता की तरह लग रहा है।
अंतिम संपादन: पहिया को फिर से शुरू करने का फैसला नहीं किया गया। यह संभव है कि बुलेट भौतिकी लाइब्रेरी मेरे लिए यह सब करेगी (इसमें एएबीबी पेड़ है, शायद यह भी बहुत अच्छी तरह अनुकूल है)।
आप शायद गतिशील दृश्यों के लिए केडी-पेड़ को छोड़ सकते हैं। स्थिर डेटा सेट पर केडी पेड़ का काम, आपको प्रत्येक बार एक ही तत्व – SingleNegationElimination
स्थानांतरित होने पर पूरे (उप) पेड़ का पुनर्निर्माण करना होगा, ऐसा लगता है कि यह गतिशील दृश्यों में उपयोग करने के लिए बहुत गहन था। – Robinson