धमाका से रियलिस्टिक कैमरा / स्क्रीन शेक


36

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

किसी को भी एक अच्छा कैमरा मिलाते हुए पैटर्न के बारे में पता है?


2
विस्फोटों के बाद कैमरा शेक के कुछ फिल्म फुटेज खोजने की कोशिश करें और इसे धीमी गति में देखें कि कैमरा कैसे हिलता है और उस पर आपके कोड को आधार बनाता है।
स्किज़

मुझे ठीक वैसी ही समस्या है - डगमगाने में बस बहुत चिकनी लगती है
इयान

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

जवाबों:


35

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

http://mrl.nyu.edu/~perlin/doc/oscar.html में शोर उत्पन्न करने के लिए अधिक विवरण और नमूना कोड है।


3
ओह, शोर, मैंने ऐसा क्यों नहीं सोचा ... एक धमाके के बाद मैं बहुत कम शोर की आवाज है, है ना ... उत्कृष्ट विचार!
बाज़

अच्छा विचार है, क्या कुछ है जिसे आप हल करने के लिए पर्लिन शोर का उपयोग नहीं कर सकते हैं? : P
Cubed2D

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

17

यदि आप एक विस्फोट से उस जज स्क्रीनिंग शेक का उल्लेख कर रहे हैं, तो मैंने इसे अपने प्रोटोटाइप गेम में लागू करने की कोशिश की है (यह 2 डी है लेकिन मुझे 3 डी में अच्छी तरह से अनुवाद करना चाहिए, मुझे उम्मीद है)। यूट्यूब वीडियो पर एक नज़र डालें और देखें कि क्या आप देख रहे हैं - स्क्रीन शेक लगभग 1:35 बंद है

वैसे भी, मैंने जिस तरह से इसे हासिल किया वह था, सेंस के लिए एक व्यूपोर्ट बनाना और केंद्र बिंदु ( centre) को स्टोर करना ।

जब एक विस्फोट बंद होता है, तो मैं radius~ 30px का एक यादृच्छिक बनाता हूं । मैं फिर centreएक यादृच्छिक दिशा में इस कई पिक्सेल से व्यूपोर्ट को ऑफसेट करता हूं ।

प्रत्येक बाद के अपडेट के लिए (स्क्रीन पर ड्रॉ के बीच), मैं radius10-20% कम कर देता हूं और centreफिर से इस कई पिक्सल के व्यूपोर्ट को ऑफसेट करता हूं । हालांकि, इस ऑफसेट के लिए एक यादृच्छिक कोण चुनने के बजाय, मैं इसके बजाय पिछले व्यूपोर्ट कोण को लेता हूं centreऔर इसमें 180 +/- 60 डिग्री जोड़ दिया।

इसलिए मूल रूप से, प्रत्येक अपडेट (या 10-20 सेमी या तो), मैं centreस्क्रीन से पिक्सेल की कम संख्या से व्यूपोर्ट को ऑफसेट करता हूं ।

यहाँ कुछ छद्मकोश हैं:

viewportCentre = (400,300) //Lets say screen size is 800 x 600
radius = 30.0
randomAngle = rand()%360
offset = ( sin(randomAngle) * radius , cos(randomAngle) * radius) //create offset 2d vector
viewport.setCentre(viewportCentre + offset) // set centre of viewport
draw()  

while(true)  //update about every 10-20ms
{ 
    radius *=0.9 //diminish radius each frame
    randomAngle +=(180 +\- rand()%60) //pick new angle 
    offset = (sin(randomAngle) * radius , cos(randomAngle) * radius) //create offset 2d vector
    viewport.setCentre(viewportCentre + offset) //set centre of viewport
    draw() //redraw
}

जब त्रिज्या 2.0 से कम हो जाता है, तो मैं आमतौर पर स्क्रीन शेक को रोक देता हूं, जिस बिंदु पर मैं व्यूपोर्ट को वापस रीसेट करता हूं centre


4
मुझे यह कार्यान्वयन बहुत पसंद है, छोटे 2 डी गेम के लिए पूरी तरह से काम करता है। एक टिप्पणी के रूप में यह randomAngle += (150 + rand()%60)किसी भी +/- समस्याओं से छुटकारा पाने के लिए करने के बराबर है।
Krøllebølle

2
आपका वीडियो नीचे है।
तारा

"+/-" की किस तरह की गणना? मैंने कभी इस तरह का सामान नहीं देखा।
यो मात्सु

4

एक कैमरा शेक बनाने के लिए "फील" सही गति की दिशा के बारे में कम और त्वरण घटता के बारे में अधिक है।

