X, Y, Z मानकों का समन्वय करते हैं?


12

मैं किसी भी तरह के, फिर भी खेल के 3 डी विकास के लिए बहुत नया हूँ। जैसा कि मैंने ट्यूटोरियल और उदाहरणों के माध्यम से पढ़ा, मुझे पता है कि एक्स / वाई / जेड निर्देशांक मेरे पहले अनुमान की तुलना में थोड़ा पीछे की ओर लगते हैं।

मैंने कल्पना की थी कि यदि कोई व्यक्ति किसी मैदान के चारों ओर घूम रहा है, तो उनकी X / Y स्थिति बदल जाएगी और यदि वे किसी पहाड़ी से कूद या ऊपर या नीचे चलना चाहते हैं, तो उनकी Z स्थिति बदल जाएगी। मेरी धारणाएँ गलत प्रतीत होती हैं क्योंकि एक मैदान के चारों ओर घूमना एक्स / ज़ेड को बदलने लगता है और एक पहाड़ी के ऊपर कूदना / नीचे जाना Y।

1) क्या मेरे अवलोकन सही हैं? 3 डी मेरे लिए नया है और मैं चीजों के बारे में ठीक से नहीं सोच रहा हूं।

2) क्षैतिज आंदोलन के पीछे तर्क क्या है X / Z और ऊर्ध्वाधर आंदोलन Y है?

3) क्या एक्सएनए / वाई को क्षैतिज आंदोलन और जेड के रूप में एक्सएनए फ्रेमवर्क में ऊर्ध्वाधर आंदोलन के रूप में उपयोग करना मेरे लिए इतना गलत होगा?


लेफ्ट / राइट हैंड कोऑर्डिनेट सिस्टम। DirectX बाएं हाथ है, OpenGL में डिफ़ॉल्ट दाहिने हाथ है।
जोनाथन कॉनेल

जवाबों:


19

आपकी धारणा गलत नहीं है: प्रत्येक इंजन इन निर्देशांक को अलग तरह से मानता है। आम तौर पर बोलने वाला एक्स लगभग हमेशा पूर्व-पश्चिम अक्ष होता है, लेकिन क्या वाई या जेड अल्टिट्यूड अक्ष है जो भिन्न होता है। जैसा कि मैंने इसे समझा, क्वेक 3, सोर्स इंजन, और टॉर्क इंजन सभी में Z जैसा है। तो क्या मॉडलिंग टूल 3DS Max करता है। यह असामान्य नहीं है।

यह समझ में आता है कि एक समन्वित प्रणाली है जो मोटे तौर पर महत्व के अवरोही क्रम में आदेशित होती है, ताकि किसी प्रतिनिधित्व को कम आयामों में समतल करने में आसानी हो। उदाहरण के लिए, यदि आपका गेम 2 डी ऊंचाई के नक्शे पर सेट है, तो यह जेड के लिए 'अप' होने का अर्थ बनाता है, क्योंकि तब आपका एक्स और वाई 3 डी दुनिया के नक्शे में सीधे एक्स और वाई के लिए समन्वय करता है। दूसरी ओर, यदि आप मुख्य रूप से प्रतिपादन के संदर्भ में सोचते हैं (और कई गेम इंजन डेवलपर्स करते हैं), तो आपको स्क्रीन के निर्देशांक में X और Y का उपयोग किया जाता है, इसलिए स्वाभाविक रूप से स्क्रीन में या बाहर जाने के लिए एक 3 अक्ष को जोड़ना।

जो आपके लिए सबसे आसान है, उसका उपयोग करें, लेकिन इस बात से अवगत रहें कि कोई भी विकल्प मनमाना है और आपको उनके बीच एक कार्यक्रम में कई समन्वय प्रणालियों का उपयोग करना होगा।


