2011-05-07 18 views
5

मैं ओपनजीएल ईएस 1.1 का उपयोग कर रहा हूं और ब्लेंडर से ओबीजे निर्यात को वर्टेक्स डेटा युक्त कुछ बाइनरी फाइलों में परिवर्तित करने पर काम कर रहा हूं। मेरे पास वास्तव में पहले से ही एक कामकाजी उपकरण है, लेकिन मैं कुछ चीजों को बदलने पर काम कर रहा हूं और एक प्रश्न में आया हूं।ओबीजे प्रारूप और फ्लैट बनाम चिकना छायांकन

चिकना छायांकन के साथ भी, ऐसा लगता है कि सही मानदंडों (चेहरे के विमान के लंबवत) के साथ यह चेहरे के लिए एक सपाट उपस्थिति प्राप्त करता है। चिकना छायांकन सक्षम और उचित मानक (केवल ब्लेंडर में तेज के रूप में चिह्नित किनारों के माध्यम से और एक एज-स्प्लिट संशोधक लागू) के माध्यम से, मैं चिकनी भागों और तेज किनारों को प्रभावित कर सकता हूं।

जहां मैं इसके साथ जा रहा हूं 2 प्रश्न लाता है।

  1. "एस 1" या "बंद है" लाइनों जहां चिकनी या फ्लैट छायांकन OBJ फ़ाइल एक चिकनी छायांकन और normals दृष्टिकोण के उपयोग से पूरी तरह से अनावश्यक में निरूपित किया जाता है कर रहे हैं?

  2. जब वास्तव में ओपनजीएल में फ्लैट छायांकन पर सेट किया जाता है, तो क्या मानक पूरी तरह से अनदेखा किए जाते हैं (या सिर्फ सभी चेहरों के लिए लंबवत माना जाता है)?

उत्तर

9

चिकनी दिखने के लिए एक कशेरुक के लिए, इसके सामान्य को आसन्न चेहरे के मानक (या कुछ ऐसा) का औसत होना चाहिए, लेकिन चेहरे के विमान के लिए लंबवत नहीं है (सिवाय इसके कि यदि आप अपने आसन्न चेहरों का औसत विमान)।

जीएल_एफएलएटी का मतलब है, चेहरे का रंग त्रिभुज पर अंतर नहीं किया जाता है, लेकिन एक त्रिकोण कोने से लिया जाता है (पता नहीं, पहले या आखिरी)। यह रंग या तो कशेरुक रंग या कशेरुक प्रकाश से आता है, इसलिए वास्तव में आपको प्रति-चेहरे के मानक मिलते हैं, लेकिन यह चेहरे की दिशा में असफल नहीं है, लेकिन कोने वर्टेक्स का सामान्य है।

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

+0

ओबीजे स्पेक में कुछ भी नहीं है जो कहता है कि चिकनी समूहों को बिटमैस्क के रूप में व्याख्या किया जाना चाहिए, लेकिन इसका उपयोग करने के लिए यह काफी सुविधाजनक है, इसलिए मैं देख सकता हूं कि एक गेम इंजन इस तरह से क्यों व्यवहार कर सकता है। – ideasman42

+0

@ ideasman42 हम्म, शायद मुझे यह 3 डीएस प्रारूप से मिला, क्योंकि वहां निश्चित रूप से वे इस तरह से उपयोग किए जाते हैं। जब उन्हें आसानी से चिकनी समूह आईडी के रूप में लेते हैं तो आप एक समूह को कई समूहों से संबंधित नहीं कर सकते हैं। –

+1

'एस 5 "लाइन के बाद सभी चेहरों को चिकनाई समूहों 1 और 3' का हिस्सा नहीं होना चाहिए [...] समूह 1 और 4 को चिकनाई करना? – PinkTurtle

1

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

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