रेखाओं के साथ 3 डी दुनिया कैसे बनाएं, एक स्केच ड्राइंग या कार्टून की तरह


9

एक स्याही बनाने पर विचार करें, जिसमें कोई छायांकन न हो और सभी रेखाएँ समान वजन वाली हों - जैसे कि आप स्ट्रोब कॉमिक में देखते हैं जैसे दिलबर्ट। यह एक सक्रिय 3 आयामी दुनिया का प्रतिनिधित्व करता है, लेकिन वस्तुओं में बनावट नहीं होती है, फिर भी आप या तो त्रिकोणीय त्रिकोण नहीं देखते हैं।

एक उदाहरण के लिए चंद्रमा की सतह को आकर्षित करने पर विचार करें। आपके द्वारा खींची जाने वाली रेखाएं पहाड़ियों के ऊपरी किनारे के साथ होंगी, जहां वे सतह के सामान्य स्तर से मिलती हैं। उन लोगों के पीछे आप दूरी में, बड़ी पहाड़ियों के लिए भी ऐसा ही करेंगे, और इसके पीछे क्षितिज जो दिखाई दे रहा था। क्रेटर्स के लिए, आप बाहरी किनारे के लिए एक निकट सर्कल, और आंशिक रूप से नकाबपोश, निचले किनारे के लिए एक सर्कल बना सकते हैं। बोल्डर के किनारे के चारों ओर एक लाइन होगी, और प्रमुख दृश्यमान किनारों के साथ। अंतरिक्ष यात्रियों के बाहरी किनारे के साथ एक रेखा होगी, और उनके अंतरिक्ष सूट की प्रमुख विशेषताएं होंगी।

मैं एक अनुभवी प्रोग्रामर हूं लेकिन 3 डी प्रोग्रामिंग के लिए नया हूं। मैं एक खेल के बारे में सोच नहीं सकता जो इस तरह दिखता है - यह किया गया है? और कोई इसे कैसे करेगा? दो समस्याएं दिमाग में आती हैं - महत्वपूर्ण किनारों को खोजना, और इसे चित्रित करना। क्या एक नियमित 3 डी इंजन के बजाय, लाइनों के आधार पर, मैट्रिसेस से कोडित "इंजन" की आवश्यकता होगी?


मैं आपको केवल चेतावनी देना चाहता हूं कि मनुष्य 3D स्क्रीन पर 3 डी को समझने में अच्छा नहीं है, इसलिए छायांकन को दूर करना, जो एक दृश्य की गहराई को समझने के लिए एक बहुत ही महत्वपूर्ण हिस्सा है, 3 डी पर भरोसा करने वाले गेम में अच्छा काम नहीं कर सकता है। गेमप्ले
जेफ

Okami, कुछ साल वापस पीएस 2 के लिए जारी - वहाँ एक खेल है कि शैली आप का वर्णन कर रहे हैं फिट बैठता है en.wikipedia.org/wiki/%C5%8Ckami
Eran गैल्पेरिन

1
अच्छा, मैं खुद ऐसा करने के बारे में सोच रहा हूं। मुझे लगता है कि आप कुछ प्रकार के सीएल छायांकन का उपयोग करना चाहते हैं , हालांकि सिर्फ लाइनें नहीं।
MPnk121

जवाबों:


11

मौलिक रूप से, आप जिस बारे में बात कर रहे हैं वह एज-फाइंडिंग है, और कई गेम हैं जो इसे करते हैं, विभिन्न तरीकों से।

संभवतः पहला सेट जेट सेट रेडियो (पश्चिम में "जेट पीस रेडियो" के रूप में जारी किया गया था)। केवल एक या दो महीने बाद जारी किया गया वह खेल था जिसके लिए मैंने एक समान रेंडरिंग तकनीक विकसित की थी: लूनी ट्यून्स: स्पेस रेस । (स्पेस रेस पर, हमने एक समान लाइन मोटाई बनाए रखने के लिए अपना सर्वश्रेष्ठ प्रदर्शन किया, जबकि जेट सेट रेडियो ने असमान लाइन चौड़ाई को अपनी दृश्य शैली का एक बड़ा हिस्सा बनाया)।

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

इस प्रभाव को प्राप्त करने के लिए एनवीडिया और एटीआई के पास कई अन्य तरीके हैं, ज्यादातर पिक्सेल शेड्स के चारों ओर घूमते हैं, जो मानक की तलाश में हैं जो प्रत्येक पिक्सेल के लिए कैमरा-टू-पिक्सेल वेक्टर के लंबवत हैं, लेकिन इन सभी में बहुत उच्च-रिज़ॉल्यूशन मेष की आवश्यकता होती है, और असंगत उत्पादन करते हैं व्यवहार में लाइन की चौड़ाई। मुझे नहीं पता कि क्या कोई गेम वास्तव में इस प्रकार का उपयोग करता है; मुझे नहीं लगता कि मैंने ऐसा कोई देखा है जो इन कंपनियों के नमूनों की तरह दिखता है।

