2 डी वर्षा निर्माण (और द्रव गतिशीलता)


11

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

यह वीडियो इसे स्पष्ट रूप से प्रदर्शित करता है: http://imgur.com/gallery/CKCGKbG

मुझे पता है कि बारिश कैसे गिरती है और यह जांचना है कि यह जमीन पर कहां गिरती है, लेकिन मैं वहीं फंस जाता हूं। मेरा सवाल है: यह कैसे बनाया जा सकता था? और कैसे एक मॉडल पानी को पूरी तरह से प्रवाह कर सकता है, प्रदर्शन को मारे बिना?

अग्रिम में धन्यवाद!


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

जवाबों:


9

स्टारबाउंड की जल प्रणाली वास्तव में 2D टाइल आधारित सेलुलर ऑटोमेटा है। स्क्रीन पर प्रत्येक टाइल जिसमें सामने टाइल की परत नहीं होती है, पानी को रखने में सक्षम है। पानी की मात्रा की गणना सेलुलर ऑटोमेटा के माध्यम से की जाती है।

इस तकनीक के बारे में अधिक जानकारी यहाँ:

http://www.gamasutra.com/view/feature/134736/an_intro_to_cellular_automation.php

http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/

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

जिस तरह से वे इसे जमा करने के लिए प्राप्त करते हैं, वह यह निर्धारित करके है कि जमीन की शीर्ष परत में छेद कहां हैं। यदि कोई ऐसा क्षेत्र है जो पानी जमा कर सकता है, तो उस क्षेत्र की कोशिकाएं अपने जल स्तर को बढ़ाती हैं।

स्टारबाउंड भी पानी के दबाव से निपटता है, और उनकी प्रतिपादन तकनीक बहुत अद्भुत है। उनके पास सेलुलर ऑटोमेटा का उपयोग करके पानी सिमुलेशन भौतिकी का सबसे अच्छा 2 डी कार्यान्वयन है जो मैंने कभी देखा है।

यहां एक तरल भौतिकी इंजन का एक आदिम दृश्य है, जो उपरोक्त सेलुलर ऑटोमेटा तकनीक का उपयोग करता है। रेंडरिंग भाग थोड़ा अधिक जटिल हो जाता है, क्योंकि आपके पानी को एक संख्यात्मक मूल्य द्वारा दर्शाया जाता है।

http://www.jgallant.com/images/pressuretest.gif

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


2
इस तथ्य को जोड़ने के लिए कि वर्षा के कण पानी के गिरने के प्रभाव को नकली बनाते हैं: सतह पर छोटी बूंदों के छींटे भी वास्तविक वर्षा कणों से संबंधित नहीं हैं, लेकिन एक अलग प्रभाव है। संयोजन ऐसा दिखता है जैसे कि बूंदें स्पलैश बनाती हैं।
फेलिसिर

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

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

3

यह दृष्टिकोण करने के तरीकों का एक गुच्छा है। हमेशा की तरह 'यह निर्भर करता है'

और इसलिए मुझे लगता है कि एक रास्ता इस तरह होगा .. जमीन में एक मनमाना 'डुबकी' को देखते हुए एक 'पानी का डिब्बा' जो इसे बांधता है। जमीन और वॉटरबॉक्स को परतों में खींचा जाता है ताकि जमीन को पहले दिखाया जाए, उसके बाद वॉटरबॉक्स।

हर बार एक पानी की बूंद जमीन में डुबकी मारती है और एक को वॉटरबॉक्स में जोड़ देती है। जब वॉटरबॉक्स एक जादू नंबर तक पहुंचता है, तो पानी की एक पंक्ति जोड़ें। तो कहते हैं कि डुबकी में 10 बूंद भूमि, यह वॉटरबॉक्स में एक पंक्ति जोड़ता है।

तो मान लीजिए वॉटरबॉक्स 32X32 पिक्सल है। 0,31- 31,31 से पानी के रंग की एक पंक्ति जोड़ें। एक और 10 बूंदें, 0,30 - 31,30 से एक रेखा खींचती हैं। तो जैसे-जैसे बूंदें जमा होती हैं, आप नीचे से वॉटरबॉक्स तक का निर्माण करते हैं जब तक कि यह पूर्ण न हो जाए।

आशा है कि समझ में आता है।

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