मैं वास्तव में अन्य दो उत्तरों को बेहतर तरीके से पसंद करता हूं, लेकिन चूंकि यह स्वीकृत उत्तर है, यह ध्यान देने के लिए एक नोट है कि वाई ऊर्ध्वाधर और जेड स्क्रीन में है जिस तरह से अधिकांश 3 डी हार्डवेयर एपीआई काम करने के लिए स्थापित किए गए हैं (डायरेक्टएक्स और ओपनजीएल) । यदि आप अपना स्वयं का सिस्टम चाहते हैं, तो बस इसके बारे में जागरूक रहें क्योंकि कुछ अनुवाद की आवश्यकता हो सकती है। (कुछ अनुचित रूप से इस्तेमाल किया जाता है, लेकिन लगातार वांछित रूप से काम कर सकता है, इसलिए 'हो सकता है' :))
जेम्स

1
तकनीकी तौर पर OpenGL में डिफ़ॉल्ट रूप से स्क्रीन से Z आ रहा है, जब आप दिशा को शामिल करते हैं, तो हालांकि यह और DirectX दोनों Z देखने की दिशा के समानांतर हैं, फिर भी वे असंगत हैं! 3 डी के साथ काम करते समय आपको एक समन्वय प्रणाली से दूसरे में घूर्णन, अनुवाद और स्केलिंग के माध्यम से सक्षम होने की आवश्यकता होती है - वास्तव में, यह है कि दुनिया में मॉडल कैसे समाप्त होते हैं - इसलिए बहुत अधिक बिंदु किसी भी धारणा से जुड़े नहीं हैं मानक।
काइलोटन

सिर्फ इशारा करते हुए जब लाखों त्रिकोणों से निपटते हैं, तो शायद आपको कम से कम हार्डवेयर की समन्वयात्मक प्रणाली से लड़ने के लिए बेहतर करना होगा;) दिन का अंत, तनाव के स्तर के बावजूद खेल मजेदार है .. जो आप करना चाहते हैं: )
जेम्स

स्क्रीन के अंदर / बाहर जाने या ऊंचाई के रूप में "Z" की धारणा कुछ भ्रामक है। केवल परिवर्तनों की अवधारणा करना आसान हो सकता है। हम 3D / 4D वर्टेक्स निर्देशांक प्रस्तुत करते हैं जो अंततः 2D विंडो स्पेस में बदल जाते हैं लेकिन गहराई मूल्य के साथ। यह विचार कि एक एपीआई स्वाभाविक रूप से X, Y, या Z के 3 डी निर्देशांक को "गहराई" में मैप करता है, वास्तव में सही नहीं है - आप किसी भी परिवर्तन के साथ आ सकते हैं जो निर्देशांक के अर्थ को बदल देता है। उस परिवर्तन के अंत में, आपको अभी भी 2D विंडो स्थान निर्देशांक और गहराई मान मिलेगा।
पैट्रिकबी

1
मुझे पूरी तरह से यकीन नहीं है कि हम बाकी बातों पर कहाँ तक असहमत हैं: बेशक आप किसी भी समन्वित स्थान का उपयोग कर सकते हैं, जब तक आप चाहते थे कि आप x, y, अंत में गहराई तक प्रोजेक्ट कर सकते हैं, लेकिन यह प्रश्न मुख्य रूप से कुछ सम्मेलनों में क्यों मौजूद है समन्वय प्रणालियों के लिए, और सम्मेलनों को अनिवार्य रूप से वास्तविक दुनिया की अवधारणाओं से जोड़ा जाता है।
काइलोटन

6

कल्पना कीजिए कि आपके सामने एक चार्ट के साथ कागज का एक टुकड़ा दिखाई दे रहा है, कुल्हाड़ियों को आमतौर पर नीचे के पार एक्स और ऊर्ध्वाधर को एक्स कहा जाता है; यह Z को जमीन के साथ बाहर की ओर धुरी होने के लिए छोड़ देता है।

यह केवल एक सम्मेलन है, लेकिन यह ग्राफिक्स में बहुत उपयोग किया जाता है जहां हम जेड के दृश्य में गहराई के बारे में सोचते हैं।

सीएडी जैसे अन्य क्षेत्रों में आपका संस्करण अधिक सामान्य होगा।


4

