मैं एक क्षेत्र पर प्रक्रियात्मक शोर कैसे उत्पन्न कर सकता हूं?


15

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

मुझे लगता है कि मैं क्षेत्र में शोर और "कट आउट" उत्पन्न कर सकता हूं, लेकिन यह अनावश्यक रूप से अक्षम है - और अगर शोर में कुछ ग्रिड-आधारित कलाकृतियां हैं, तो ये अभी भी गोलाकार पर समान रूप से दिखाई नहीं देंगे। इसके अलावा, कम से कम सिंप्लेक्स शोर के मामले में, 3 डी शोर से 2 डी स्लाइस काटना आमतौर पर सीधे 2 डी शोर उत्पन्न करने की तुलना में अलग दिखता है।

क्या इन मुद्दों से बचने का कोई तरीका है, उदाहरण के लिए, इस क्षेत्र पर मूल रूप से शोर पैदा करना? शोर में कम से कम पेरलिन शोर की गुणवत्ता होनी चाहिए , आदर्श रूप से सिम्प्लेक्स शोर की


शायद त्रिपलनार प्रक्षेपण, जैसा कि GPU रत्न 3 में देखा गया है ? सवाल यह है कि जब विभिन्न अनुमानों के बीच यह सम्मिश्रण हो रहा है तो शोर धुँधला या अन्यथा अवांछनीय लगेगा।
नाथन रीड

मैंने अपनी पोस्ट में एक और संभावित तरीका जोड़ा। यह अधिक विस्तृत आवश्यकताओं के साथ आपके प्रश्न को स्पष्ट करने के लायक हो सकता है। यानी 3 डी शोर का 2 डी टुकड़ा आपकी दृश्य आवश्यकताओं को संतुष्ट क्यों नहीं करता है? आपकी प्रदर्शन आवश्यकताएं क्या हैं?
जॉन कैलसबेक 15

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

आप इस shadertoy को देख सकते हैं, जो एक गोले पर शोर करता है: shadertoy.com/view/4sfGzS
एलन वोल्फ

जवाबों:


15

मैं सिर्फ 3 डी शोर के साथ जा रहा हूँ और क्षेत्र की सतह पर इसका मूल्यांकन कर रहा हूँ।

ढाल के शोर के लिए जो स्वाभाविक रूप से गोले की सतह के डोमेन में है, आपको सतह पर नमूना बिंदुओं के एक नियमित पैटर्न की आवश्यकता होती है, जिसमें प्राकृतिक कनेक्टिविटी की जानकारी होती है, प्रत्येक सेल में लगभग समान क्षेत्र के साथ, ताकि आप आसन्न मूल्यों को प्रक्षेपित या योग कर सकें। मुझे आश्चर्य है कि अगर एक फिबोनाची ग्रिड की तरह कुछ काम कर सकते हैं:

एक गोले की सतह पर फाइबोनैचि ग्रिड

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

संपादित करें: किसी और ने गणित के माध्यम से चबाया है! इस नए पेपर को गोलाकार फाइबोनैचि मैपिंग पर देखें । ऐसा लगता है कि शोर के क्षेत्र के लिए इसे अनुकूलित करना सीधा होगा।


यदि आप एक गोले का प्रतिपादन कर रहे हैं, केवल एक गोले की सतह पर शोर का मूल्यांकन नहीं कर रहे हैं, और अपने क्षेत्र को अपने शोर जाली के संकल्प के लिए ठीक करने के साथ ठीक हैं, तो आप गोले की सतह पर एक जियोडेसिक ग्रिड बना सकते हैं । आमतौर पर):

जियोडेसिक क्षेत्र

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

मुझे लगता है कि इस पद्धति का सबसे कठिन हिस्सा प्रत्येक त्रिकोण पर शोर मूल्यों को देखने के लिए आपकी त्रिकोण आईडी को तीन नमूनों में मैप करने की योजना के साथ आ रहा है।

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


2
मैंने पहले कभी फिबोनाची ग्रिड के बारे में नहीं सुना; यह बहुत मजेदार है!
नेथन रीड

वह एक आकर्षक कागज है। ऐसा लगता है कि आप एक वर्ग ग्रिड या एक हेक्सागोनल ग्रिड के पास देने के लिए मापदंडों को समायोजित कर सकते हैं, जो शोर पीढ़ी के लिए विभिन्न तरीकों की अनुमति देगा।
त्रिकोप्लक्स

मेरे पास टाइल के किनारों (किनारे से लिपटे) के निकट कुछ नहीं-बुरे परिणाम थे, लेकिन यह इस बात पर निर्भर करता है कि आप किस प्रभाव को प्राप्त करने की कोशिश कर रहे हैं और सटीक शोर पैरामीटर। कुछ हद तक धुंधले शोर के लिए महान काम करता है, स्पाइक / ठीक-दाने वाले के साथ इतना अच्छा नहीं है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.