2012-04-24 34 views
1

我想要完成的是一個帶有3D旋轉立方體的iPad應用程序,並且在立方體的每一面我想定義多個區域,一旦點擊它就會進入另一個視圖或顯示彈出。三維可旋轉立方體與可點擊區域的側面

  1. 可以這樣用在Xcode使用OpenGL ES從頭一些努力來實現,或者我應該使用3D框架,如果是的話這將是最簡單的框架? (我只聽說過Unity和它相當昂貴的)

  2. 有沒有人有一個很好的教程,讓我學習如何做到這一點?

我已經嘗試過3D CSS3轉換,但我想保留它作爲最後的手段。

+0

[擊中測試在這裏](http://stackoverflow.com/questions/5544808/mapping-from-2d-projection-back-to-3d-point-cloud)。 – 2012-04-24 06:29:18

+0

我無法幫助您進行命中測試,但我鏈接到一些示例代碼,以在此答案中繪製多維數據集:http://stackoverflow.com/a/2858658/19679 – 2012-04-24 16:24:40

回答

1

如果你想要的只是一個文字3D立方體,你可以使用Core Animation來做到這一點。檢查出CATransformLayer。您可以使用CATransformLayer很容易地編寫出真正的3D層次結構。 Joe Ricioppo有a cool article about this,以及一些示例代碼和視頻。它與3D CSS3變換類似,但操作代表3D層次結構的單個圖層而不是單獨變換每個子圖層要容易得多。只需旋轉最初的所有立方體面並定位它們,以便它們形成一個立方體。然後,您可以將變換應用於變換圖層本身,並且它會完成所有的花式數學運算以自動變換您的子圖層。

這個問題的最大問題是觸摸處理如何工作。您不能CATransformLayer上使用-hitTest:,因爲它無法將2D觸摸映射到其自己的3D層次結構。您可能可以通過自己的hitTest:實現來解決這個問題,但它幾乎感覺比其價值更多的工作。我不知道OpenGL爲2D到3D觸摸轉換提供了什麼規定,但這可能是您唯一的選擇。

+0

我會試試這個。需要找到一種方法來讓觸摸工作莫名其妙。非常感謝答案。 – blackpla9ue 2012-04-24 02:49:47

+0

這個@ blackpla9ue的運氣怎麼樣? – seenickcode 2013-06-03 16:12:55

3

試試這個代碼

CATransition *transition = [CATransition animation]; 
transition.delegate = self; 
transition.duration = 0.8; 
transition.timingFunction = [CAMediaTimingFunction  functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
NSString *types[4] = {@"cube", @"rippleEffect", @"cube", @"alignedCube"}; 
NSString *subtypes[4] = {kCATransitionFromTop, kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromBottom}; 
transition.type = types[0]; 
transition.subtype = subtypes[1]; 
[self.view.layer addAnimation:transition forKey:nil]; 
+0

這些轉換被視爲私有API。可能因使用它們而被拒絕 – Mazyod 2014-12-02 19:24:04