10

में कस्टम एनिमेटेबल गुण मुझे पता है कि custom animatable properties in Core Animation बनाना संभव है, लेकिन ओएस एक्स 10.8 के सीनकेट फ्रेमवर्क में क्या है? SCNAnimatable एक ही एपीआई का खुलासा नहीं करता है कि CALayer गुणों को एनिमेट करने योग्य बनाता है।SceneKit

मेरे आवेदन में, मुझे SCNNode सबक्लास मिला है जिसे Starfield कहा जाता है, जिसे मैंने SCNNodeRendererDelegate का उपयोग कर पुराने ओपनजीएल एप्लिकेशन से पोर्ट किया है। Starfields एक GLfloat संपत्ति warpFactor कहा जाता है का पर्दाफाश:

@interface Starfield : SCNNode<SCNNodeRendererDelegate> { 
    // other stuff that's not really important for this question 
    GLfloat warpFactor; 
} 

@property(nonatomic) GLfloat warpFactor; 
@end 

लेकिन जब मैं यह करने के लिए एक एनीमेशन जोड़ने के लिए है, तो तरह का प्रयास करें:

[SCNKit ERROR] warpFactor is not an animatable path (from <unnamed SCNNode 0x1016473c0, no children>) 
: मैं कंसोल में निम्नलिखित मिल

CABasicAnimation *warp = [CABasicAnimation animationWithKeyPath:@"warpFactor"]; 
warp.toValue = @1.0; 
warp.duration = 5.0; 
[starfield addAnimation:warp forKey:@"warp"]; 

मुझे पता है कि सीनकेट बिल्कुल नया है, लेकिन क्या कोई यह जानता है कि यह काम कैसे करें?

+1

मैं वास्तव में हैरान हूँ कि यह पहला सवाल किसी SceneKit के बारे में यहाँ कहा है है कर रहा हूँ अन्य एनिमेशन के साथ कस्टम गुण का एनीमेशन सिंक्रनाइज़ करने के लिए अनुमति देता है। –

उत्तर

0

SceneKit कस्टम animatable मुख्यपथ का समर्थन नहीं करता

+0

यह निश्चित रूप से व्यावहारिक लगता है, लेकिन छोड़ने से पहले, मैं पुष्टि करना चाहता हूं कि वास्तव में मैं जो करना चाहता हूं वह असंभव है। क्या आप मुझे डॉक्स, या कुछ और बता सकते हैं, जो इसकी पुष्टि करता है? –

+0

सीनकेट के लिए दस्तावेज़ बहुत अस्पष्ट हैं। मैंने देखा और कुछ भी नहीं मिला। त्रुटि संदेश आपको मिलेगा सबसे अच्छा हो सकता है। – jblocksom

+0

हाँ, मैं उम्मीद कर रहा था कि कोई और एक अलग उत्तर के साथ कूदने में सक्षम होगा, लेकिन ऐसा लगता है कि यह शायद सबसे अच्छा है जिसे हम कम से कम तब तक समझ सकते हैं जब तक कि ऐप्पल बेहतर दस्तावेज़ीकरण जारी न करे। स्वीकार करना। –

3

का संभावित हल/हैक:

  • एक ज्यामिति कम नोड बना सकते हैं और कुछ animatable संपत्ति है कि नोड पर, अस्पष्टता
  • उपयोग चेतन उदाहरण के लिए एक SCNSceneRendererDelegate प्रतिपादन प्रक्रिया के उचित चरण में हुक करने के लिए और ज्यामिति-कम नोड की एनिमेटेड संपत्ति के मूल्य के साथ मैन्युअल रूप से अपनी कस्टम प्रॉपर्टी को अपडेट करें (नोड के presentationNode से एनिमेटेड प्रॉपर्टी को पढ़ना सुनिश्चित करें)

यह समाधान बदसूरत है, लेकिन यह आप के माध्यम से SCNTransaction या CAAnimationGroup

+0

दिलचस्प विचार, धन्यवाद! –

+0

मैंने एक "इंटरपोलेशन नोड" बनाया जो इसने किया: मैंने सीआईफ़िल्टर गुणों जैसी एनिमेटेड चीजें बनाई और मुझे आवश्यकतानुसार प्रत्येक फ्रेम को प्रस्तुतिकरण मूल्यों का मूल्यांकन किया। यह बहुत अच्छी तरह से काम किया। – LucasTizma

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