2016-04-23 8 views
5

enter image description hereघुमाएँ एक्स, वाई और जेड अक्ष सब एक साथ

मैं पहली बार 3 डी इलस्ट्रेटर या फ़ोटोशॉप में एक फ्लैट आंकड़ा घुमाने के लिए, सटीक कोण (एक्स, वाई और जेड) प्राप्त डिजाइन उपकरण में यह करने के लिए लागू है और फिर लागू चित्र के शीर्ष पर रखे गए UILabel के समान कोण उन्हें दृष्टि से सिंक्रनाइज़ करने के लिए।

मुझे पता चला है कि एक ही समय में 2 अक्ष को घुमाने के लिए कैसे CATransform3DConcat का उपयोग करके, लेकिन मुझे यकीन नहीं है कि तीसरे को कैसे लागू करें।

float angleX = -18 * M_PI/180; 
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0); 
float angleY = -26 * M_PI/180; 
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0); 
CATransform3D combo1 = CATransform3DConcat(t1, t2); 
self.labelPlay.layer.transform = combo1; 

संपादित

यह अब, लेकिन अभी भी अच्छा नहीं की कोशिश कर रहा। विभिन्न आदेशों के सभी संयोजनों का प्रयास किया लेकिन कुछ भी नहीं।

float angleX = -18 * M_PI/180; 
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0); 
float angleY = -26 * M_PI/180; 
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0); 
float angleZ = 8 * M_PI/180; 
CATransform3D t3 = CATransform3DMakeRotation(angleZ, 0, 0, 1); 

self.label.layer.transform = CATransform3DConcat(CATransform3DConcat(t3, t2), t1); 
+0

आप क्या हासिल करने की कोशिश कर रहे हैं? आप CATransform3DMakeRotation को दूसरे, तीसरे और चौथे तर्कों के लिए अलग-अलग मान निर्दिष्ट करके किसी भी दिशा में घूम सकते हैं। – jtbandes

+0

मैं पहली बार 3 डी इलस्ट्रेटर या फ़ोटोशॉप में एक फ्लैट स्क्वायर घुमाता हूं, डिज़ाइन टूल में इसके लिए सटीक कोण (एक्स, वाई और जेड) लगाता है और फिर उन्हें समान रूप से सिंक्रनाइज़ करने के लिए स्क्वायर के शीर्ष पर स्थित UILabel में समान कोण लागू करता है । – durazno

+1

आदेश मायने रखता है। क्या आप वास्तव में दिखा सकते हैं कि आप इसे क्या करना चाहते हैं, और इसके बदले में यह क्या कर रहा है? – jtbandes

उत्तर

1

मुझे पूरी तरह से यकीन नहीं है लेकिन मुझे लगता है कि यह हो सकता है।

इलस्ट्रेटर/फ़ोटोशॉप में 3 डी रोटेशन से कोणों को सोचने वाले डिजाइनरों के लिए बस कैट्रानफॉर्म 3 डी के साथ काम करेगा, यह लगभग सच है लेकिन आपको एक छोटी सी चीज़ को बदलना पड़ सकता है।

मान लें कि आपके पास आपके डिज़ाइन टूल में x: -18, y: -26 और z: 8 है। वाई और जेड को सकारात्मक/नकारात्मक में मेरी समस्या हल कर रहा है। तो अब मेरे पास है -

float angleX = -18 * M_PI/180; 
CATransform3D t1 = CATransform3DMakeRotation(angleX, 1, 0, 0); 
float angleY = 26 * M_PI/180; 
CATransform3D t2 = CATransform3DMakeRotation(angleY, 0, 1, 0); 
float angleZ = -8 * M_PI/180; 
CATransform3D t3 = CATransform3DMakeRotation(angleZ, 0, 0, 1); 

self.label.layer.transform = CATransform3DConcat(CATransform3DConcat(t1, t2), t3); 

मैं आपको नहीं बता सकता कि वास्तव में यह क्यों ठीक से घूमता है।

+0

मैं इस निष्कर्ष पर भी आ रहा था। यदि आप -26 डिग्री फ़ील्ड के बगल में छोटे ग्लाइफ को देखते हैं, तो यह एक घूर्णन दिखाता है जो घन के चेहरे को दाईं ओर ले जाना चाहिए। आपके द्वारा चुना गया कोण नकारात्मक है, फिर भी चेहरा दाईं ओर जाता है। तो यह वास्तव में विपरीत है कि यह क्या होना चाहिए, मुझे लगता है। – jtbandes

+0

यह सच है .. मैंने अभी तक उनको ध्यान नहीं दिया है। लेकिन फिर यदि आप ज़ेड अक्ष के लिए एक को देखते हैं, भले ही यह कोण को इंसिन्यूएट करता है तो सकारात्मक होना चाहिए और यह सकारात्मक प्रतीत होता है, यह वास्तव में ऋणात्मक रूप से घुमाए गए हैं, इसलिए यह भ्रमित है। वैसे भी यह हल हो गया है! – durazno

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