मैं आपको ड्रैगन की खोह 3 डी में भी इंगित करूंगा , जो कि एकमात्र ऐसा खेल है जिसके बारे में मुझे पता है कि वास्तव में यह ठीक से हो रहा है; एक मॉडल में प्रत्येक बहुभुज के लिए कैमरा-टू-बहुभुज और बहुभुज के सामान्य का डॉट उत्पाद लेना यह देखने के लिए कि क्या प्रत्येक बहुभुज कैमरे से दूर या दूर है, और फिर कनेक्टेड बहुभुज के सभी जोड़े की जांच कर रहा है; यदि बहुभुज की कोई भी जोड़ी एक किनारे साझा करती है, और एक बहुभुज कैमरा का सामना करता है और एक बहुभुज नहीं करता है, तो यह स्क्रीन-स्पेस में उस किनारे के साथ एक पतली, निरंतर-चौड़ाई रेखा खींचता है। (मैं स्पेस रेस के लिए ड्रीमकास्ट पर इस काम को तेजी से नहीं कर सकता था, या मैंने इसका इस्तेमाल किया होगा। आज, आधुनिक कंप्यूटरों पर, यह पूरी तरह से इस प्रभाव को करने की कोशिश कर रहा है, भले ही यह हो '

ड्रैगन की लैयर 3 डी भी एकमात्र ऐसा गेम है जिसके बारे में मुझे पता है कि वास्तव में अलग-अलग रंग के क्षेत्रों के बीच या वर्टेक्स-नॉर्मल डिसकंटीनिटीज़ के बीच की रेखाएँ खींचता है, भले ही वहाँ खोजने के लिए कोई सिल्हूट किनारे न हो। मुझे संदेह है कि उनके पास एक कस्टम टूल था जो उनके कलाकारों को बहुभुज किनारों को हमेशा एक पंक्ति प्राप्त करने के लिए नामित करने की अनुमति देता था।

ओकामी , जिसे कुछ अन्य लोगों द्वारा उल्लिखित किया गया है, जेट सेट रेडियो और स्पेस रेस के समान एक डबल-रेंडर वर्टेक्स-पुश दृष्टिकोण का उपयोग करता प्रतीत होता है, लेकिन यह उन बनावटों का भी उपयोग करता है जो ब्रश कला शैली का उपयोग करके बनाए गए हैं। (दूरी में पहाड़ियों, उदाहरण के लिए, एक बनावट में ब्रश स्ट्रोक के रूप में तैयार किया जाता है जो एक मानक क्वाड के रूप में तैयार किया जाता है)। ओकामी प्यारी है, लेकिन मुझे नहीं लगता कि यह वास्तव में उस तकनीक पर छूती है जिसके बारे में आप पूछ रहे हैं; निश्चित रूप से, यह अपने प्रभाव के लिए पुराने दृष्टिकोण का उपयोग कर रहा है।

अब, आपके मामले में, आप रंग भरने के बिना ऐसा करने के बारे में पूछ रहे हैं, केवल लाइनों के साथ दुनिया को आकर्षित कर रहे हैं। यह करना आसान है; बस प्रकाश के बिना सभी बहुभुज आकर्षित करें, और एक ही निरंतर रंग में जो पृष्ठभूमि रंग से मेल खाता है। इनमें से कोई भी दृष्टिकोण आपके गेम इंजन को बिल्कुल भी बदले बिना उस दृष्टिकोण का उपयोग करके काम करना चाहिए। यह वास्तव में पृष्ठभूमि के "बहुभुज" के रूप में उन "समान रंग" को आकर्षित करने के लिए महत्वपूर्ण है, क्योंकि वे पृष्ठभूमि के किनारों को अग्रभूमि वस्तुओं के माध्यम से दिखाने से रखेंगे, जो बहुत जल्दी भ्रमित हो सकते हैं।


+1 शानदार उत्तर, सिद्धांत और दिलचस्प उदाहरण दोनों
Maik Semder

बहुत बढ़िया जवाब, आपका समय इसे लिखने के लिए धन्यवाद।
हंसमुख बोग

1

आप जिस बारे में बात कर रहे हैं वह गैर-फोटोरिलेस्टिक प्रतिपादन (उर्फ एनपीआर) है। एक realtime 3 डी खेल में कि टुकड़ा / पिक्सेल shaders का उपयोग किया जाता है।

कुछ उदाहरण देखने के लिए यहां स्क्रॉल करें: http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.