क्यों ?
क्योंकि, A कैमरा प्रक्षेपण दृश्य को दर्शाता है।
लेकिन 3D कैमरा (वर्चुअल कैमरा) के मामले में, दुनिया के बजाय कैमरा चलता है। मैंने इस जवाब का बाद में विस्तृत विवरण दिया है।
गणितीय रूप से समझना
प्रोजेक्शन दृश्य अंतरिक्ष में घूमता है और इसके अभिविन्यास को बदलता है। ध्यान देने वाली पहली बात यह है कि स्क्रीन पर वांछित प्रक्षेपण दृश्य दिशा के साथ नहीं बदलता है।
इस कारण से, हम वांछित प्रक्षेपण पाने के लिए अन्य चीजों को बदल देते हैं।
Http://opengl.org से समझना
कैमरे को हिलाने की उपस्थिति देने के लिए, आपके ओपनग्ल्ल एप्लिकेशन को कैमरे के परिवर्तन के व्युत्क्रम के साथ दृश्य को स्थानांतरित करना होगा। जहां OpenGL का संबंध है, वहां कोई कैमरा नहीं है। अधिक विशेष रूप से, कैमरा हमेशा आँख के स्थान पर स्थित होता है (0, 0, 0)
Http://open.gl से समझ
इसके अलावा http://open.gl/transformations के मैट्रिक्स मैट्रिक्स भाग से निम्न पंक्तियाँ साझा करना चाहते हैं
एक कैमरा परिवर्तन का अनुकरण करने के लिए, आपको वास्तव में उस परिवर्तन के उलट दुनिया को बदलना होगा। उदाहरण: यदि आप कैमरे को ऊपर ले जाना चाहते हैं, तो आपको इसके बजाय दुनिया को नीचे ले जाना होगा।
परिप्रेक्ष्य से समझना
वास्तविक दुनिया में, हम चीजों को इस तरह से देखते हैं, जिसे "परिप्रेक्ष्य" कहा जाता है।
परिप्रेक्ष्य इस अवधारणा को संदर्भित करता है कि दूर की वस्तुएं उन लोगों की तुलना में छोटी दिखाई देती हैं जो आपके करीब हैं। परिप्रेक्ष्य का अर्थ यह भी है कि यदि आप एक सीधी सड़क के बीच में बैठे हैं, तो आप वास्तव में सड़क की सीमाओं को दो अभिसरण लाइनों के रूप में देखते हैं।
वह परिप्रेक्ष्य है। 3 डी परियोजनाओं में परिप्रेक्ष्य महत्वपूर्ण है। परिप्रेक्ष्य के बिना, 3D दुनिया वास्तविक नहीं लगती है।
हालांकि यह स्वाभाविक और स्पष्ट लग सकता है, यह विचार करना महत्वपूर्ण है कि जब आप कंप्यूटर पर 3 डी रेंडरिंग बनाते हैं तो आप कंप्यूटर स्क्रीन पर एक 3 डी दुनिया का अनुकरण करने का प्रयास कर रहे हैं, जो एक 2 डी सतह है।
कल्पना करें कि कंप्यूटर स्क्रीन के पीछे एक वास्तविक 3D दृश्य है, और आप इसे अपने कंप्यूटर स्क्रीन के "ग्लास" के माध्यम से देख रहे हैं। परिप्रेक्ष्य का उपयोग करते हुए, आपका लक्ष्य कोड बनाना है जो आपकी स्क्रीन के इस "ग्लास" पर "अनुमानित" हो जाता है जैसे कि स्क्रीन के पीछे यह वास्तविक 3 डी दुनिया थी। केवल चेतावनी यह है कि यह 3 डी दुनिया वास्तविक नहीं है ... यह सिर्फ एक 3 डी दुनिया का गणितीय अनुकरण है।
इसलिए, जब 3D में किसी दृश्य का अनुकरण करने के लिए 3D रेंडरिंग का उपयोग किया जाता है और फिर आपकी स्क्रीन की 2D सतह पर 3D दृश्य पेश किया जाता है, तो प्रक्रिया को परिप्रेक्ष्य प्रक्षेपण कहा जाता है।
सहज ज्ञान युक्त कल्पना करके शुरू करें कि आप क्या हासिल करना चाहते हैं। यदि कोई ऑब्जेक्ट दर्शक के करीब है, तो ऑब्जेक्ट को बड़ा होना चाहिए। यदि ऑब्जेक्ट दूर है, तो यह छोटा होना चाहिए। इसके अलावा, यदि कोई वस्तु दर्शक से दूर, सीधी रेखा में यात्रा कर रही है, तो आप चाहते हैं कि वह स्क्रीन के केंद्र की ओर अभिमुख हो, क्योंकि यह दूर तक दूर तक जाती है।
गणित में परिप्रेक्ष्य का अनुवाद
जैसा कि आप निम्नलिखित चित्र में दृष्टांत देखते हैं, कल्पना करें कि कोई वस्तु आपके 3 डी दृश्य में तैनात है। 3 डी दुनिया में, वस्तु की स्थिति को एक्सडब्ल्यू, वाईडब्ल्यू, जेडडब्ल्यू के रूप में वर्णित किया जा सकता है, आंख के बिंदु में मूल के साथ एक 3 डी समन्वय प्रणाली का जिक्र है। यह वह जगह है जहाँ वस्तु को वास्तव में स्क्रीन से परे 3D दृश्य में स्थित किया जाता है।
जैसा कि दर्शक स्क्रीन पर इस ऑब्जेक्ट को देखता है, 3 डी ऑब्जेक्ट को एक्सपी और वाईपी के रूप में वर्णित 2 डी स्थिति के लिए "अनुमानित" किया जाता है, जो स्क्रीन के 2 डी समन्वय प्रणाली (प्रक्षेपण विमान) का संदर्भ देता है।
इन मूल्यों को गणितीय सूत्र में डालने के लिए, मैं विश्व निर्देशांक के लिए एक 3 डी समन्वय प्रणाली का उपयोग करूंगा, जहां x अक्ष दाईं ओर इंगित करता है, y इंगित करता है, और स्क्रीन के अंदर सकारात्मक z अंक। 3D मूल, दर्शक की आंख के स्थान को संदर्भित करता है। तो, स्क्रीन का ग्लास एक विमान ओर्थोगोनल (समकोण पर) z- अक्ष पर है, कुछ z पर जिसे मैं zProj कहूँगा।
आप अनुमानित पदों xP और yP की गणना कर सकते हैं, दुनिया की स्थिति xW और yW को विभाजित करके, zW, जैसे:
xP = K1 * xW / zW
yP = K2 * yW / zW
K1 और K2 ऐसे स्थिरांक हैं जो ज्यामितीय कारकों से प्राप्त होते हैं जैसे कि आपके प्रोजेक्शन प्लेन का पहलू अनुपात (आपका व्यूपोर्ट) और आपकी आंख का "व्यू फील्ड", जो वाइड-एंगल विजन की डिग्री को ध्यान में रखता है।
आप देख सकते हैं कि यह परिवर्तन किस प्रकार परिप्रेक्ष्य का अनुकरण करता है। स्क्रीन के किनारों के पास के बिंदु केंद्र की ओर धकेले जाते हैं क्योंकि आंख (zW) से दूरी बढ़ती है। इसी समय, केंद्र (0,0) के करीब बिंदु आंख से दूरी से बहुत कम प्रभावित होते हैं और केंद्र के करीब रहते हैं।
Z द्वारा यह विभाजन प्रसिद्ध "परिप्रेक्ष्य विभाजित है।"
अब, विचार करें कि 3D दृश्य में किसी ऑब्जेक्ट को वर्टिकल की श्रृंखला के रूप में परिभाषित किया गया है। तो, ज्यामिति के सभी कोने में इस तरह के परिवर्तन को लागू करने से, आप प्रभावी रूप से यह सुनिश्चित करते हैं कि जब यह आंख बिंदु से दूर होगा तो वस्तु सिकुड़ जाएगी।
अन्य महत्वपूर्ण मामले
- 3D कैमरा (वर्चुअल कैमरा) के मामले में, दुनिया के बजाय कैमरा चलता है।
3 डी कैमरों की बेहतर समझ पाने के लिए, कल्पना करें कि आप एक फिल्म की शूटिंग कर रहे हैं। आपको एक दृश्य सेट करना होगा जिसे आप शूट करना चाहते हैं और आपको एक कैमरा चाहिए। फुटेज प्राप्त करने के लिए, आप अपने कैमरे के साथ दृश्य के माध्यम से घूमेंगे, दृश्य में वस्तुओं को विभिन्न कोणों और बिंदुओं से शूट करेंगे।
एक ही फिल्मांकन प्रक्रिया एक 3D कैमरे के साथ होती है। आपको "वर्चुअल" कैमरा चाहिए, जो आपके द्वारा बनाए गए "वर्चुअल" दृश्य में घूम सकता है।
दो लोकप्रिय शूटिंग शैलियों में एक चरित्र की आंखों के माध्यम से दुनिया को देखना शामिल है (जिसे पहले व्यक्ति कैमरा के रूप में भी जाना जाता है) या एक चरित्र पर कैमरे की ओर इशारा करते हुए और उन्हें ध्यान में रखते हुए (तीसरे व्यक्ति के कैमरे के रूप में जाना जाता है)।
यह एक 3D कैमरे का मूल आधार है: एक आभासी कैमरा जिसे आप एक 3D दृश्य में घूमने के लिए उपयोग कर सकते हैं, और एक विशिष्ट दृष्टिकोण से फुटेज को प्रस्तुत कर सकते हैं।
विश्व स्थान और दृश्य स्थान को समझना
इस तरह के व्यवहार को कोड करने के लिए, आप कैमरे के दृष्टिकोण से 3D दुनिया की सामग्री को प्रस्तुत करेंगे, न कि केवल दुनिया के समन्वय प्रणाली के दृष्टिकोण से, या किसी अन्य निश्चित दृष्टिकोण से।
सामान्यतया, एक 3D दृश्य में 3D मॉडल का एक सेट होता है। मॉडल को अपने स्वयं के समन्वय प्रणाली के संदर्भ में वर्टिकल और त्रिकोण के एक सेट के रूप में परिभाषित किया गया है। वह स्थान जिसमें मॉडल परिभाषित किए जाते हैं, मॉडल (या स्थानीय) स्थान कहलाता है।
मॉडल ऑब्जेक्ट्स को 3D दृश्य में रखने के बाद, आप "वर्ल्ड ट्रांस्फ़ॉर्म" मैट्रिक्स का उपयोग करके इन मॉडलों के कोने को बदल देंगे। प्रत्येक ऑब्जेक्ट की अपनी विश्व मैट्रिक्स होती है जो परिभाषित करती है कि ऑब्जेक्ट दुनिया में कहां है और यह कैसे उन्मुख है।
इस नई संदर्भ प्रणाली को "विश्व स्थान" (या वैश्विक स्थान) कहा जाता है। इसे प्रबंधित करने का एक सरल तरीका प्रत्येक वस्तु के लिए एक विश्व परिवर्तन मैट्रिक्स को संबद्ध करना है।
3D कैमरे के व्यवहार को कार्यान्वित करने के लिए, आपको अतिरिक्त चरण करने होंगे। आप विश्व का संदर्भ देंगे - विश्व की उत्पत्ति के लिए नहीं - बल्कि स्वयं 3D कैमरे के संदर्भ प्रणाली के लिए।
एक अच्छी रणनीति में कैमरे को 3 डी दुनिया में वास्तविक 3 डी ऑब्जेक्ट के रूप में माना जाता है। किसी भी अन्य 3 डी ऑब्जेक्ट की तरह, आप 3 डी दुनिया में वांछित स्थिति और अभिविन्यास पर कैमरा लगाने के लिए "विश्व परिवर्तन" मैट्रिक्स का उपयोग करते हैं। यह कैमरा वर्ल्ड ट्रांसफॉर्म मैट्रिक्स मैट्रिक्स को ऑब्जेक्ट को वास्तविक (xc, yc, zc) स्थिति और विश्व रोटेशन के लिए, आगे (Z- अक्ष के साथ) घूमते हुए, मूल से बदल देता है।
निम्नलिखित आंकड़ा विश्व (x, y, z) समन्वय प्रणाली और दृश्य (कैमरा) (x ', y', z ') समन्वय प्रणाली के बीच संबंधों को दर्शाता है।