विचार यह है कि x और y कुल्हाड़ियाँ एक ही रहती हैं - y स्क्रीन पर 'up' है, और x पार है।

z - तीसरा आयाम, स्क्रीन में वापस प्रोजेक्ट करता है (यहाँ संक्षिप्तता के मुद्दों की अनदेखी)। 3 आयामों में यह थोड़ा अजीब है, लेकिन स्क्रीन स्पेस में चीजों की स्थिति के लिए यह अधिक समझ में आता है।

3) आप चाहें तो कर सकते हैं, लेकिन यह दर्दनाक और भद्दा होगा। मैं आपको सलाह दूंगा कि आप Z- प्रोजेक्ट्स-इन / आउट-ऑफ-मॉनिटर की आदत डालें।


1

1) हाँ आपके अवलोकन सही हैं।

2) मानक वैश्विक XYZ समन्वय प्रणाली समझ में आता है जब आप पहले व्यक्ति शूटर के संदर्भ में सोचते हैं, जब आप एक रिक्त (पहचान) परिवर्तन मैट्रिक्स के साथ दृश्य में एक चरित्र की आंखों के माध्यम से देख रहे हैं। जैसे कि जब आप कागज के एक टुकड़े पर एक समन्वय प्रणाली बनाते हैं, तो X दाईं ओर और Y बिंदु ऊपर की ओर होता है। दाहिने हाथ के नियम (x-> अंगूठा, y-> तर्जनी, z-> मध्यमा अंगुली) के अनुसार, Z आपकी ओर इशारा करता है।

3) यह गलत नहीं होगा, लेकिन यह मानकों से एक मोड़ होगा। तीन समस्याएं हैं जो मैं इस समय सोच सकता हूं: (ए) मान लीजिए कि एक दिन आप एक भौतिकी पुस्तकालय का उपयोग करना चाहते हैं जो मानक समन्वय फ्रेम का उपयोग करता है। यदि आपने मानक का पालन नहीं किया, तो अब आपको उस परिवर्तन के बारे में सोचना होगा जो आपको आपकी दुनिया से भौतिकी की दुनिया में ले जाता है। जब आप बग को ठीक करना चाहते हैं तो आप परेशान हो सकते हैं। (b) जब आप किसी के साथ कोड साझा करना चाहते हैं, या किसी को विकास में मदद करना चाहते हैं, तो उन्हें आपके सम्मेलन में जाने की आदत डालनी होगी। (c) मानक 3D मॉडल का उपयोग करते समय, आपको हमेशा बग़ल में देखने से रोकने के लिए उनके ऊपर एक परिवर्तन करना होगा।

अब प्रश्न 2 में जोड़ने के लिए, एक्स, वाई और जेड के बारे में सोचना केवल तीन अक्षरों के लिए ही उपयोगी है, लेकिन सही, ऊपर और पीछे की तरह। दृश्य के प्रत्येक चरित्र में उनके साथ एक स्थानीय समन्वय प्रणाली जुड़ी हुई है, और उनके स्थानीय समन्वय फ़्रेम में X हमेशा सही होता है, Y ऊपर होता है और Z पीछे होता है। एक बार जब आपके पास यह हो जाता है, तो अब आप उन वैक्टरों की समझ बना सकते हैं जिन्हें आप प्रिंट करते हैं, या अपने एल्गोरिदम को इस तरह से लिखते हैं जो समझ में आता है। मान लीजिए कि आपके पास दो अक्षर हैं A और B, और आप कुछ करना चाहते हैं यदि उनमें से एक दूसरे का सामना कर रहा है। आप बस A के समन्वय फ्रेम (B ^ -1 * p_b) में B का स्थान प्राप्त कर सकते हैं, अपने द्वारा प्राप्त वेक्टर को देखें और देखें कि क्या Z (पीछे की तरफ) ऋणात्मक है और X (दाएं) और Y (ऊपर) छोटे हैं, क्योंकि वह वेक्टर है आपको बताता है कि ए के संबंध में बी, बैक और राइट बी कितना है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.