कई छोटे त्रिभुजों से बनी वस्तुओं पर टकराव का पता कैसे लगाता है?


13

मैं समझता हूं कि किसी भी आकार को छोटे त्रिकोणों द्वारा बनाया (या अनुमानित) किया जा सकता है। कोई भी आयत 2 छोटे त्रिकोणों द्वारा बनाया जा सकता है। किसी भी सर्कल को कई पतले "पिज्जा स्लाइस" त्रिकोण द्वारा बनाया जा सकता है। यह टकराव का पता लगाने के लिए कैसे अनुवाद करता है?

मुझे समझ में आया कि कैसे वर्टिकल का उपयोग करके आयत ओवरलैप की गणना की जाए। मैं समझता हूं कि केंद्र, त्रिज्या और दूरी का उपयोग करके सर्कल ओवरलैप की गणना कैसे करें।

लेकिन, छोटे त्रिभुजों से बनी आकृतियों पर टकराव का पता कैसे लगाया जाता है? विशेष नहीं, बल्कि सामान्य अवधारणा ...।

जवाबों:


26

लेकिन, छोटे त्रिभुजों से बनी आकृतियों पर टकराव का पता कैसे लगाया जाता है?

न करने से।

एक मनमाना त्रिकोण संग्रह के खिलाफ टकराव का पता लगाना (या बुरा, मनमाना त्रिकोण के दो संग्रहों के बीच) निषेधात्मक रूप से महंगा है।

इसके बजाय, हम आम तौर पर एक पदानुक्रमित फैशन में संग्रह का पता लगाते हैं, जिसकी शुरुआत बेहद कच्चे, साधारण आकृतियों (जैसे बक्से या गोले) से होती है जो अंतर्निहित वस्तु (अनुमानित) खराब होती है।

यह हमें संभावित टकरावों के बहुमत को "घटित नहीं होने" के रूप में जल्दी से अस्वीकार करने की अनुमति देता है, जो कि सामान्य मामला है। ऐसे मामले में जहां ऐसा क्रूड चेक पास होता है, जो संभावित वास्तविक टकराव को इंगित करता है, और हम अंतर्निहित आकार के अधिक विस्तृत सन्निकटन के खिलाफ जांच करने के लिए आगे बढ़ते हैं (जैसे कि एक कई कसकर फिट कैप्सूल आकार से बना, या कई संरेखित बाउंडिंग बॉक्स)।

अनिवार्य रूप से, टकराव का पता क्रूड परीक्षणों से शुरू होता है और, जैसे ही वे परीक्षण पास करते हैं, अधिक से अधिक विस्तृत प्रतिनिधित्व करना जारी रखता है। अलेक्जेंडर के जवाब में एक टिप्पणी में शेरो द्वारा प्रदान की गई यह छवि दर्शाती है कि कैसे एक जटिल मॉडल (एक मानव) को सरल आकृतियों की एक श्रृंखला द्वारा दर्शाया जा सकता है:

hitboxes

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


धन्यवाद। हां, अगर मैं वास्तव में एक खेल बना रहा था, तो मैं बस कुछ मौजूदा इंजन का उपयोग करूंगा। लेकिन, मैं सिर्फ उन बुनियादी विचारों को समझना चाहता हूं जो एक पूर्व-निर्मित टकराव का पता लगाने वाले इंजन में लागू किया जाता है। ऊपर दिए गए अपने आरेख में, आप यह देखने के लिए आयत गणित का उपयोग कर रहे होंगे कि क्या कुछ भी उस दर्जनों आयतों में से किसी को छू रहा है जो आदमी को बनाते हैं। क्या यह मूल विचार है?
जैकऑफअल

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

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

4

टक्कर का पता लगाने ज्यामिति (लाइन, विमानों, क्षेत्रों, बक्से, कैप्सूल, सिलेंडर जैसे आदिम) पर आधारित है।

यदि आपको त्रिभुज के बाहर बनी आकृतियों पर टकराव का पता लगाने की आवश्यकता है, उदाहरण के लिए एक भू-भाग जो समतल नहीं है, तो आपको जाल बनाने वाले सभी त्रिभुजों के विरुद्ध परीक्षण करना होगा।

यदि आप उस बिंदु पर पहुंचते हैं, तो मैं पूर्व-निर्मित टकराव का पता लगाने वाले इंजन का उपयोग करने की दृढ़ता से सलाह दूंगा, क्योंकि इस तरह का सामान बहुत जटिल, बहुत तेज होता है।


त्रिभुजों से बनी आकृतियों पर आप टकराव का पता कैसे लगाते हैं?
JackOfAll

वह पहले ही उल्लेख किया @JackOfAll कि अपने उत्तर में, यह ज्यामिति का उपयोग करना है आमतौर पर आकार i.stack.imgur.com/CAhxn.jpg
dimitris93

@JackOfAll मैंने अपना उत्तर संपादित किया; और जैसे शेरो कहते हैं, यदि आपके पास अपने वातावरण (शरीर, कुर्सियां, कारें, आदि ...) में अधिक जटिल "आइटम" हैं, तो खेल विकास में वे आम तौर पर सरल प्राइमरी से बने होते हैं जो एक साथ बंधे होते हैं। टक्करों का पता लगाने आदिम आकृतियों पर बनाया गया है, लेकिन भौतिक विज्ञान सिमुलेशन पूरे शरीर पर बनाया गया है।
Vaillancourt

4
मैं सचमुच एक खेल बनाने की कोशिश नहीं कर रहा हूं, मैं सिर्फ उन बुनियादी विचारों को समझना चाहता हूं जो एक पूर्व-निर्मित टकराव का पता लगाने वाले इंजन में लागू किया जाता है। अगर मैं वास्तव में एक खेल बना रहा था, तो मैं स्पष्ट रूप से पहिया को सुदृढ़ नहीं करूंगा, सहमत हूं।
जैकऑफऑल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.