2009-12-28 6 views
6

मैं प्रकाश की एक ओर्ब बनाने की कोशिश कर रहा हूं (एक सूरज की तरह) लेकिन मुझे यह बिल्कुल दिखाई नहीं दे रहा है। मैं आपको कोड के कुछ स्निपेट दूंगा। यह जावा एलडब्ल्यूजेजीएल में है, इसलिए यह थोड़ा अलग दिख सकता है।ओपनजीएल में मैं प्रकाश की गेंद कैसे बना सकता हूं?

private float lightAmbient[] = { 0.0f, 1.0f, 1.0f, 1.0f }; // Ambient Light Values (NEW) 
    private float lightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };  // Diffuse Light Values (NEW) 
    private float lightPosition[] = { 0.0f, 0.0f, -5.0f, 1.0f }; // Light Position (NEW) 
    float lightSpecular[] = { 0f, 0f, 0.5f, 1.0f }; // highlight 

और

ByteBuffer temp = ByteBuffer.allocateDirect(16); 
     temp.order(ByteOrder.nativeOrder()); 
     GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, (FloatBuffer)temp.asFloatBuffer().put(lightAmbient).flip());    // Setup The Ambient Light 
     GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, (FloatBuffer)temp.asFloatBuffer().put(lightDiffuse).flip());    // Setup The Diffuse Light 
     GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION,(FloatBuffer)temp.asFloatBuffer().put(lightPosition).flip());   // Position The Light 
     GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR,(FloatBuffer)temp.asFloatBuffer().put(lightSpecular).flip());   // Position The Light 

     GL11.glEnable(GL11.GL_LIGHT1); 

और क्या मैं प्रकाश दृश्यमान बनाने के लिए मुझे क्या करना होगा?

उत्तर

7

लाइट्स कभी दिखाई नहीं दे रहे हैं।

हालांकि, अन्य वस्तुओं के सामग्री पर उनके प्रभाव हैं। इसलिए यह महत्वपूर्ण है कि दृश्य में सभी वस्तुओं के पास उचित भौतिक गुण सेट हों।

आपको इस आलेख में रुचि हो सकती है कि mentions all the common mistakes दृश्यों को प्रकाशित करने की कोशिश करते समय कोई बनाता है।

alt text

आप glColorMaterial कार्यों को देखने के लिए के रूप में वे सामग्री गुणों को सेट करने के लिए सबसे आसान तरीका है चाहते हैं।

2

फ्रैंक की तरह, रोशनी अदृश्य हैं, इन्हें केवल ज्यामिति के अंतिम रंगों की गणना करने के लिए प्रतिपादन प्रणाली (हार्डवेयर/सॉफ्टवेयर) द्वारा उपयोग किए जाने वाले प्रकाश समीकरण में इनपुट के रूप में उपयोग किया जाता है।

यदि आप किसी प्रकाश की तरह दिखना चाहते हैं तो आपको उन प्रभावों की नकल करने की आवश्यकता है जिन्हें आप उज्ज्वल प्रकाश स्रोत को देखते समय देख रहे हैं। सूरज के लिए सबसे अधिक ध्यान देने योग्य प्रभावों में से एक हल्का खिलना है।

लाइट ब्लूम उत्पन्न करने के बारे में जानकारी के लिए यह OpenGL Bloom Tutorial पढ़ें, और यहां ब्लूम प्रभाव उत्पन्न करने के लिए जीएलएसएल का उपयोग कर जावा में कुछ sample code है।

2

यदि आप पूर्ण खिलने के स्टाइल प्रभाव चाहते हैं, तो यदि आप जोश पेरी के उत्तर को देखते हैं) या सिर्फ एक अंधेरे ऑब्जेक्ट ऑब्जेक्ट जो प्रकाश को उत्सर्जित करता है, तो आप इस सरल दृष्टिकोण पर विचार करना चाहेंगे।

  • वास्तविक 'सूर्य' जाल के बिना दृश्य प्रस्तुत करें लेकिन आपके 'सूर्य' के केंद्र में एक बिंदु प्रकाश के साथ।
  • जीएल प्रकाश अक्षम करें।
  • उचित स्थान पर अपने सूर्य की एक छवि प्रस्तुत करने के लिए एक क्षेत्र प्रस्तुत करें या billboard का उपयोग करें।
  • अपना अगला फ्रेम प्रदर्शित करने से पहले जीएल प्रकाश पुनः सक्षम करें।

क्योंकि आपने प्रकाश को अक्षम कर दिया है, इसलिए सूर्य को 'पूर्ण चमकदार' प्रदान नहीं किया जाएगा जिसमें कोई छायांकन या प्रकाश गणना नहीं की जा रही है।