2012-06-20 14 views
5

में एक स्काईबॉक्स की प्रक्रियात्मक/गतिशील रंग मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जिसके लिए एक प्रक्रियात्मक आकाश प्रस्तुत करने की आवश्यकता है, इसका मतलब यह है कि आकाश में एक दिन का रात चक्र है जो उस समय के आधार पर बदलता है अनुकरण के भीतर।ओपनजीएल

मैं एक विधि अतीत में कहीं देखा है, जहां वे इस के रूप में एक रंग मैप सुष्मिता है: enter image description hereenter image description here

अब ऐसे समय के रूप में कुछ चर पर निर्भर करता है, छवि और का उपयोग करता है के ऊपर किसी भी तरह कोड स्कैन आकाश के बनावट के लिए रंगों की एक श्रृंखला। इसके अलावा सूर्योदय/सूर्यास्त के दौरान कोड दाईं ओर एक पीले, नारंगी, लाल रंग के लिए स्कैन करेगा।

मुझे यकीन नहीं है कि इसे क्या कहा जाता है लेकिन मुझे लगता है कि यह मेरे बाद है। मुझे प्यार होगा अगर कोई मुझे दिखाएगा या मुझे ओपनग्ल और सी ++ के साथ इस तकनीक का उपयोग करने के उदाहरण के लिए इंगित करेगा।

एक तरफ ध्यान दें मेरी skybox आपके औसत आकार नहीं है अपने enter image description here

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

किसी भी स्पष्टीकरण/कैसे एक रंग मैप स्कैन करने के लिए तो ओपन में एक बनावट के रूप में सेट पर उदाहरण अल्फा के लिए/C++ बहुत सराहना कर रहा है।

+2

जिसने निकटता के लिए वोट दिया था: यह वास्तव में एक दिलचस्प सवाल है और न तो विषय से और न ही अस्पष्ट है। यह सिर्फ एक मुश्किल विषय है।दुर्भाग्यवश मुझे अभी एक बात तैयार करनी है, अन्यथा मैं बहुआयामी आकाश ढाल संरचना (जो इस बनावट के लिए उपयोग किया जाना है) को समझाते हुए लंबाई के माध्यम से जाना होगा। – datenwolf

+1

@ डेटनवॉल्फ शायद आप कुछ दिनों में इस विषय से फिर से आ सकते हैं। मुझे यकीन है कि मेरे जैसे अन्य लोग हैं जो एक अच्छी तरह से शिक्षित उत्तर की सराहना करेंगे। – s3rius

उत्तर

1

पिछले परियोजना ( विशेष प्रभाव) डाउनलोड इस यूआरएल http://golabistudio.com/siamak/portfolio.html
C++ स्रोत में उपलब्ध नहीं है लेकिन शेडर स्रोत है।
आपको जो करना है वह आपके शेडर को पास करने के लिए 2 बनावट है (विमान को प्रतिपादित करते समय)। पहला बनावट आपका मानक स्काईबॉक्स बनावट है। दूसरा बनावट आपका दिन/रात चक्र बनावट है। इसकी सबसे सरलता यह नीली से अंधेरे तक जाने वाली ऊंचाई 1 का विस्तृत ढाल बनावट हो सकती है। इस दूसरे बनावट को आपके शेडर को पास करने के साथ आप एक्स = टाइम की स्थिति में एक पिक्सेल निकाल सकते हैं और रंग को अपने फैलाने वाले बनावट (पहला बनावट) में जोड़ सकते हैं।

अगले चरण में सूर्योदय है। यह यह करने के लिए सबसे आसान है फिर से, आप सूर्योदय पिक्सल क्षैतिज एक पक्ष के साथ चौड़ाई 2 के एक बनावट बनाने के लिए और एक और रात ढाल: (चौड़ाई में बढ़े हुए) http://i.imgur.com/Rl8XJ.png

अब अपने आने वाले यूवी के लिए समन्वय होने फैलाना बनावट (प्रथम skybox बनावट) आप निम्नलिखित

float2 uvpos; 
    uvpos.y = IN.uv.y;//the position same as skybox texture 
    uvpos.x = 0;//a sample from first horizontal pixel 
    float4 colour1 = tex2D(gradientTexture, uvpos); 
    uvpos.x = 0.5;//a sample from second horizontal pixel 
    float4 colour2 = tex2D(gradientTexture, uvpos); 

    float4 skycolor = lerp(colour1 , colour2, (your day time)); 
    skycolor.xyz += tex2D(skyTexture, IN.uv).xyz; 

यह बहुत ही सरल कार्यान्वयन ले, लेकिन तुम जा मुझे लगता है कि मिलना चाहिए।