मैं पानी से भरे क्षेत्रों को कैसे परिभाषित कर सकता हूं?


9

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

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

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

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


2
इंजन में आपका इलाका कैसे व्यवस्थित है? वहाँ voxel बनाम ऊंचाई बनाम polysoup (जाल) इलाके के लिए अलग तकनीक है।
Exilyth

यह एक जाल के रूप में दिया गया है और पानी को अन्य स्थैतिक जाल की तुलना में उस इलाके के जाल का व्यापार नहीं करना चाहिए।
दानीझार

1
व्यापार या इलाज?
टॉम 'ब्लू' पिडॉक

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

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

जवाबों:


3

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

मैं इस कार्यान्वयन के साथ समस्याएं देख सकता हूं, लेकिन यह निश्चित रूप से एक अपेक्षाकृत सरल और "अच्छा पर्याप्त" समाधान की तरह लगता है कि एक दर्शक / खिलाड़ी को सिमुलेशन में कभी भी विचलन को नोटिस करने के लिए संदिग्ध होगा।


2

यदि आप एक स्वर-आधारित भू-भाग का उपयोग कर रहे थे, तो आप प्रति स्वर में जमीन के घनत्व को संचय करने के अलावा, आप एक जल मान भी रख सकते हैं जो बीच 0- बीच में क्लैंप किया जाता है 1 - groundDensity। पानी खींचना उतना ही सरल होगा जितना कि पानी के मूल्यों के ऊपर एक मार्चिंग क्यूब्स को चलाना। पानी का अनुकरण करना थोड़ा अधिक कठिन होगा, लेकिन मूल आधार यह है कि आप इस तरह की प्रणाली को हल करना चाहते हैं:

  1. सतह के नीचे के पानी को शेष स्वर को भरना चाहिए
  2. सतह के स्तर के पानी groundDensity + waterDensityमें अपने पड़ोसियों के समान कुल घनत्व होना चाहिए
  3. पानी किसी भी विषैले को तुरंत बगल में और उसके नीचे विस्थापित किया जा सकता है, बशर्ते कि पड़ोसी का कुल घनत्व उसके कुल घनत्व से कम हो

आदर्श एल्गोरिथ्म एक गणना shader, एक निष्पादन पथ प्रति voxel में चलेगा। यदि आप कल्पना प्राप्त करना चाहते हैं, तो आप अतिरिक्त सिमुलेशन प्रभावों के लिए उस स्वर के भीतर पानी के वेग को भी स्टोर कर सकते हैं: उदाहरण के लिए, वेग वेक्टर द्वारा कोशिकाओं को "इंगित" करने के लिए वेग के अनुपात में पानी के अनुपात को वितरित करने का प्रयास। इस वेग डेटा का उपयोग तरंगों को स्थानांतरित करने, रैपिड्स को आकर्षित करने आदि के लिए भी किया जा सकता है।


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