दिलचस्प पोस्ट
Chrome में मुद्रण करते समय href मान को निकालना आवश्यक है कैसे जांच करें कि "android.permission.PACKAGE_USAGE_STATS" की अनुमति दी जाती है? मैं jQuery में क्रमबद्ध फॉर्म डेटा को कैसे संशोधित करूं? पायथन में परिपत्र सूची इटरेटर रिपोर्ट प्रदान करने और रद्दीकरण करने में सक्षम होने पर डब्ल्यूपीएफ पृष्ठभूमि में कार्य को कैसे निष्पादित करें? गतिशील अग्रेषण: अपूर्ण क्रियान्वयन चेतावनी को दबाएं फेसबुक ग्राफ़ एपीआई, उपयोगकर्ताओं को ईमेल कैसे प्राप्त करें? Make_unique / make_shared के माध्यम से initializer_list निर्माता कॉलिंग संदर्भ जावास्क्रिप्ट बिना वस्तु क्लोन करें नए देशांतर की गणना, पुराने + एन मीटर से अक्षांश BigQuery में पिवट को कैसे स्केल करना? स्रोत का उपयोग कैसे करें: फ़ंक्शन () … और AJAX में JQuery UI स्वत: पूर्ण जावा एफएक्स 2 और अंतर्राष्ट्रीयकरण नकारात्मक मूल्यों के साथ मॉड्यूलो ऑपरेटर सभी वर्ग चयनकर्ताओं के साथ शुरू करें?

गणितीय रूप से एक सरल ग्राफिक्स पाइपलाइन की गणना

मैं ग्राफ़िक पाइपलाइन में आवश्यक सभी मूल गणितीय संगणनाओं को समझने / समझने की कोशिश कर रहा हूं, जैसे कि वीआरएमएल जैसी एक 3D दृश्य विवरण से एक साधारण 2 डी छवि को प्रस्तुत करना। मॉडल रूपांतरण (ऑब्जेक्ट को दुनिया के समन्वय के लिए निर्देशांक) की तरह, आवश्यक कदमों का एक अच्छा उदाहरण है, देखने के अंदर ऑब्जेक्ट के स्क्रीन निर्देशांकों की गणना , प्रकाश व्यवस्था, क्लिपिंग के लिए शीर्ष नॉर्मल की गणना , रूपांतरण के लिए देखें (समन्वय को देखने के लिए विश्व समन्वय से) देखें निराश और रंगों के साथ व्यक्तिगत पिक्सेल की गणना करने के लिए 2 डी प्रोजेक्शन बनाना

Solutions Collecting From Web of "गणितीय रूप से एक सरल ग्राफिक्स पाइपलाइन की गणना"

मुझे OpenGL शैली को गणित प्रस्तुत करने के लिए उपयोग किया जाता है, इसलिए मैं इसे चिपकाता हूं (सभी रेंडर लगभग एक ही गणित का उपयोग करते हैं)

पहले कुछ थर्मल को समझाने के लिए:

  1. मैट्रिक्स रूपांतरण करें

    3 डी अंतरिक्ष में एक समन्वय प्रणाली का प्रतिनिधित्व करता है

    double m[16]; // it is 4x4 matrix stored as 1 dimensional array for speed m[0]=xx; m[4]=yx; m[ 8]=zx; m[12]=x0; m[1]=xy; m[5]=yy; m[ 9]=zy; m[13]=y0; m[2]=xz; m[6]=yz; m[10]=zz; m[14]=z0; m[3]= 0; m[7]= 0; m[11]= 0; m[15]= 1; 

    कहा पे:

    • X(xx,xy,xz) जीसीएस (वैश्विक समन्वय प्रणाली) में X अक्ष का यूनिट वेक्टर है
    • Y(yx,yy,yz) जीसीएस में Y अक्ष के इकाई सदिश है
    • Z(zx,zy,zz) जीसीएस में Z अक्ष का इकाई वेक्टर है
    • P(x0,y0,z0) जीसीएस में प्रतिनिधित्व समन्वय प्रणाली का मूल है

    परिवर्तन मैट्रिक्स का इस्तेमाल जीसीएस और एलसीएस (स्थानीय समन्वय प्रणाली) के बीच समन्वयित करने के लिए किया जाता है।

    • जीसीएस -> एलसीएस: Al = Ag * m;
    • जीसीएस <- एलसीएस: Ag = Al * (m^-1);
    • Al (x,y,z,w=1) एलसीएस में 3 डी बिंदु है … समरूप निर्देशांक में
    • Ag (x,y,z,w=1) जीसीएस में 3 डी बिंदु है … समरूप निर्देशांक में

    समरूप समन्वय w=1 जोड़ा जाता है, इसलिए हम 4×4 मैट्रिक्स द्वारा 3 डी वेक्टर गुणा कर सकते हैं

    • m परिवर्तन मैट्रिक्स
    • m^-1 इनवर्ज़ ट्रांसफ़ॉर्मेशन मैट्रिक्स

