2 डी स्प्राइट गेम के लिए, मैं समझ सकता हूं कि स्प्राइट्स एक्स और वाई अक्ष पर चलते हैं। हालांकि, 3 डी गेम के लिए, गेम इंजन कैसे गणना करते हैं कि एक फ्लैट 2 डी कंप्यूटर मॉनीटर पर 3 डी वातावरण कैसे प्रस्तुत किया जाए?
Math.PI
, इसकी बहुत सारी।
2 डी स्प्राइट गेम के लिए, मैं समझ सकता हूं कि स्प्राइट्स एक्स और वाई अक्ष पर चलते हैं। हालांकि, 3 डी गेम के लिए, गेम इंजन कैसे गणना करते हैं कि एक फ्लैट 2 डी कंप्यूटर मॉनीटर पर 3 डी वातावरण कैसे प्रस्तुत किया जाए?
Math.PI
, इसकी बहुत सारी।
जवाबों:
3 डी स्प्राइट्स को एक नया जेड अक्ष मिलता है जो एक्स / वाई विमान में गहराई, स्केलिंग आकार और आंदोलनों को संग्रहीत करता है। एक स्प्राइट जो दूर है, उसका बड़ा Z मान है। अब, स्प्राइट के आकार और X / Y अक्ष को Z अक्ष द्वारा विभाजित करें। जैसा कि अन्य ने उल्लेख किया है, यह एक 3 डी परिप्रेक्ष्य प्रक्षेपण है । यहाँ सबसे अच्छा चित्रण मुझे मिल सकता है:
यह वैचारिक रूप से मायने रखता है क्योंकि दूर की चीजें छोटी दिखती हैं। उनके स्पष्ट आंदोलन भी छोटे दिखते हैं।
इसके अलावा, निकट वस्तुओं को दूर की वस्तुओं के शीर्ष पर खींचा जाना चाहिए। फिर, यह वैचारिक रूप से समझ में आता है क्योंकि पास की वस्तुएं उनके पीछे की वस्तुओं के दृश्य को रोक देती हैं।
इन तकनीकों को स्प्राइट स्तर पर लागू किया जा सकता है। हालांकि, सबसे यथार्थवादी प्रक्षेपण के लिए प्रत्येक स्प्राइट में एक 3 डी मॉडल होता है और इसे पिक्सेल स्तर पर प्रदान किया जाता है।
यह इसी तरह है कि आप हमारी दुनिया की 2 डी तस्वीरों को कैमरे में कैद कर सकते हैं। X, Y और Z निर्देशांक के संदर्भ में 3D वातावरण का वर्णन किया गया है, लेकिन अंततः आपको केवल X और Y अक्ष के साथ 2D स्क्रीन पर मैप करना होगा। यह प्रक्षेपण द्वारा किया जाता है , जहां प्रत्येक 3 डी बिंदु को 2 डी दृश्य विमान पर प्रक्षेपित किया जाता है।
इसे सीधे शब्दों में कहें, तो आप व्यू प्लेन से गुजरते हुए 3 डी स्पेस में वर्चुअल कैमरा से 3 डी स्पेस में जाने वाली प्रोजेक्शन लाइनों की कल्पना कर सकते हैं। वह बिंदु जहां एक प्रक्षेपण रेखा 2 डी विमान को पार करती है वह 3 डी बिंदु का प्रक्षेपण है। ऑर्थोग्राफिक प्रक्षेपण में ये प्रक्षेपण रेखाएं सभी समानांतर हैं; ऑब्जेक्ट और कैमरे के बीच की दूरी अनुमानित आकार के लिए कोई अंतर नहीं रखती है। इस प्रकार का प्रक्षेपण यथार्थवादी नहीं है, लेकिन कुछ उदाहरणों में उपयोगी है जैसे कि 3 डी इंजन (उदाहरण के लिए एचयूडी) का उपयोग करके 2 डी ग्राफिक्स खींचना। दूसरे प्रकार का प्रक्षेपण परिप्रेक्ष्य का प्रक्षेपण है जहाँ ये रेखाएँ अधिक दूर की वस्तुओं को छोटे और अधिक यथार्थवादी परिणाम देती हुई दिखाई देती हैं। इस पृष्ठ में कुछ आंकड़े हैं जो आपको प्रक्रिया की कल्पना करने में मदद कर सकते हैं।
प्रोजेक्शन ग्राफिक्स पाइपलाइन में गुजरने वाली कई परिवर्तन वस्तुओं में से एक है , और आमतौर पर एक प्रक्षेपण मैट्रिक्स का उपयोग करके किया जाता है । ध्यान दें कि हालांकि इसका तात्पर्य यह है कि जेड समन्वय को त्याग देता है, वास्तव में एक परिवर्तित जेड मूल्य अभी भी स्क्रीन की गहराई के माप का उपयोग किया जाता है ताकि हम यह बता सकें कि कौन सी वस्तुएं दिखाई दे रही हैं और कौन सी अन्य वस्तुओं द्वारा घेर ली गई हैं। इसे z- बफरिंग के रूप में जाना जाता है ।
यह सब प्रक्षेपण के बारे में है , एक ज्यामितीय ऑपरेशन जो आपको बेहतर आयाम के एक और स्थान से एक स्थान को परिभाषित करने देता है (मूल रूप से, आपके मामले में, आप एक 3D वातावरण से 2 डी छवि का वर्णन कर रहे हैं)।
सीधे शब्दों में कहें तो यह है कि 3D रेंडरिंग इंजन एक छवि उत्पन्न करता है (एक 3D दृश्य और प्रक्षेपण दिया गया):
परिणामी छवि के प्रत्येक पिक्सेल के लिए
बेशक यह एक सरल मॉडल है, मैं विशेष प्रभाव जैसे परावर्तक / अपवर्तक / पारभासी वस्तुओं के बारे में बात नहीं कर रहा हूँ ...
मैट्रिक्स । या बल्कि, बहुत सारे मैट्रिक्स गणित।
यह बिन बुलाए के लिए डरावना सामान है। आमतौर पर 3 डी 4x4 मैट्रिस शामिल हैं जो अंतरिक्ष में 3 डी निर्देशांक के एक झुंड को स्क्रीन पर 2 डी निर्देशांक में बदलते हैं (जेड के रूप में स्क्रीन में गहराई सहित)।
3 डी मेट्रिक्स 4x4 ग्रिड में व्यवस्थित 16 फ्लोटिंग पॉइंट वैल्यू का एक सेट है। एल्गोरिदम का उपयोग आवश्यक मान उत्पन्न करने के लिए किया जाता है और फिर मैट्रिक्स-वेक्टर गुणा का उपयोग करते हुए, ये संख्याएं 3-आयामी वेक्टर (एक्स, वाई, जेड) को रूपांतरित करती हैं।
[ 1, 0, 0, 0 ]
[ 0, 1, 0, 0 ]
[ 0, 0, 1, 0 ]
[ 0, 0, 0, 1 ]
यह पहचान मैट्रिक्स है। यह अनिवार्य रूप से एक वेक्टर के निर्देशांक के लिए कुछ भी नहीं करता है ।
पहला है दुनिया या मॉडल मैट्रिक्स। यह मैट्रिक्स एक व्यक्तिगत मॉडल (जैसे कि एक टोकरा) को मूल (0, 0, 0) के आसपास मॉडल में ले जाता है और उन्हें विश्व शीर्ष निर्देशांक में बदल देता है। इसमें ऑब्जेक्ट को स्केल करना, इसके मूल के चारों ओर घूमना और अंत में इसे उस स्थान पर ट्रांसलेट करना शामिल हो सकता है, जहां यह दृश्य में स्थित है।
दूसरा मैट्रिक्स व्यू मैट्रिक्स है। यह दुनिया को निर्देशांक लेता है और उन्हें बदल देता है ताकि वे दृश्य के संदर्भ में हों। इस मैट्रिक्स को उत्पन्न करने के लिए आमतौर पर एक कैमरा की अवधारणा का उपयोग किया जाता है।
कैमरे में आमतौर पर एक स्थिति वेक्टर, एक दिशा या लक्ष्य वेक्टर और एक अप वेक्टर होता है। यह अप वेक्टर कैमरे के 'स्पिन' का वर्णन करता है।
इन वैक्टर का उपयोग मैट्रिक्स को देखने के लिए किया जाता है ।
इसका जो प्रभाव है, वह दुनिया के मैट्रिक्स के समान है कि यह अनिवार्य रूप से घूम रहा है और कैमरे के चारों ओर दुनिया को कैमरे में "स्थिति" में बदल रहा है।
एक कैमरा जो एक्स अक्ष के साथ 10 इकाइयां है, दुनिया अनुवाद करेगी दूसरी दिशा में 10 इकाइयों का समन्वय करती है।
पहेली का अंतिम टुकड़ा प्रक्षेपण मैट्रिक्स है। कैमरा की तरह परिप्रेक्ष्य प्रक्षेपण में, मैट्रिक्स एक्स डिग्री के दृष्टिकोण के क्षेत्र के साथ एक परिप्रेक्ष्य का भ्रम देने के लिए लगभग स्क्रीन निर्देशांक को बदल देता है।
यदि आप स्क्रीन के कोनों (640x480 गेम के लिए) के संदर्भ में सोचते हैं, तो यह है कि प्रोजेक्शन स्क्रीन के 2D निर्देशांक के भीतर Z अक्ष के साथ निर्देशांक को "कैसे संरेखित करता है"। ऑर्थोग्राफिक प्रोजेक्शन के लिए, स्क्रीन में जेड अक्ष के साथ कोई स्केलिंग नहीं होती है। परिप्रेक्ष्य के लिए, वस्तु जितनी दूर होगी, वह स्क्रीन के विलुप्त होने के संबंध में उतनी ही छोटी हो जाएगी।