2016-11-07 6 views
5

में क्षेत्र के लिए अत्यधिक उच्च रिज़ॉल्यूशन मैपिंग मेरे आईओएस ऐप में, मेरे पास ग्रह मानचित्रों का एक सेट है, जो कि 14k रिज़ॉल्यूशन जितना बड़ा है। मैं SceneKit में ग्रहों के मॉडल बनाने के लिए गोलाकार संस्करणों को गोलाकारों में लागू कर सकता हूं। हालांकि, मैं चाहता हूं कि उपयोगकर्ता पूर्ण रिज़ॉल्यूशन छवियों पर विवरण देखने के लिए ज़ूम इन कर सकें। मैं भी अपने ऐप को मेमोरी से बाहर चलाए बिना ऐसा करने में सक्षम होना चाहता हूं। क्या Google मानचित्र की तरह किसी क्षेत्र में स्वचालित रूप से टाइल बनावट करने का कोई तरीका है, और जब आवश्यक हो तो केवल भागों और संकल्प लोड करें?SceneKit

उत्तर

1

बहुत अनुकूल प्रोग्रामिंग प्रयासों का उपयोग करके आप आवेदन कर सकते हैं दो ऑप्टिमाइज़ेशन तकनीकें मिपमैप्स और विस्तार के स्तर हैं।

यदि आप mipFilterSCNMaterial की संपत्ति को अपने ग्रह मानचित्र का प्रतिनिधित्व करते हैं, तो आपको स्वचालित रूप से जेनरेट किया गया मिपमैप मिल जाएगा।

यदि आप अपने ग्रह के SCNGeometry के लिए कुछ SCNLevelOfDetail उदाहरण प्रदान करते हैं, तो आपको अत्यधिक कम पॉलीगॉन गणना वाले संस्करण मिलेंगे जो स्मृति को बचाएंगे।

ये दोनों 2013 डब्ल्यूडब्ल्यूडीसी सीनकेट टॉक में उल्लिखित हैं। SCNLevelOfDetail का 2014 में फिर से उल्लेख किया गया है। 2014 नमूना कोड में दोनों के उदाहरण हैं: एएपीएल प्रस्तुतीकरण व्यू कंट्रोलर में एमआईपीएमएपी पीढ़ी, और स्लाइड 58 में एलओडी।

+0

मिपफ़िल्टर के साथ अपने अवैज्ञानिक परीक्षणों से, यह लगता है कि ज़ूम स्तर पर आधारित चूना स्मृति उपयोग स्थिर रहता है। ऑब्जेक्ट पर एक 8k बनावट ~ 400 एमबी मेमोरी को हॉगिंग कर रही है इससे कोई फर्क नहीं पड़ता कि ऑब्जेक्ट बहुत छोटा और दूर या करीब है। मैं रैखिक फ़िल्टर मोड का उपयोग कर रहा हूँ। क्या इसके लिए मुझे कुछ और लागू करना है? – Timestretch

1

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

संबंधित मुद्दे