2010-03-08 13 views
7

में एक कैलियर/UIView (या ओपनजीएल) को लपेटना/वार करना मुझे एक UIView (और इस प्रकार एक कैलियर) मिला है जिसे मैं 3 डी स्पेस में थोड़ा सा झुकाव या मोड़ने की कोशिश कर रहा हूं। यही है, कल्पना करें कि मेरा यूआईवीव एक फ्लैट लेबल है जिसे मैं आंशिक रूप से एक बियर बोतल के चारों ओर लपेटना चाहता हूं (360 डिग्री आसपास नहीं, सिर्फ एक "तरफ")।3 डी (आईफोन)

मुझे लगा कि दृश्य की परत में परिवर्तन लागू करके यह संभव होगा, लेकिन जहां तक ​​मैं कह सकता हूं, यह परिवर्तन समान रूप से परत के घूर्णन, पैमाने और अनुवाद तक ही सीमित है। मैं यहां गलत हो सकता था, क्योंकि कम से कम कहने के लिए, मेरे रैखिक बीजगणित इस बिंदु पर धुंधला है।

मैं इसे कैसे प्राप्त कर सकता हूं?

+0

इसके लिए आपको OpenGL की आवश्यकता है। (मुझे नहीं पता कि कैसे।) – kennytm

+1

केनी का इस प्रश्न का उत्तर: http://stackoverflow.com/questions/2351586/iphone-image-stretching-skew दिखाता है कि 2-डी परत के अधिक जटिल विकृतियों को कैसे करें, लेकिन मुझे विश्वास नहीं है कि केवल वक्रता का उपयोग करके वक्रता संभव है। –

+0

@ ब्रैड लार्सन: ठीक है, मैं उस तरह की कोई समस्या नहीं कर सकता। यह वक्रता है जिसके बाद मैं हूं। मैं ओपनजीएल के बारे में कुछ भी नहीं जानता लेकिन अगर कोई ऐसा करता है तो वह स्वीकार्य होगा। – jbrennan

उत्तर

2

एप्पल के नमूना कोड PVRTextureLoader यह एक ओपन परियोजना दर्शाता है कि कैसे (आपके मामले में एक सिलेंडर पर) एक सतह पर एक बनावट (अपने लेबल) प्रदर्शित करने के लिए है पर एक नजर डालें।

जेफ लामार ने ओपन जीएल के साथ शुरू करने के लिए एक अच्छा tutorial पोस्ट किया है। http://www.sgi.com/products/software/opengl/examples/more_samples/

मैं (ईमानदारी से) कर रहा हूँ इसे कैसे करना सुनिश्चित नहीं है, लेकिन मैं इस पेज पिछले कुछ समय से बुकमार्क वार्प/रूप करने की कोशिश करना पड़ा है:

+1

यह उत्तर कैसे प्रासंगिक है? यह सही दिशा है, लेकिन यह एक परत "झुकने" के बारे में कुछ भी नहीं है। – Tudorizer

2

कोर एनीमेशन के साथ आप सबसे अच्छा कर सकते हैं एक टुकड़ा-रैखिक अनुमान करना है।

उदाहरण के लिए, आप अपने "सिलेंडर" आठ खंडों में तो जैसे विभाजित हो सकता है, और व्यवस्था उन्हें:

_ 
/\ 
| | 

आप उन सब को एक ही छवि दे सकता है, लेकिन इतना है कि वे पर लाइन अप अनुवाद बदल किनारों। फिर प्रत्येक ट्रांसफॉर्म दें (या तो एक साधारण क्षैतिज संपीड़न या "कीस्टोन" का एक प्रकार यदि आप परिप्रेक्ष्य के लिए जा रहे हैं)।

असल में आप शायद आठ से अधिक सेगमेंट का उपयोग करना चाहते हैं। ध्यान दें कि वे आपके विचार के किनारों के पास केंद्रित होंगे।

This CSS animation आपको कुछ प्रेरणा दे सकता है।

1

इस पृष्ठ पर कुछ "बिगाड़ना" उदाहरण हैं एक जाल/ग्रिड के साथ एक UIView।

शुभकामनाएं।

^।^