इन यूवी बनावट निर्देशांक को समझ नहीं सकते (रेंज 0.0 से 1.0 नहीं है)


9

मैं अपने वेबजीएल ऐप पर Google स्केचअप 8 प्रो द्वारा उत्पन्न एक साधारण 3 डी ऑब्जेक्ट खींचने की कोशिश कर रहा हूं, मॉडल एक साधारण सिलेंडर है।

मैंने निर्यात की गई फ़ाइल को खोला और अनुलंब पदों, सूचकांकों, मानदंडों और बनावट को एक .json फ़ाइल में कॉपी किया, ताकि इसे जावास्क्रिप्ट पर उपयोग करने में सक्षम बनाया जा सके। बनावट के निर्देशांक को छोड़कर सब कुछ ठीक काम करने लगता है, जिसमें कुछ बहुत बड़े मूल्य होते हैं, जैसे कि 46.331676 और नकारात्मक मूल्य भी। अब मुझे नहीं पता कि मैं गलत हूं, लेकिन क्या 2D बनावट निर्देशांक 0.0 से 1.0 तक की सीमा में होना चाहिए?

खैर, इन बनावट निर्देशांक का उपयोग करके मॉडल को आकर्षित करना मुझे पूरी तरह से अजीब लग रहा है, और मैं केवल बनावट को ठीक से देखने के लिए प्राप्त कर सकता हूं जब मैं मॉडल के बहुत करीब (कैम, वास्तव में नहीं हूं), जैसे कि बनावट पागलपन की गई हो यह आकार में कम है और मॉडल के चेहरों पर असीम रूप से दोहराया जाता है। (हाँ, मैं उस बनावट रैप चीज़ पर GL_REPEAT का उपयोग कर रहा हूं)

मैंने जो देखा वह यह है कि अगर मुझे ये सभी निर्देशांक मिलते हैं और उन्हें 10 या 100 से विभाजित करते हैं तो मुझे बहुत "सामान्य" रूप मिलता है, लेकिन फिर भी 0.0 से 1.0 की सीमा में नहीं।

यहाँ मेरी json फ़ाइल है: http://pastebin.com/Aa4wvGvv

यहाँ मेरे GLSL शेड्स हैं: http://pastebin.com/DR4K37T9

और यहाँ स्केचअप द्वारा निर्यात .X फ़ाइल है: http://pastebin.com/hmYAJZWE

मैंने भी XNA का उपयोग करके इस मॉडल को खींचने की कोशिश की है, लेकिन फिर भी काम नहीं कर रहा है। इस HLSL शेड्स का उपयोग करना: http://pastebin.com/RBgVFq08

मैंने एक ही मॉडल को विभिन्न प्रारूपों, कोलाडा, एफबीएक्स और एक्स पर निर्यात करने की कोशिश की। उन सभी को एक ही चीज़ मिलती है।

जवाबों:


8

आप सही हैं यूवी आमतौर पर 0-1 से चलते हैं हालांकि डेविड एक्स ने उल्लेख किया है कि यह एक आवश्यकता नहीं है। आपके मामले में यह समस्या स्केचअप जनरेट की गई यूवी निर्देशांक की आवृत्ति है। उदाहरण के लिए यदि आपका Y अक्ष (V निर्देशांक) 0 से 46 तक जाता है तो वह बनावट, यदि रैपिंग सक्षम है, V दिशा में 46 बार दोहराएगा। रैपिंग भी छोटी लगती है क्योंकि आपको एक ही सतह क्षेत्र में कई बार छवि को डुप्लिकेट करना पड़ता है। FBX या Collada के रूप में पुन: निर्यात इस मुद्दे को हल करने के लिए कुछ भी नहीं करता है क्योंकि यह एक ही यूवी का रास्ता है। इसे ठीक करने के लिए आपको स्केचअप में वापस जाना होगा और यह बदलना होगा कि यह सिलेंडर के लिए यूवी का उत्पादन कैसे कर रहा है। शायद आप अपने आप को यूवी रेंज निर्दिष्ट कर सकते हैं या शायद आपको यह बदलना होगा कि ज्यामिति कैसे पैरामीटर की जाती है। मैंने कभी स्केचअप का इस्तेमाल नहीं किया है इसलिए मैं डॉन '

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


1

(बनावट निर्देशांक निश्चित रूप से 0-1 के बाहर हो सकते हैं।) मुझे लगता है कि यह सिर्फ ओपनजीएल अजीब है। IIRC, Spheres बनावट निर्देशांक का उपयोग करते हैं जो सतह के ~ 1/16 पर 0-1 वर्ग डालते हैं, और यदि सिलिंडर कुछ ऐसा ही करते हैं तो मुझे आश्चर्य नहीं होगा। फिक्स-वार, आपको अपने स्वयं के सिलेंडर कोड को लिखना पड़ सकता है, एप्रीप्टिएट बनावट निर्देशांक जारी करना।


1

यदि आप चाहते हैं कि आपका uv निर्देशांक 0 से 1 के बीच हो, तो आप अपने मॉडल के लिए एक स्केल मैट्रिक्स का उपयोग कर सकते हैं।

तो अपने मॉडल को लोड करने पर, आप अपने अधिकतम यू और वी के लिए जांच कर सकते हैं और एक स्केलिंग मैट्रिक्स बना सकते हैं जो इसे और अधिक "सामान्य" बना देगा। तो यह आपके मैनुअल स्केलिंग को 10 या 100 की जगह लेगा। इसलिए इसे फिट होने के लिए, आपको अपने uv निर्देशांक को स्केल करना होगा [0,1]।

|1/uMax|0     |
|0     |1/vMax|

बेशक यह सिर्फ एक वर्कअराउंड है और आप बेहतर तरीके से स्केचअप को सही सेटिंग्स में सेट कर सकते हैं (मुझे लगता है कि आपका एक्सपोर्टर या स्केचअप ही यहां गलत हो जाता है)। लेकिन अगर यह आपके लिए काम नहीं करता है, तो अपना पोस्ट-लोडिंग-प्रोसेसर बनाएं और बनावट स्केलिंग मैट्रिक्स को बचाएं।


@ मार्मिक्स यह एक बहुत ही सरल, प्रभावी और सुरुचिपूर्ण समाधान है !!!
3 डी-इंडियाना-जोन्स

0

ऐसा लगता है कि स्केचअप आपकी बनावट के निर्देशांक को सामान्य नहीं कर रहा है, या अपने स्वयं के मीट्रिक का उपयोग नहीं कर रहा है। टेक्सकोर्ड्स <0 या> 1 और GL_REPEAT को टेक्सचर रैपिंग के रूप में रखने का मतलब है कि ज्यामिति को फिट करने के लिए टेक्सचर को स्केल किया जाएगा और क्षैतिज और लंबवत दोहराया जाएगा।

एक और मॉडलिंग पैकेज (मिल्कशेप, ब्लेंडर) में मेष आयात करने और वहां से यूवी मैप को ठीक करने का प्रयास करें।


4
टेक्सकोर्ड्स <0 या> 1 और GL_REPEAT को टेक्सचर रैपिंग के रूप में रखने का मतलब है कि टेक्सचर को [ त्रुटिपूर्ण स्टेटमेंट ] को क्षैतिज और लंबवत दोहराया जाएगा।
Kromster
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.