2010-12-17 13 views
5

के लिए बड़े, धीरे-धीरे ग्रह ग्राफिक्स घूर्णन एक कंप्यूटर गेम के लिए मैं विकसित कर रहा हूं, मैं धीरे-धीरे घूमने वाले ग्रहों के बहुत बड़े (~ 500 पीएक्स) ग्राफिक्स को आकर्षित करना चाहता हूं। ये ग्राफिक्स प्रभावित करने के लिए हैं। ऐसा करने का सबसे अच्छा तरीका क्या है?खेल

  • मैं प्रत्येक फ्रेम को पूर्व-प्रस्तुत कर सकता हूं, लेकिन 500px पर और 10 सेकंड की रोटेशन अवधि, यह प्रति ग्रह डेटा की एक लुभावनी मात्रा है।
  • मैं एक 3 डी इंजन का उपयोग कर सकता हूं और ग्रह के बनावट को एक क्षेत्र के पास जाल पर जा सकता हूं, लेकिन 500 पीएक्स पर, मुझे डर है कि पॉलीगॉन गिनती को अच्छा दिखने के लिए बहुत बड़ा होना होगा।
  • मैं एक प्रकार का कस्टम 3 डी इंजन लिख सकता हूं जो कि कुछ दृश्य पिक्सेल के x/y समन्वय को गोलाकार बनावट के समन्वय स्थान में परिवर्तित करके कुशलतापूर्वक एक बनावट क्षेत्र प्रदान नहीं करता है - लेकिन यह शामिल है, और यह ' ग्राफिक्स त्वरण से लाभ नहीं है।
  • कुछ और मैंने सोचा नहीं है?

यहां मेरा उदाहरण है एनिमेटेड जीआईएफ का एक उदाहरण है। (100x100 पिक्सल और 60 फ्रेम में, यह पहले से ही बहुत बड़ी है, क्षमा करें।) यह बहुत, बहुत बड़ा, बहुत धीमी घूर्णन कल्पना कीजिए, और अधिक सुचारू रूप से एनिमेटेड:

alt text

लेकिन यह अगर 500x500 px और 10 x थे 25 = 250 फ्रेम, हम सैकड़ों एमबी डेटा के बारे में बात करेंगे, इसलिए यह सीधा दृष्टिकोण काम नहीं करता है।

+0

यह बेहतर http://gamedev.stackexchange.com/ पर लक्षित किया जा सकता है। – Jon

उत्तर

6

Fracplanet "गोलाकार" बनावट मानचित्र (और बंप मानचित्र) को बचा सकता है; gallery के नीचे की ओर छवियों को देखें। इन्हें बाद में एक ऐप में पढ़ा जाना चाहिए और अपेक्षाकृत कम रिज़ॉल्यूशन क्षेत्र ज्यामिति पर मैप किया गया है जो मुझे लगता है कि आप जिस प्रभाव को ढूंढ रहे हैं उसे प्राप्त करने के लिए। यह दृष्टिकोण प्री-रेंडर एनीमेशन दृष्टिकोण की तुलना में कम स्मृति का उपयोग करेगा या मूल पूर्ण रिज़ॉल्यूशन पॉलीगॉन मॉडल का उपयोग करेगा।

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

वैकल्पिक विचार: ग्रह को कवर करने के लिए पर्याप्त रूप से एक एकल वर्ग क्वाड बहुभुज प्रदान करें। उसमें प्रत्येक पिक्सेल के लिए, एक पिक्सेल-शेडर निष्पादित करें जो स्क्रीन-रे-गोलाकार चौराहे बिंदु (यदि कोई हो) की गणना करता है। ग्रह बनावट से रंग देखें (समय और ग्रह घूर्णन खाते में लेना)। बहुत सारे बहुभुज की आवश्यकता से बचें और आपको एक सटीक क्षेत्र मिल जाता है।

+0

आपके पिछले पैराग्राफ के साथ, ऊंचाई-नक्शा तकनीक नहीं है एक गोलाकार उपस्थिति बनाने के लिए इस्तेमाल किया जा सकता है? –

1

