2014-01-29 181 views
-1

我想在iOS上覆制此video第6秒處顯示的3D旋轉物體。我沒有任何3D動畫/遊戲體驗,所以我不知道從哪裏開始。我看了一下,發現了Ray Wenderlich的this教程。我認爲我可以將立方體的形狀更改爲矩形棱鏡,並在旋轉時移動它,但我希望它在3D中具有一些徽標,文本等。這是我卡住的地方。iOS上的3D旋轉物體動畫

與此類工作相關的任何建議或教程?

回答

0

您需要首先熟悉3D編程的一般概念,因爲您的問題不明確。你的意思是什麼?

該立方體由定義每個三角形面上每個頂點不同屬性的幾個不同數據組成。所以如果你想3D文本從多維數據集中出來,你需要重新定義這些數組。

學習3D編程有大量資源,概念通常是普遍的。

+0

我想在視頻中準確創建該動畫。沒有彈出文字或標誌。想象一個立方體形雕像,它上面有一個標誌,就像視頻中的蘭博基尼標誌。它圍繞自身旋轉並通過。 我想我要學習的是,我必須在代碼中生成所有這些嗎?例如,我怎樣才能在旋轉的立方體上放置蘭博基尼徽標? – iltercengiz

+0

「我怎麼能把蘭博基尼標誌放在那個旋轉的立方體上」 - 你需要改變紋理。但是NFS視頻中的圖像不是一個簡單的具有紋理的立方體。在視頻中有正常的映射,漫射照明和鏡面光照,用於在00:06創建該動畫。 –

-1

這就是我爲旋轉立方體所做的。希望能幫助到你。

var cubeLayer = CATransformLayer() 
var layer1 = CALayer() 
var layer2 = CALayer() 
var layer3 = CALayer() 
var layer4 = CALayer() 

var pt = CATransform3DIdentity 
pt.m34 = -1.0/500.0 
yourView.layer.sublayerTransform = pt 

layer1.backgroundColor = UIColor.red.cgColor 
layer1.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
layer1.transform = CATransform3DTranslate(layer1.transform, 0, 0, 100) 
cubeLayer.addSublayer(layer1) 

layer2.backgroundColor = UIColor.green.cgColor 
layer2.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
layer2.transform = CATransform3DTranslate(layer2.transform, -100, 0, 0) 
layer2.transform = CATransform3DRotate(layer2.transform, .pi/2, 0, 1, 0) 
cubeLayer.addSublayer(layer2) 

layer3.backgroundColor = UIColor.yellow.cgColor 
layer3.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
layer3.transform = CATransform3DTranslate(layer3.transform, 100, 0, 0) 
layer3.transform = CATransform3DRotate(layer3.transform, .pi/2, 0, 1, 0) 
cubeLayer.addSublayer(layer3) 

layer4.backgroundColor = UIColor.blue.cgColor 
layer4.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
layer4.transform = CATransform3DTranslate(layer4.transform, 0, 0, -100) 
cubeLayer.addSublayer(layer4) 

cubeLayer.frame = CGRect(x: 0, y: 0, width: 200, height: 200) 
yourView.layer.addSublayer(cubeLayer) 

將手勢添加到您的視圖並使用交換手勢進行旋轉,使用下面的代碼可以從左至右旋轉立方體。

let swiperight = UISwipeGestureRecognizer(target: self, action: #selector(self.swiperight)) 
swiperight.direction = .right 
yourView.addGestureRecognizer(swiperight) 

@objc func swiperight(_ gestureRecognizer: UISwipeGestureRecognizer) { 
    self.cubeLayer.transform = CATransform3DRotate(self.cubeLayer.transform, .pi/-1.5, 0, 1, 0) 

    self.cubeLayer.transform = CATransform3DRotate(self.cubeLayer.transform, .pi/4 
     , 0, 1, 0) 

    self.cubeLayer.transform = CATransform3DRotate(self.cubeLayer.transform, .pi/2 
     , 0, 1, 0) 
}