ASCII 3D रेंडरर बनाना
(kciter.so)ASCII 3D रेंडरर को इम्प्लीमेंट करते हुए 3D rendering pipeline के बारे में समझाया गया है
इस लेख का परिणाम ब्लॉग पोस्ट के अलावा नीचे दिए गए लिंक पर भी देखा जा सकता है
GitHub: https://github.com/kciter/ascii-3d-renderer.js
Chromatic: https://6637eb83d047d2bb1b3cfe67-bdnazvfsel.chromatic.com/?path=/story…
- क्या ASCII को 3D जैसा दिखाना संभव है?
- ASCII काफी हद तक बहुत बड़े किए गए श्वेत-श्याम पिक्सेल जैसा होता है
- अक्षरों की घनत्व के अनुसार brightness को नियंत्रित किया जा सकता है
- 3D निर्देशांकों को 2D निर्देशांकों में कैसे बदला जाता है?
- इसे मोटे तौर पर vertex processing, rasterization, और fragment processing के रूप में आगे बढ़ाया जाता है
- 3D निर्देशांकों को vertex कहा जाता है, जिसका अर्थ 3D space में स्थित 'शीर्ष-बिंदु' होता है
- केवल एक vertex से किसी वस्तु को व्यक्त नहीं किया जा सकता, इसलिए कई vertex को इकट्ठा करके वस्तु को दर्शाया जाता है
- वस्तु को व्यक्त करने वाली न्यूनतम इकाई को polygon कहा जाता है
- Vertex processing
- vertex को रूपांतरित करने की प्रक्रिया को vertex processing कहा जाता है
- यह world transform, view transform, और projection transform के क्रम में किया जाता है
- हर transform में matrix का उपयोग करके गणना की जाती है
- world transform का मतलब 3D model file में मौजूद vertex को 3D space में रखना है
- view transform का मतलब camera को स्थापित करना है, यानी किस coordinate से किस viewpoint की ओर वस्तु को देखा जा रहा है, इसकी गणना करना
- projection transform गहराई-बोध दिखाने के लिए किया जाने वाला ऑपरेशन है। आम तौर पर perspective projection का उपयोग किया जाता है।
- projection transform के जरिए 2D space coordinates में बदलना संभव होता है
- Rasterization
- 2D space coordinates को pixel coordinates में बदलने की प्रक्रिया
- इसमें clipping, perspective divide, back-face culling, viewport transform, और scan conversion शामिल होते हैं
- इस लेख में इन कामों को उचित रूप से मिलाकर इम्प्लीमेंट किया गया है
- Fragment processing
- pixel में बदले गए coordinates को प्रोसेस करने की प्रक्रिया
- सामान्य 3D renderer में shader calculations जैसी post-processing की जाती है
- इस लेख में केवल lighting calculation का परिणाम लागू किया गया है
- इम्प्लीमेंटेशन भाग लगभग पूरी तरह source code से बना है, इसलिए इसे सारांश में छोड़ा गया है
3 टिप्पणियां
यह पढ़कर बहुत अच्छा लगा। स्नातक के दौरान ली गई computer graphics की कक्षा की यादें भी ताज़ा हो गईं, अच्छा लगा।
इसे पढ़कर मज़ा आया। कैमरा की position तक ध्यान में रखकर काम किया गया, यह काफ़ी प्रभावशाली था।
बेसिक rendering pipeline की व्याख्या तक है
यह बहुत ही मज़ेदार सामग्री थी।