कैमरा हिला एनीमेशन के दायरे में गोता लगा रहे हैं और इसलिए कार्रवाई / प्रतिक्रिया के सभी नियम लागू होते हैं। यदि आप बिंदु से बिंदु तक एक रैखिक फैशन में बढ़ रहे हैं तो यह एक समान प्रभाव की तरह चिकनी और एक समान महसूस करेगा।

यदि आप अपना सिर आगे और पीछे हिलाते हैं, तो आप देखेंगे कि यह दिशा बदलने के बीच मध्य बिंदु पर सबसे तेज चलता है और प्रत्येक तरफ धीमा हो जाता है क्योंकि आपको पहले हटाना है और फिर नई दिशा में शुरू करना है।

आपकी गति पर लागू होने के लिए विभिन्न आसान कार्यों की एक सूची यहां दी गई है । आप इसे और अधिक अचानक महसूस करने के लिए केवल EaseOut पहला प्रस्ताव चाहते हैं, और फिर EaseInOut को बाकी को सिर / कैमरा आंदोलन अनुकरण कर सकते हैं।


1
मुझे लगता है कि सहजता अभी भी इसे सुचारू बनाएगी। पेर्लिन का शोर एक अच्छे विचार की तरह प्रतीत होता है, या अन्यथा रैंडम रेंज के साथ एक सादा रैंडम रेंज कम हो जाती है, जो समय के साथ कम हो जाती है ताकि यह फीका हो जाए (मैं वास्तविक आंदोलन की तुलना में घटते त्रिज्या पर अलग-अलग आसानी से काम करूँगा, आंदोलन को आसान बना दूंगा। खुद ही कैमरे को ऐसा महसूस कराएगा कि यह वसंत पर है, मेरे अनुभव में कैमरा शेक के साथ सही नहीं लगता है)।
काज

3

wkerslake सही है, कैमरा शक्स आपके विचार से अधिक जटिल प्रतीत होते हैं।

एक हिलते हुए कैमरे का अनुकरण करते समय आपको सोचना होगा कि आप किस प्रकार के कैमरा (ऑपरेटर) की नकल करना चाहते हैं। कैमरे का वजन जड़ता को प्रभावित करता है, जैसे। भारी कैमरे छोटे 'यादृच्छिक' आंदोलनों को सुचारू करते हैं। एक रेल या कार पर एक कैमरा ऑपरेटर अतिरिक्त शोर जोड़ता है।

पेरलिन या सिम्पलेक्स शोर का उपयोग करना निश्चित रूप से एक विकल्प है, तो यह सभी विभिन्न शोर अनुपातों के बीच सही संतुलन खोजने के बारे में है। लेकिन मैंने पाया कि मूल्यों के बीच प्रक्षेप का उपयोग कम कम्प्यूटेशनल रूप से गहन है और उतना ही प्रभावी हो सकता है।

कुछ समय पहले, मुझे एक माया स्क्रिप्ट मिली है, जो बहुत सी चीज़ों को सही लगती है। आप पर एक नज़र ले सकता है कि

इसके अलावा, आप ग्रैन टूरिज्मो (5) पर एक नज़र डालना चाहते हैं , उनकी टीम ने विभिन्न प्रकार के रियलटाइम कैमरा हिलाते हुए एक प्रभावशाली काम किया जब आप खेल में एक रिप्ले देखते हैं।


2

यदि आपको डायनामिक ऑब्जेक्ट भौतिकी मिली है [संभवत: सही शब्द नहीं है, लेकिन मेरे कहने का अर्थ है], जहां कोई भी वस्तु तय नहीं की गई है तो विस्फोट से 'उड़ा दिया जाएगा', आप कैमरे को एक वस्तु के रूप में प्रभावित कर सकते हैं।
केवल अंतर केवल कैमरे के रोटेशन / पिच / yaw / रोल को बदल देगा, और स्थिति नहीं।
इसके अलावा, शायद एक यादृच्छिक संख्या अनुक्रम उत्पन्न करते हैं और उन्हें किसी भी तरह घुमाते हैं? सोचें कि ऊंचाई, ग्रेस्केल सामान एक उदाहरण हो सकता है; वे पूरी तरह से अलग नहीं हैं, लेकिन यादृच्छिक हैं।


+1 दिलचस्प विचार, मुझे लगता है कि मैं शोर आंदोलन की कोशिश करूँगा, और जब मुझे वह मिल जाएगा, तो मैं एक अधिक स्मूथ डौली प्रभाव जोड़ने की कोशिश करूँगा, जैसे कि कैमरा एक स्प्रिंग से जुड़ा था और पीछे की तरफ दबाया गया था झटके से।
बाजीगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.