मैं यूनिटी में बहुत विशाल भूभाग कैसे बना सकता हूं ? ऐसा लगता है कि मैं बड़े मूल्यों के लिए चौड़ाई और लंबाई सेट कर सकता हूं। लेकिन हाइटमैप रिज़ॉल्यूशन केवल 4097 तक जाता है और डिटेल रिज़ॉल्यूशन केवल 4048 तक जाता है।
कोई विचार?
मैं यूनिटी में बहुत विशाल भूभाग कैसे बना सकता हूं ? ऐसा लगता है कि मैं बड़े मूल्यों के लिए चौड़ाई और लंबाई सेट कर सकता हूं। लेकिन हाइटमैप रिज़ॉल्यूशन केवल 4097 तक जाता है और डिटेल रिज़ॉल्यूशन केवल 4048 तक जाता है।
कोई विचार?
जवाबों:
इलाके को "चौकों" में विभाजित करें, जिन्हें आप परवाह करते हैं उन्हें लोड करें (ज्यादातर: जो वर्तमान में सक्रिय कैमरा के पास हैं) अपडेट में) () और - यदि आप अंतरिक्ष के लिए स्ट्रैप्ड हैं (आप की संभावना होगी), तो दूर की जरूरत वाले लोगों को लोड न करें ।
दूर-दूर इलाके LoD के लिए पूर्व-गणना की गई लो-पॉली मॉडल का उपयोग करें, जब तक कि आपको कम दृश्य दूरी का मन न हो। इसके अलावा, अगर आपको किसी भी चीज के लिए दूर के इलाके के ऊंचाई ऊंचाई (जैसे एनपीसी आंदोलन या कुछ अन्य सिमुलेशन) की आवश्यकता है, तो स्मृति में रखने के लिए अपने इलाके का एक कम-रिज़ॉल्यूशन या चर रिज़ॉल्यूशन संस्करण बनाएं; इसके लिए पूरे इलाके डेटा का उपयोग न करें। यह स्वचालित रूप से गेम लोड पर किया जा सकता है, लेकिन आमतौर पर यह एक उपकरण बनाने के लिए एक बेहतर विचार है जो निर्माण या पैकेज के दौरान इस पूर्व-निर्मित डेटा को बनाता है।
अंत में: फ्लोटिंग पॉइंट सटीक समस्याओं से बचने के लिए, आपको हर बार अपने मुख्य कैमरे को दूर (0.0f, 0.0f, 0.0f) से दूर ले जाने के लिए पूरे दृश्य को बदलना होगा।
एकता के उत्तर पर संभवतः प्रासंगिक सवाल http://answers.unity3d.com/questions/17225/dynamic-terrain-loading.html
आपको विखंडू में इलाकों को तोड़ने की आवश्यकता होगी, अर्थात। कई छोटे इलाके। यो को फिर से प्रत्येक (एक स्क्रिप्ट के साथ) उन लोगों को सीवन करने की आवश्यकता होगी, इसलिए उनके बीच 'छेद' नहीं होंगे, लेकिन अन्यथा आप अभी उन्हें तुरंत करना शुरू कर सकते हैं।
आप यह भी जानना चाह सकते हैं कि चूंकि यूनिटी 3 डी ~ 3.0 से आप बहुत दूर (जैसे +/- 100000 कदम IIRC) आइटम नहीं ले सकते हैं (इसलिए +R- 100000 कदम IIRC) ताकि यह आपकी दुनिया के अधिकतम आकार को प्रभावित करेगा।
मैं वैसे भी अपने ऑनलाइन आरपीजी गेम में इसका उपयोग कर रहा हूं (इस अपवाद के साथ कि मैं केवल स्तर डिजाइन के लिए यूनिटी 3 डी का उपयोग करता हूं, वास्तविक गेम के लिए नहीं)।
सिर्फ इसलिए कि मैं उत्सुक हूं, क्या आप अपने खेल के बारे में कुछ जानकारी साझा करना चाहेंगे (जैसे उन्नति, प्रकार, ग्राफिक्स, शैली आदि)?
हमने पूरे पृथ्वी के लिए SRTM डेटा TerrainData
को विभिन्न स्तरों के विवरणों [1] के साथ ऑब्जेक्ट्स के लिए ऊंचाई-मानचित्रों में संसाधित करके यूनिटी 5 में विशाल इलाकों को लागू किया । कुछ बातों पर विचार करना होगा:
ऊँचाई के नक्शे के बहुत किनारों को कम से कम एक नमूना द्वारा ओवरलैप करने की आवश्यकता होती है और आपको अपने इलाकों को उसी के अनुसार रखने की आवश्यकता होती है। Terrain.SetNeighbors
एकता से किए गए विस्तार के विभिन्न स्तरों के लिए केवल जाल को नहीं जोड़ेंगे।
आपको, आवश्यक रूप से, प्रति TerrainData
ऑब्जेक्ट 2 ^ n + 1 ऊंचाई के नमूने की आवश्यकता है, अन्यथा एकता सिर्फ 0 से ऊँचाई के कुछ हिस्सों को असाइन करेगी।
यदि आपके पास 2GB से कम है TerrainData
, तो आप संसाधन फ़ोल्डर में उन्हें आस्तियों के रूप में और Resource.Load
उन्हें रनटाइम पर निकाल सकते हैं । यदि आपके पास 2GB से अधिक है, तो यह दृष्टिकोण अब काम नहीं करेगा क्योंकि एकता के साथ संसाधनों का 2GB अधिक नहीं हो सकता है। इस मामले में आपको AssetBundles बनाने की आवश्यकता होगी और WWW
ऑब्जेक्ट के साथ एसिंक्रोनस रूप से लोड करना होगा । इसके पास Shader.Parse
लगभग 500ms के ओवरहेड के साथ प्रत्येक के लिए कॉल करने का दुष्प्रभाव नहीं है । मैंने मंचों पर इसकी रिपोर्ट की [2] और अभी भी उत्तर की प्रतीक्षा कर रहा हूं। मैं अंततः बग रिपोर्ट प्रस्तुत करूंगा।
उपयोग करने के बारे में मत सोचो AssetDatabase.LoadAssetAtPath
, यह केवल संपादक में उपलब्ध है और यूनिटी बिल्ड में नहीं है।
[१] https://www.youtube.com/watch?v=2UsyVuWoFbQ
[2] http://forum.unity3d.com/threads/shader-parse-delays-loading-of-assetbundle-contain-no-shader .३,५८,२३५ /
तीसरे पक्ष के समाधान हैं।
यह कोड 99,999 मीटर की चौड़ाई के इलाके बना सकता है, पहाड़ किसी भी शोर के फार्मूले हैं, लेकिन आप चाहें तो 100 शोर के फार्मूले को एक नक्शे में मिला सकते हैं। उदाहरण के लिए, इस भूभाग में, नक्शे में उपलब्ध त्रिकोणों की कुल संख्या 66million, कम रिज़ॉल्यूशन और 200million मध्यम रिज़ॉल्यूशन के बीच है। यहाँ एक 66million त्रिभुज मानचित्र है, जहाँ 0.7mn त्रिभुज को कैमरे के चारों ओर अद्यतन किया जाता है। यूनिटीप्लेयर विशाल भूभाग, WASD और स्पेस
मैं आपके इलाके को चनों में लोड करने की सलाह दूंगा। छोटे इलाकों का उपयोग करके, और शायद आपकी स्क्रिप्ट यह जांच सकती है कि क्या आप ट्रांसफॉर्मेशन का उपयोग करके अपने इलाके में एक निश्चित निकटता में हैं। मैंने वास्तव में एक ब्लॉग पोस्ट लिखा था कि कैसे अपने गेम को एक पूरे के रूप में अनुकूलित किया जाए, और मैंने चंक लोडिंग के बारे में बात की। उम्मीद है की यह मदद करेगा।