2012-06-17 32 views
10

मैंने सफलतापूर्वक मार्चिंग क्यूब एल्गोरिदम लागू किया है। मैंने संदर्भ के रूप में मानक सामग्री का उपयोग किया, लेकिन मैं इसे पूरी तरह से खरोंच से फिर से लिखता हूं। यह काम करता है, लेकिन मैं उन अस्पष्टताओं को देख रहा हूं जो जाल में छेद लेते हैं।मार्चिंग क्यूब अस्पष्टता बनाम मार्चिंग टेट्राहेड्रॉन

मैं मार्चिंग टेट्राहेड्रॉन एल्गोरिदम पर विचार कर रहा था, जो माना जाता है कि अस्पष्टता से पीड़ित नहीं है। मैं यह देखने में असफल रहा कि यह कैसे संभव है।

मार्चिंग टेट्राहेड्रॉन एल्गोरिदम प्रत्येक टेट्रैड्रॉन के लिए त्रिभुज के साथ घन के स्थान पर छः टेट्राहेड्रॉन का उपयोग करता है। लेकिन, मान लीजिए कि मैं मार्चिंग क्यूब्स एल्गोरिदम लागू करना था, लेकिन 256 त्रिकोणों में से प्रत्येक के लिए, बस क्यूब के टेट्राहेड्रॉन के त्रिभुज के "योग" (संघ) का चयन करें? जहां तक ​​मुझे पता है, यह मार्चिंग टेट्राहेड्रॉन करता है - तो यह जादुई रूप से अस्पष्टताओं को क्यों ठीक करता है?

16 अद्वितीय मामले हैं, मुझे लगता है, और 240 अन्य लोग केवल 16 के प्रतिबिंब/घूर्णन हैं। मुझे कुछ पेपर में पढ़ना याद है कि अस्पष्टताओं को हल करने के लिए आपको 33 मामलों की आवश्यकता है। क्या यह संबंधित हो सकता है कि टेट्राहेडॉन मार्चिंग क्यों किसी भी तरह से समस्याओं से ग्रस्त नहीं है?

तो, सवाल:

  1. क्यों tetrahedrons अग्रसर करता है अस्पष्टता से ग्रस्त नहीं?
  2. यदि ऐसा नहीं होता है, तो लोग क्यों नहीं चलते क्यूब्स एल्गोरिदम का उपयोग करते हैं, लेकिन इसके बजाय टेट्राहेड्रॉन के त्रिकोण के साथ?

मुझे लगता है कि मुझे यहां कुछ याद आ रही है। धन्यवाद।

उत्तर

5

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

जवाब में अपने सवालों के:

  1. मार्चिंग क्यूब्स एल्गोरिथ्म में अस्पष्टता को हल करने के जहाँ तक मैं बता सकता हूँ, एक सेल में अधिक ध्यान से समारोह का मूल्यांकन करता है। टेट्राहेड्रॉन एल्गोरिदम में, एक स्पष्ट रूप से सेल के केंद्र का नमूना देता है और पर पॉलीगोनिज़ करता है। मुझे संदेह है कि क्योंकि टेट्राहेड्रल जाल में विशेष रूप से इस कशेरुक को शामिल किया जाता है, अस्पष्टताएं पूरी तरह से संभाली जाती हैं। पक्ष के अन्य अतिरिक्त शिखरों के साथ शायद इसके साथ कुछ करने के लिए भी कुछ है। एक महत्वपूर्ण बिंदु के रूप में, जब आप इसे परिष्कृत करने के लिए जाते हैं तो फ़ंक्शन वास्तव में अधिक स्थानों पर नमूना लगाया जा रहा है।
  2. मुझे यकीन है कि वे करते हैं। मेरा मार्चिंग टेट्राहेड्रॉन एल्गोरिदम बस यही करता है, और मुझे लगता है कि, आंतरिक रूप से, यह क्लासिक मार्चिंग टेट्राहेड्रॉन एल्गोरिदम के समान ही काम कर रहा है। मेरे कार्यान्वयन में, टेट्राहेड्रॉन के त्रिभुज सभी संभावित घन के लिए सूचीबद्ध होते हैं, जो मुझे संदेह है कि प्रत्येक व्यक्ति के प्रत्येक टेट्रैड्रॉन के लिए एक या दो त्रिकोणों को समझने से यह तेज़ हो जाता है।