ज्यादातर मामलों में m ओथोनोर्मल होता है जिसका अर्थ है X,Y,Z वैक्टर एक दूसरे से लंबवत होते हैं और यूनिट साइज के साथ यह घुमाव, अनुवाद आदि के बाद मैट्रिक्स सटीकता की बहाली के लिए इस्तेमाल किया जा सकता है।

अधिक जानकारी के लिए 4×4 समरूप परिवर्तन मैट्रिक्स को समझना देखें

  1. मैट्रिक्स रेंडर करें

    आमतौर पर इन मैट्रिक्स का उपयोग किया जाता है:

    • model – वास्तविक गाया वस्तु समन्वय प्रणाली का प्रतिनिधित्व करता है
    • view – कैमरा समन्वय प्रणाली का प्रतिनिधित्व करता है ( Z अक्ष दृश्य दिशा है)
    • modelview – मॉडल और दृश्य एक साथ गुणा
    • normalx0,y0,z0 = 0 वेक्टर के समान है लेकिन सामान्य वेक्टर कम्प्यूटेशंस के लिए x0,y0,z0 = 0
    • texture – आसान बनावट एनीमेशन और प्रभाव के लिए बनावट निर्देशांक को हेरफेर करना आमतौर पर एक इकाई मैट्रिक्स है
    • projection – कैमरे के दृश्य ( परिप्रेक्ष्य , अर्थ, …) के अनुमानों का प्रतिनिधित्व करते हैं, इसमें इसके बजाय किसी भी रोटेशन या अनुवाद को इसके बजाय कैमरा सेंसर अंशांकन की तरह शामिल नहीं होना चाहिए (अन्यथा कोहरे और अन्य प्रभाव विफल होंगे …)
  2. प्रतिपादन गणित

    3 डी दृश्य को प्रस्तुत करने के लिए आपको 2 डी रेंडरिंग रूटीन की आवश्यकता होती है जैसे कि 2 डी टैक्टेक्ट त्रिकोण को खींचें … रेंडर 3 डी दृश्य डेटा 2 डी पर धर्मान्तरित करता है और इसे रेडर करता है। वहाँ अधिक तकनीकें हैं लेकिन सबसे सामान्य सीमा के मॉडल प्रतिनिधित्व + सीमा रेंडरिंग (केवल सतह) का उपयोग 3 डी -> 2 डी रूपांतरण प्रक्षेपण (ऑर्थोगोनल या परिप्रेक्ष्य) और जेड-बफर या जेड-सॉर्टिंग द्वारा किया जाता है।

    • ज़ेड-बफर अब-दिन जीएफएक्स एचडब्ल्यू के लिए आसान और मूल है
    • Z- सॉर्टिंग इसके बजाय सीपीयू द्वारा किया जाता है ताकि इसकी धीमी हो और अतिरिक्त मेमोरी की आवश्यकता हो लेकिन यह सही पारदर्शी सतहों के लिए आवश्यक है।

