2016-10-21 85 views
0

我對SceneKit非常新,您的幫助將會非常感謝!
我在我的UIView中有一個200x200大小的SCNView,它位於超級視圖的中心。 我想把SCNCylinder放在裏面,這樣SCNCylinder覆蓋了完整的SCNView。我讀過Scenekit的所有這些視圖都是以米爲單位定義的,所以我如何形成我的屏幕和SCNCylinder的尺寸之間的關係。如何定位一個SCNNode來覆蓋整個SCNView?

我想:

var coinNode = SCNNode() 
let coinGeometry = SCNCylinder(radius: 100, height: 2) 
coinNode = SCNNode(geometry: coinGeometry) 
coinNode.position = SCNVector3Make(0, 0, 0) 
coinScene.rootNode.addChildNode(coinNode) 

let rotate90AboutZ = SCNAction.rotateByX(-CGFloat(M_PI_2), y: 0.0, z: CGFloat(M_PI_2), duration: 0.0) 
coinNode.runAction(rotate90AboutZ) 
ibOutletScene.scene = coinScene 

但這離開我coinScene和ibOutletScene之間的餘量。我如何刪除這個空間?

我也嘗試添加攝像頭:

let cameraNode = SCNNode() 
cameraNode.camera = SCNCamera() 
cameraNode.position = SCNVector3Make(0, 0, 100) 
coinScene.rootNode.addChildNode(cameraNode) 

但我看到這個隨機的行爲和coinNode獲取隱藏!我應該如何擺放相機?或者有沒有其他方法可以從我的ibOutletScene中刪除額外的空間?

編輯: 這是它看起來如果我不添加相機。紅色的場景和綠色的硬幣之間有一段距離。我嘗試了多種尺寸的硬幣,但除非添加相機,否則我無法刪除此邊距。但是,如果我添加相機,我會遇到另一個問題,在屏幕截圖下面提到。 Red color is the scene and green coin, how can I remove the margin between the two

如果我不添加相機,硬幣上的旋轉動畫完美地工作,但如果我添加相機,旋轉放大,然後再與動畫變小。如何在不增加尺寸的情況下在軸上旋轉它? 我正在使用下面的代碼來旋轉幣: 相同的代碼沒有相機工作正常,但添加相機後放大硬幣。檢出快照。

let rotate = SCNAction.rotateByX(0, y: -2 * CGFloat(M_PI_2), z: 0, duration: 2) 
    coinNode.runAction(rotate) 

enter image description here

回答

0

隨機行爲可能在你的第一個代碼段最後一行所引起的。您正在開始動畫,然後將場景添加到視圖。

取而代之,建立你的場景,附加到視圖,然後開始你的動畫。爲該動作設置非零持續時間將爲您提供更令人愉快的轉場。

至於額外的空間,它會幫助我們理解你是否張貼截圖。但是你將不得不做一些三角函數。

它看起來像你有一個場景,你想被硬幣阻擋,然後旋轉的方式?用真實的物體模擬你自己。把你的眼睛放在桌子邊上。從你的眼睛中投出一枚硬幣。爲了阻止桌子上遠處的特定物體,這個硬幣有多遠?

在SceneKit中,您可以查詢SCNCamera的視野。你知道你的硬幣的大小和視圖的大小。計算硬幣投影直徑所需的相機距離,等於視圖的寬度。把硬幣放在那裏。

+0

該動畫用於對齊XY平面上的圓柱體,因此持續時間爲0,該線條正常工作。 – Anshuman

+0

我編輯了我的問題以包含快照。 – Anshuman