अगर मैं समय और ध्यान अवधि (न तो जिनमें से मुझे क्या करना) किया था, यह प्रत्येक घन के अंदर remesh करने के लिए कम त्रिकोण अधिकतम है, जो मुझे लगता है कि यह चोट नहीं होगा उपयोग करने के लिए फायदेमंद हो सकता है।

+0

कूल। यह सुनकर अच्छा लगा कि आपको चीजों को लागू किया गया है। वहाँ चम्मच मार्च के कुछ प्रकार हैं जो स्थलीय रूप से सही मॉडल उत्पन्न करने वाले हैं। इस विषय पर एक ऐसा पेपर "ट्यूरिजिकल गारंटी के साथ मार्चिंग क्यूब्स मामलों के ई एफएफआई सीमेंट कार्यान्वयन" है। दूसरा एक है "मार्चिंग क्यूब्स के निहित असंबद्धता के लिए एक संशोधित लुकअप टेबल "।किसी भी मामले में, आप सही हैं - संभावित रूप से संदिग्ध मामलों में, वे एक स्थलीय रूप से सही मॉडल बनाने के लिए चीजों की जांच करते हैं। –

1

निम्नलिखित 2 डी उदाहरण (जो अस्पष्टता का परिचय) लें:

अगर हम दो त्रिकोण में इस वर्ग को विभाजित है, हम विकर्ण में अलग अलग परिणाम प्राप्त कर सकेंगे हम विभाजित करने के लिए चुना है चौराहा। 0-0 विकर्ण के साथ, हम त्रिकोण (010,010) प्राप्त करते हैं जबकि 1-1 विकर्ण के लिए, हम त्रिकोण (101,101) प्राप्त करते हैं। जाहिर है, विभिन्न परिणामों के लिए वर्ग लीड के विभिन्न अपघटन। या तो सही है और यह 3 डी क्यूब्स के लिए समान है।

एमटी वास्तव में अस्पष्टताओं को हल नहीं करता है लेकिन यह सभी क्यूब्स के लिए एक ही अपघटन रणनीति चुनकर स्थलीय रूप से परिणाम उत्पन्न कर सकता है। जिस तरह से यह अस्पष्टताओं से पीड़ित होने से छुटकारा पाता है।

3

प्रश्न का उत्तर देने के लिए "मार्चिंग टेट्राहेड्रॉन के पास क्यों अस्पष्टताएं हैं?" यह समझना आवश्यक है कि मार्चिंग क्यूब्स में पहली जगह अस्पष्टता क्यों उत्पन्न होती है।


अस्पष्टता जब दो तिरछे विपरीत "सकारात्मक" कोने और एक घन में दो तिरछे विपरीत "नकारात्मक" कोने हैं हो सकता है। मुझे अपने दिमाग को इसके चारों ओर लपेटने में कुछ समय लगा, लेकिन अस्पष्टता के साथ समस्या यह है कि वे सैद्धांतिक रूप से आसन्न cubes के लिए isosurface पैच बनाने की अनुमति देते हैं जो एक दूसरे के साथ असंगत हैं। यह स्पष्ट हिस्सा है। दिलचस्प हिस्सा यह है कि दो अस्पष्ट कॉन्फ़िगरेशन से दो आसन्न आइसोसुरफेस पैच असंगत हैं (और केवल) उनमें से एक "ऋणात्मक" शिखर को अलग करता है, और दूसरा "सकारात्मक" वर्टिफिकेशन को अलग करता है।

यहाँ रपाएल वेंगर के महान पुस्तक "Isosurfaces ज्यामिति, टोपोलॉजी & एल्गोरिदम" से कोई प्रासंगिक उद्धरण है (अधिक तो 2 लिंक पोस्ट नहीं कर सकते, तो मैं एक single one में किताब से सभी प्रासंगिक छवियों विलय कर दिया गया है):