तो पाइप लाइन इस प्रकार है:

  1. मॉडल से वास्तविक गाया डेटा प्राप्त करें

    • वर्टेक्स v
    • सामान्य n
    • बनावट समन्वय
    • रंग, कोहरा समन्वय आदि …
  2. इसे उपयुक्त स्थान में परिवर्तित करें

    • v=projection*view*model*v … कैमरा अंतरिक्ष + प्रोजेक्शन
    • n=normal*n … वैश्विक स्थान
    • t=texture*t … बनावट अंतरिक्ष
  3. क्लिप डेटा को स्क्रीन पर

    यह कदम जरूरी नहीं है लेकिन गति के लिए स्क्रीन सामग्री को रेंडर करने से रोकता है और कल्लन का सामना आम तौर पर यहां किया जाता है। अगर गाया 'त्रिकोण' के सामान्य वेक्टर के विपरीत है तो बहुभुज घुमावदार नियम सेट तो 'त्रिभुज' की उपेक्षा करें

  4. 3 डी / 2 डी डेटा प्रस्तुत करना

    स्क्रीन के लिए केवल vx,vy निर्देशांक का उपयोग vx,vy और z-बफर परीक्षण / मूल्य के लिए vz भी यहां परिप्रेक्ष्य अनुमानों के लिए परिप्रेक्ष्य विभाजन चला जाता है

    • vx/=vz,vy/=vz

    Z-बफर इस तरह काम करता है: Z-बफर ( ज़ेड ) स्क्रीन के रूप में एक ही आकार (रिज़ॉल्यूशन) के साथ 2 डी सरणी है ( scr ) किसी भी पिक्सेल scr[y][x] केवल तभी प्रदान की जाती है if (zed[y][x]>=z) उस स्थिति में if (zed[y][x]>=z) scr[y][x]=color; zed[y][x]=z; scr[y][x]=color; zed[y][x]=z; यदि स्थिति अलग हो सकती है (यह अस्थिर है)

यहां अधिक स्पष्टता के लिए यह कैसा दिखता है:

3D रेंडरिंग

[टिप्पणियाँ]

परिवर्तन मैट्रिक्स गुणात्मक हैं, इसलिए यदि आपको N मैट्रिक्स द्वारा N अंक बदलने की ज़रूरत है तो आप एकल matrix = m1*m2*...mM बना सकते हैं और केवल इस परिणामी matrix (गति के लिए) से N अंक कन्वर्ट कर सकते हैं। कभी-कभी 3x3 ट्रांसफ़ॉर्म मैट्रिक्स + 4x4 मैट्रिक्स के बजाय shift vector उपयोग किया जाता है। यह कुछ मामलों में तेज़ है लेकिन आप अधिक परिवर्तनों को एक साथ इतनी आसानी से बढ़ा नहीं सकते हैं। परिवर्तन मैट्रिक्स मैनिप्युलेशन के लिए बुनियादी परिचालन जैसे घुमाएँ या अनुवाद करें, वहां भी एलसीएस के अंदर घुमाव के लिए मैट्रिक्स हैं जो कि मानव नियंत्रण इनपुट के लिए अधिक उपयुक्त हैं लेकिन ये ओपनजीएल या डायरेक्टएक्स जैसे रेंडर करने के लिए मूल नहीं हैं। (क्योंकि वे उलटा मैट्रिक्स का उपयोग करते हैं)

आप कंप्यूटर कंप्यूटर ग्राफिक्स: सिद्धांतों और अभ्यास – तीसरे संस्करण ह्यूजेस एट अल द्वारा पुस्तक से एक अध्याय 15 देख सकते हैं। यह अध्याय

रे-कास्टिंग और रास्टराइज़ेशन एल्गोरिदम को प्राप्त करता है और फिर सॉफ्टवेयर रे-ट्रेसर, सॉफ्टवेयर रास्टरिज़र और हार्डवेयर-त्वरित रास्टराइजेशन रेंडरर के लिए पूर्ण स्रोत कोड बनाता है।