यदि आप प्री-रेंडरिंग के लिए जाते हैं, तो एल्गोरिदम के बारे में कैसे आवश्यक है जैसे खेल चल रहा है, खिलाड़ी वास्तव में उन्हें देखने की संभावना के आधार पर - 'निश्चित' से लेकर तेजी से असंभव हो रहा है इस पर आधारित है कि गेम इंजन खिलाड़ी को एक्स सेकंड के समय में संभवतः बना सकता है कि उस समय कौन सा फ्रेम देखा जाना चाहिए, 'असंभव' तक और इसलिए प्रस्तुत नहीं किया गया है?

+0

+1 मुझे यकीन नहीं है कि यह काफी सवाल का जवाब देता है लेकिन मुझे वास्तव में इस तरह की संभावनाओं की भविष्यवाणी करने का विचार पसंद है ... – Basic

+0

ठीक है, ऐसा लगता है कि ओपी की मूल रणनीतियां नीचे थीं - मैं उन्हें बनाने के लिए एक तरीका सुझा रहा था व्यावहारिक जब वे अन्यथा नहीं हो सकता है। इस पर विस्तृत करने के लिए, जब आवश्यक हो तो पृष्ठभूमि में प्रतिपादन करने के लिए समर्पित समय की मात्रा को जॅक किया जाएगा, क्योंकि आप इंजन को बिना जाने के लिए अनुमति दे सकते हैं। यह संभवतः अनावश्यक काम को कम कर देता है, लेकिन आपको अभी भी यह सुनिश्चित करना होगा कि आप * आवश्यक * काम भी करें। –

0

आप या तो कैमरे को ऑब्जेक्ट के बारे में ले जा सकते हैं (जो वास्तव में केवल तभी काम करता है जब आपकी सभी चीज़ें केंद्रित हों), या ऑब्जेक्ट को बदलें। उत्तरार्द्ध आमतौर पर किया जाता है।

मैं sf.net/projects/a3d को देखने की अनुशंसा कर सकता हूं जो अध्ययन करना आसान हो गया है। draw_asteroidsglRotate कॉल का उपयोग करता है, तो यह है।

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

1

यदि आपके ग्रह हमेशा स्क्रीन पर ऑर्थोगोनल घूर्णन करेंगे तो बस एक सिंगल ग्रह बनावट है जो स्क्रॉल करता है और सर्कल द्वारा मास्क किया जाता है।

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

यदि आप फ्रेम 256x256 बनाते हैं तो आप 1024 बनावट पर 16 फिट कर सकते हैं, इसलिए 60 फ्रेम केवल 4 बनावट लेंगे। DXT3 संपीड़न का उपयोग करके आप उम्मीद कर सकते हैं कि यह लगभग 1 एमबी प्रति बनावट (सुंदर उचित) हो।

+2

लेकिन निश्चित रूप से ग्रह पर अलग-अलग अक्षांश अलग-अलग गति से स्क्रॉल करेंगे? – Zarkonnen

+0

इसके अलावा, मुझे लगता है कि रोटेशन अवधि लगभग 10 सेकंड होनी चाहिए, यह 500x500 पर 250 फ्रेम की तरह है, या लगभग 220 एमबी असंपीड़ित डेटा ... – Zarkonnen

2

यदि आप ग्राफिक्स त्वरण चाहते हैं, तो बहुभुज सस्ते होते हैं - बहुभुजों की काफी बड़ी संख्या कोई समस्या नहीं है।

मैं एक घन नक्शा बनावट की सिफारिश करता हूं, और इसी घन-जैसे त्रिभुज ग्रिड: मूल के बारे में एक घन (सतह की सतह) के आकार में एक कशेरुक ग्रिड के साथ शुरू करें, और प्रत्येक त्रिज्या को प्रत्येक त्रिज्या को सामान्य त्रिज्या में सामान्य करें। इससे आपके बनावट निर्देशांक को कंप्यूटिंग करना आसान हो जाएगा।

ध्यान रखें कि आपको अपने बनावट के लिए सही प्रक्षेपण चुनने की आवश्यकता है: उपर्युक्त मामले में, आप अपने ग्रिड से मेल खाने के लिए प्रत्येक घन चेहरे के लिए टेंगेंट प्रक्षेपण चाहते हैं।

2

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

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