दिलचस्प पोस्ट
अद्वितीय (गैर दोहराए जाने) वर्णों के साथ एक शब्द से मेल करने के लिए regex पायथन में व्हाटस्पेस पर स्प्लिट स्ट्रिंग (! + ) ] … समझाएं कि यह क्यों काम करता है रेगेक्स – पूरे स्ट्रिंग से मिलान करें विंडोज़ फोन के लिए स्थानीय एसक्यूएल डेटाबेस समर्थन 7 अमूर्त वर्ग और पायथन में इंटरफ़ेस के बीच अंतर फ्लेक्सबॉक्स में समान ऊंचाई कॉलम को अक्षम कैसे करें? NoClassDefFoundError जब GoogleAnalyticsTracker.getInstance () JQuery का उपयोग करते हुए मैं एक टेक्स्टबॉक्स का मान कैसे प्राप्त करूं? उद्देश्य- सी (जेएसओएन फ्रेमवर्क, वाईएजेएल, टचजसन, आदि) के लिए JSON पार्सर की तुलना बंडलों का उपयोग करते हुए एंड्रॉइड गतिविधियों के बीच आप छवियों (बिटमैप) को कैसे पारित करते हैं? मैं एक लॉगिन फॉर्म कैसे बंद कर सकता हूं और मेरा आवेदन बंद होने के बिना मुख्य फॉर्म कैसे दिखा सकता हूं? Laravel जांचें कि संबंधित मॉडल मौजूद है 22.0.4 से एंड्रॉइड एसडीके टूल अपडेट करें 22.0.4 (नवीनतम संस्करण) ट्रेस फ़ाइल खोलने में त्रुटि: ऐसा कोई फ़ाइल या निर्देशिका (2)

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

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

वेब के समाधान से एकत्रित समाधान "गणितीय रूप से एक सरल ग्राफिक्स पाइपलाइन की गणना"

मुझे 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 देख सकते हैं। यह अध्याय

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