एक घन के तीन आयामी isosurface पैच की सीमा घन के वर्ग पहलुओं में से प्रत्येक पर एक isocontour परिभाषित करता है। यदि कुछ कॉन्फ़िगरेशन आईसोसुरफेस पैच पहलू पर नकारात्मक शीर्षकों को अलग करता है जबकि आसन्न कॉन्फ़िगरेशन के आईसोसुरफेस पैच सकारात्मक वाले, को अलग करता है तो आम पहलू पर आइसोसुरफेस किनारों को संरेखित नहीं किया जाएगा। चित्रा 2.16 में आईसोसुरफेस पैच किसी भी पहलू पर सकारात्मक शिखर को अलग नहीं करते हैं। इसके अलावा, व्युत्पन्न आइसोसफेस सतह किसी भी घूर्णन या फिर फ्लाईरेशन के पुनः फ़्लक्शन में पैच भी किसी भी पहलू पर अलग सकारात्मक शिखर नहीं है। इस प्रकार Isosurface पैच किसी भी दो आसन्न cubes में उनकी सीमाओं पर ठीक से गठबंधन कर रहे हैं। एक समान रूप से मान्य है, लेकिन संयोजक रूप से अलग है, isosurface तालिका हो सकती है जो आईसोसफेस पैच का उपयोग करके उत्पन्न होती है जो किसी भी वर्ग पहलू पर नकारात्मक शीर्षकों को अलग नहीं करती है।

इसका मतलब क्या है कि यदि सभी इस्तेमाल किया अस्पष्ट विन्यास एक ही पैटर्न (अर्थात हमेशा अलग "नकारात्मक" कोने) का पालन करें, तो यह असंभव है एक सांस्थितिकी गलत सतह का उत्पादन होता है। और यदि आप एक ही आईसोसफेस के लिए "दोनों दुनिया से" कॉन्फ़िगरेशन का उपयोग करते हैं तो समस्याएं उत्पन्न होंगी।

सतह है कि अभी भी एक ही अस्पष्टता संकल्प पद्धति का उपयोग कर this तरह अवांछित त्रुटियां हो सकती हैं निर्माण किया गया था ( लेख थॉमस Lewiner हेलीओ लोपेज, एंटोनियो विल्सन विएरा द्वारा "संस्थानिक की गारंटी देता है के साथ मार्चिंग घन 'मामलों के कुशल कार्यान्वयन" से लिया और जियोवन तवेरेस), लेकिन जैसा कि आपने कहा था, वॉटरटाइट

इसे प्राप्त करने के लिए, आपको चित्र 2.16 में दिखाए गए 22 अद्वितीय कॉन्फ़िगरेशन (मानक 14 या 15 नहीं) के आधार पर लुक-अप तालिका का उपयोग करने की आवश्यकता होगी।


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

नियमित ग्रिड क्यूब्स अस्पष्ट चोर फाई gurations है। अस्पष्ट confurations के साथ क्या हुआ? इन confururations त्रिभुज की पसंद से हल कर रहे हैं। उदाहरण के लिए, चित्रा 2.31 में, फास्ट त्रिभुज चित्रा 2.22 में 2 बी-द्वितीय से संबंधित दो घटकों के साथ एक आईसोसुरफेस पैच देता है जबकि दूसरा 2 बी-आई के अनुरूप एक घटक के साथ एक आईसोसुरफेस पैच देता है।

नोट कैसे क्यूब्स चित्रा 2.31 में दो अलग अलग तरीकों tetrahedrons में कटा हुआ कर रहे हैं। इस टुकड़े करने का विकल्प या दूसरा गुप्त सॉस है जो अस्पष्टता को हल करता है।

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

मैं अत्यधिक रपाएल वेंगर के पुस्तक "Isosurfaces ज्यामिति, टोपोलॉजी & एल्गोरिदम" के संबंधित अध्याय को पढ़ने के बेहतर इन एल्गोरिदम की प्रकृति को समझने की सलाह देते हैं, क्या समस्या है, जहां समस्याओं से आते हैं और वे कैसे हो सकता है कर रहे हैं हल किया।

जैसा कि ली ज़ियाओसेंग ने बताया था, मूल बातें मार्चिंग स्क्वायर को पहले से सावधानी से जांचकर बेहतर ढंग से समझा जा सकता है। असल में, ली ज़ियाओसेंग द्वारा पूरा जवाब डाला गया था, मैंने अभी स्पष्टीकरणों का विस्तार किया है।