2010-01-14 13 views
5

में एक पूर्ण 360 डिग्री घूर्णन करना मेरे पास घन का मॉडलविज़ुअल 3 डी है और मैं इसे 360 डिग्री के लिए अपनी धुरी के चारों ओर घूमने के लिए एनिमेट करना चाहता हूं। मैं एक RoationTransform3D बनाता हूं जो मैं 360 को घूमने के लिए कहता हूं लेकिन यह बिल्कुल घुमाता नहीं है, अगर आप 270 डिग्री कहते हैं तो यह केवल 90 डिग्री घुमाता है लेकिन विपरीत दिशा में चलता है। मुझे लगता है कि वह रोटेशन के "सबसे छोटे पथ" की गणना करता है। मेरे साथ सबसे अच्छा समाधान यह है कि एक एनीमेशन 180 हो जाए और इसे पूरा करने के बाद पूर्ण घूर्णन को पूरा करने के लिए 180 को कॉल करें। क्या एक एनीमेशन में ऐसा करने का कोई तरीका है?डब्ल्यूपीएफ 3 डी

RotateTransform3D rotateTransform = new RotateTransform3D(); 
myCube.Model.Transform = rotateTransform; 

AxisAngleRotation3D rotateAxis = 
     new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180/*or 360*/); 
Rotation3DAnimation rotateAnimation = 
     new Rotation3DAnimation(rotateAxis, TimeSpan.FromSeconds(2)); 

rotateTransform.BeginAnimation(RotateTransform3D.RotationProperty, 
     rotateAnimation); 

उत्तर

3

मेरे समझ के साथ कि Rotation3DAnimation, एक गोलाकार रैखिक प्रक्षेप का उपयोग करता है तो वह हमेशा कम से कम पथ मिलेगा है।

एक वर्कअराउंड Rotation3DAnimationUsingKeyFrames का उपयोग करना है: 120, 240, और 360 पर एक महत्वपूर्ण फ्रेम सेट करें और आपको अच्छा होना चाहिए।

क्षमा करें अभी कोई कोड, मैं इस मशीन पर WPF नहीं है ...

-जेसन

1

मैं जानता हूँ कि यह पहले से ही उत्तर दिया गया था, लेकिन यह मुझे क्या करना एक बेहतर तरीका के लिए मेरे खोज में इस विकल्प को मिला:

आप रोटेशन वैल्यू 180 (या जो आप घुमाने के लिए चाहते हैं उसका आधा) सेट कर सकते हैं और फिर दोहराए जाने वाले व्यवहार को दो बार दोहराने और "IsCummulative" को सही करने के लिए सेट कर सकते हैं।