क्या कोई दोहरी समोच्च व्याख्या कर सकता है?


9

मैं voxel रेंडरिंग को समझने की कोशिश कर रहा हूँ और दोहरी कंटूरिंग (DC) को देख रहा हूँ।

अब तक मैं इसे बहुत समझता हूं:

  1. ग्रिड बिंदुओं के सेट के लिए एक घनत्व फ़ंक्शन चलाएँ (यानी शोर फ़ंक्शन)
  2. यह पता लगाएं कि गर्ड में किन किनारों पर अंत-बिंदुओं के बीच परिवर्तन होते हैं
  3. इन किनारों से प्रतिच्छेदन बिंदु (यानी वैक्टर) बनाएं

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

                                                   हरमाइट डेटा द्वारा टैग किए गए किनारों के साथ एक हस्ताक्षरित ग्रिड

शोध करना यह दर्शाता है कि मानदंड एक आइसोसर्फ़स से उत्पन्न होंगे। क्या यह सोचना सही है कि मैं शोर से isosurface से मानदंडों तक जाता हूं? यदि हां, तो मैं प्रत्येक चरण को कैसे पूरा करूंगा?

मेरी समझ में, अगला कदम डीसी पेपर से निम्नलिखित होगा ;

प्रत्येक किनारे के लिए जो एक संकेत परिवर्तन प्रदर्शित करता है, किनारे वाले चार क्यूब्स के न्यूनतम वर्जन को जोड़ने वाला एक क्वाड उत्पन्न करता है।

क्या यह उद्धरण उपरोक्त छवि द्वारा दर्शाया गया है?

अंत में अगला कदम QEF को इंटरसेक्टिंग पॉइंट्स और नॉर्म्स के साथ चलाना होगा और इससे मेरा वर्टेक्स डेटा उत्पन्न होगा। क्या ये सही है?


जैसा कि मैंने इस प्रक्रिया को कुछ इस तरह समझा है ... शोर> बिंदु बादल> आईएसओ सतह> मानदंड ... लेकिन मैं यह दावा करने के लिए पर्याप्त स्मार्ट नहीं हूं कि मैं इस प्रक्रिया को ठीक से समझा सकता हूं इसलिए मैं उत्तर का प्रयास नहीं कर रहा हूं।
वार

जवाबों:


3

एक ही समय में घनत्व फ़ंक्शन के ढाल के आधार पर मानदंड उत्पन्न किए जाएंगे जो आपको किनारों और सतह के बीच चौराहे के बिंदु मिलते हैं। यदि यह गोले की तरह कुछ सरल और बंद है, तो आप मानदंडों की विश्लेषणात्मक रूप से गणना कर सकते हैं, लेकिन शोर के साथ आपको नमूने लेने की आवश्यकता होगी।

आपके पास अगले चरण गलत क्रम में हैं। सबसे पहले, आप प्रत्येक सेल के लिए एक वर्टेक्स उत्पन्न करते हैं जो एक संकेत परिवर्तन प्रदर्शित करता है। आप जिस QEF को कम कर रहे हैं, वह प्रत्येक सेल के लिए कुल दूरी है जो उस सेल के लिए प्रतिच्छेदन बिंदु / सामान्य जोड़े द्वारा परिभाषित किया गया है। फिर आप उन किनारों से गुजरते हैं जो संकेत परिवर्तनों को प्रदर्शित करते हैं और चार आसन्न कोने का उपयोग करके एक क्वाड बनाते हैं (जो कि अंतिम चरण में उत्पन्न होने की गारंटी है)।

अब, इसे लागू करने में मेरी सबसे बड़ी बाधा क्यूईएफ को हल करना था। मैं वास्तव में एक साधारण पुनरावृत्ति समाधान के साथ आया था जो समानांतर में एक उदाहरण पर (उदाहरण के लिए) अच्छी तरह से चलेगा। मूल रूप से, आप सेल के केंद्र में शीर्ष शुरू करते हैं। फिर आप प्रत्येक वेक्टर्स को वर्टेक्स से प्रत्येक प्लेन में ले जाते हैं और उस परिणाम के साथ वर्टेक्स को स्थानांतरित करते हैं, और इस चरण को एक निश्चित संख्या में दोहराते हैं। मैंने पाया कि इसे ~ 70% परिणामी होने के साथ कम से कम पुनरावृत्तियों में स्थिर किया जाएगा।


तो मैं कहता हूं कि मेरे पास एक सेल / वोक्सेल है जो मुझे पता है कि एक साइन चेंज (यानी एमसी जैसा मामला) प्रदर्शित करता है, मैंने इसकी घनत्व को खोजने के लिए सेल के प्रत्येक 8 कोनों के लिए शोर समारोह चलाया है। मुझे यह समझने में परेशानी हो रही है कि मुझे QEF के चर x , n और p कैसे मिलेंगे?
साबुन

x शीर्ष स्थिति है। प्रत्येक चौराहे बिंदु के लिए आपके पास पी (स्थिति) और एन (सामान्य) है, जो उन विमानों को बनाते हैं जिनके बारे में मैं बात कर रहा था।
jmegaffin

p को खोजने से पता चलता है कि किनारे के साथ दो घनत्वों का भारित औसत कहाँ शून्य है। तब आप पी पर अपने घनत्व समारोह की ढाल लेकर n की गणना करते हैं ।
jmegaffin

तो मूल रूप से प्रत्येक क्यूब के लिए मैं प्रत्येक 12 किनारों के लिए पी और एन की गणना करता हूं , और फिर प्रत्येक सेल किनारों के लिए क्यूईएफ को चलाने के लिए पी और एन में एक्स , जो आपके उदाहरण में एक voxel / सेल के केंद्र में है? फिर अगर चार कोशिकाएं एक ही धार साझा करती हैं, तो मैं प्रत्येक चार कोशिकाओं को जोड़ने वाला एक क्वाड बनाता हूं x ? और परिणामी क्वाड मेरा बहुभुज डेटा है?
साबुन

प्रत्येक किनारे पर एक चौराहा नहीं है, इसलिए आप आवश्यक रूप से 12 विमानों के लिए क्यूईएफ को हल नहीं कर रहे हैं। इसके अलावा आप इसे प्राप्त कर चुके हैं!
जेमगफिन

1

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

ध्यान दें कि मैं यहाँ 2 डी अर्थों में लाइनों और किनारों के बारे में बात कर रहा हूँ जैसा कि ओपी में प्रतिनिधित्व द्वारा दर्शाया गया है .. मुझे वॉल्यूमेट्रिक मेष पीढ़ी के लिए इसे 3 डी तक बढ़ाने के लिए कुछ और पढ़ना और सोचना होगा।

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

मुझे उम्मीद है कि इस उत्तर का कम से कम 1 हिस्सा इस बात के अंतर को बताता है कि कैसे वेट डेटा का प्रतिनिधित्व किया जाता है और इसका इस्तेमाल मूल मार्चिंग क्यूब्स से काफी अलग तरीके से किया जाता है, और क्यों सामान्य डेटा को वॉल्यूम जनरेशन प्रक्रिया में काफी पहले बनाया जाना है, जहां मूल मार्चिंग क्यूब्स मानदंडों के साथ आमतौर पर जाल निर्माण प्रक्रिया में एक अंतिम चरण के रूप में बनाया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.