2016-02-15 11 views
40

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

enter image description here

अद्यतन

के रूप में परिपत्र वस्तु मोटी पदार्थ में प्रवेश करती है जब तक यह जलमग्न है छवि के नीचे मोटी पदार्थ की सतह में परिवर्तन को दर्शाता है।

enter image description here

+1

पर

A Primer on Curves

गुड लक मैं स्पष्ट नहीं कर रहा हूँ "एक मोटी पदार्थ में प्रवेश" आप पर कब्जा करने की कोशिश कर रहे हैं की क्या पहलू के रूप में: उसके Pomax के लेख है। परिपत्र वस्तु की गति? रंग "मोटी पदार्थ" के साथ सामना करता है? मोटे पदार्थ की सतह तनाव? हो सकता है कि आप जिस प्रभाव को ढूंढ रहे हैं उसके चित्र को शामिल करें ... – Rob

+2

@Rob मैं मोटे पदार्थ की सतह तनाव का जिक्र कर रहा हूं – NSologistic

+0

क्या यह कुछ है जिसके बाद आप हैं? http://pasteboard.co/1zoNKPiJ.png मेरे पास दो मंडलियां हैं जिन्हें आप आसानी से खींचते हैं और कनेक्ट करते हैं। मैं एक बेजियर पथ और कुछ ज्यामिति का उपयोग कर दो सर्कल के बीच एक कस्टम आकार बनाते हैं। –

उत्तर

1

समझ के एक उच्च स्तर से वहाँ यह करने के लिए दो तरीके हैं।

  1. खराब रास्ता (लेकिन बेहतर काम करता है जब तरल पदार्थ बनावट है): पहले से स्प्राइट शीट बनाएं, फिर SKSpriteNode वस्तु का एक अतिरिक्त बच्चे उपरिशायी। एनीमेशन स्प्राइट में फ्रेम गेंद से सतह तक दूरी का एक कार्य होगा जब उनके बीच की दूरी कुछ मात्रा से कम हो। वांछित दूरी सीमा (रेंज) को स्प्राइट फ्रेम संख्या (फ्रेम इंडेक्स) में मैप किया जाना होगा। एफ (रेंज) = फ्रेम इंडेक्स। रैखिक इंटरपोलेशन यहां मदद करेगा। बाद में इंटरपोलेशन पर अधिक।

  2. सही रास्ता: तरल पदार्थ को वक्र ऑब्जेक्ट बनाएं, फिर प्रारंभिक, मध्यवर्ती और अंतिम राज्यों के बीच रैखिक इंटरपोलेशन के साथ वक्र पर बिंदुओं को एनिमेट करें। इसके लिए अंक की एक ही संख्या के साथ प्रत्येक तीन वक्र की आवश्यकता होगी। शुरुआती तरल पदार्थ एफ 1 होना चाहिए। स्थिर तरल पदार्थ के रूप में मॉडल एफ 1 अंक। जब गेंद आधा रास्ते डूबा हुआ हो तो तरल पदार्थ एफ 2 बनने दें। मॉडल एफ 2 अंक अपनी अधिकतम चौड़ाई पर डूबे हुए गेंद की तरह दिखने के लिए। जब गेंद 75% डूबा हुआ हो तो तरल पदार्थ एफ 3 बनने दें। ध्यान दें कि जब गेंद पूरी तरह से डुबकी हो जाती है तरल पदार्थ अपरिवर्तित दिखता है। यही कारण है कि जब गेंद 75% डूब जाती है तो गेंद में अधिकतम सतह तनाव होता है। 3 डी वैक्टर के साथ वेक्टर पार उत्पाद का उपयोग, भले ही अपनी परियोजना में है द्वारा

    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, 0, 0); 
    CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0); 
    CGPathAddLineToPoint(path, NULL, 50, -100); 
    CGPathCloseSubpath(path); 
    
    SKShapeNode *shape = [[SKShapeNode alloc]init]; 
    shape.path = path; 
    

तब पता लगाने के तरल पदार्थ के बाहर जब गेंद है: जहाँ तक SpriteKit चला जाता है, तब तक आप इन वस्तुओं का उपयोग कर सकते 2 डी।

Ball Vector (Vb) 
    ^
    | 
(V) O---> Closest Fluid Surface Vector (Vs) 

V = Vb x Vs 

फिर Vz नामक वी के जेड घटक को देखें। (Vz < 0), गेंद तरल पदार्थ के बाहर का है: एक चर टी बनाएँ:

t = distOfBall/radiusOfBall 
तो हर आदेश दिया बिंदु के लिए अपने तरल पदार्थ आकार में

निम्न करें:

newFluidPointX = F1pointX*(t-1) + F2pointX*t 
newFluidPointY = F1pointY*(t-1) + F2pointY*t 

हैं vz> 0), गेंद तरल पदार्थ के अंदर है:

t = -(((distOfBall/radiusOfBall) + 0.5)^2) *4 + 1 
newFluidPointX = F2pointX*(t-1) + F3pointX*t 
newFluidPointY = F2pointY*(t-1) + F3pointY*t 

यह काम करता है क्योंकि किसी भी दो आकार एक साथ मिश्रित किया जा सकता है प्रक्षेप का उपयोग कर। पैरामीटर "टी" दो आकारों के बीच मिश्रण करने के लिए प्रतिशत के रूप में कार्य करता है।

आप वास्तव में किसी भी दो आकारों के बीच निर्बाध मिश्रण बना सकते हैं, जब तक कि अंकों की संख्या समान हो। इस तरह एक व्यक्ति हॉलीवुड की फिल्मों में भेड़िया में घुस जाता है, या कैसे एक आदमी एक तरल पुडल में बदल सकता है। उन प्रभावों के लिए खेलने का एकमात्र सिद्धांत इंटरपोलेशन है। इंटरपोलेशन एक बहुत शक्तिशाली उपकरण है।

L = A*(t-1) + B*t 
    where t is in between 0.0 and 1.0 
    and A and B is what you are morphing from and to. 

अधिक जानकारी के लिए प्रक्षेप देखने पर:: यह के रूप में परिभाषित किया गया है Wiki Article

आगे के अध्ययन के लिए। यदि आप किसी गतिशील आकार को एनिमेट करने पर विचार कर रहे हैं, तो मैं बेजियर वक्र को समझने पर विचार करूंगा। Pomax इस विषय पर एक अद्भुत लेख है। यद्यपि कई ढांचे में वक्र हैं, लेकिन वे कैसे काम करते हैं, इसकी सामान्य समझ रखने से आप उन्हें अपनी विशेषताओं में हस्तक्षेप करने या ढांचे की कमी होने की अपनी विशेषताओं को रोल करने की अनुमति देंगे। अपनी प्रगति :)

संबंधित मुद्दे