2016-08-01 77 views
0

我需要在給定的位置在場景中顯示一些包含通知的視圖。無論距離如何,此通知都應保持相同的大小。但最重要的是,它應該看起來像2D對象,無論旋轉相機有什麼。我不知道我是否可以實際插入一些2D對象,這會很好。到目前爲止,我正在試驗包含Box的SCNNode。我不知道如何讓它們總是朝相機旋轉(在每個軸上旋轉)。我試圖使用SceneKit - 在(x,y,z)場景中顯示二維視圖

let lookAt = SCNLookAtConstraint(target: self.cameraNode) 
lookAt.gimbalLockEnabled = true 
notificationNode.constraints = [lookAt] 

這幾乎可以工作,但節點都以某種隨機角度旋轉。看起來像應用旋轉的UIView。有人可以幫我弄這個嗎?

回答

0

將您的二維物體放在SCNPlane上。使平面節點成爲相機節點的子節點。根據需要定位並旋轉飛機,然後保持獨立。無論何時相機移動或旋轉,飛機都會移動並旋轉,始終顯示相同。

+0

這並不是我真正需要的,我希望這些物體在給定X,Y,Z的3D世界中停留,這樣當我旋轉相機對象時,它們就像在3D世界中一樣顯示,它們可以進入屏幕。但我需要這些物體朝向相機,它位於(0,0,0)處。我試圖使用SCNLookAtConstraint,但當對象被移動時(他們需要移動1秒的動畫),我遇到了這個問題。我確定有一些方法可以計算給定位置的軸心,以便節點朝向相機,但我找不到它。 –

+0

這種方法幾乎可行,但是存在一個問題 - 當移動動畫開始時,對象會翻轉回原來的旋轉狀態,因爲我正在移除約束,當動畫完成時它會翻轉回來。我需要這個約束來從舊值創建到新值,所以它很流暢。可能我需要使用其他一些方法,因爲這隻有在重新設置約束條件時才起作用。 (SCNAction.moveTo(enuLocation,duration:1),completionHandler:{' 'node.constraints = [SCNLookAtConstraint(target:self.cameraNode)]' '} node.runAction )' –

0

好吧我現在知道如何去做。創建沒有幾何體的空節點,並使用SCNLookAtConstraint添加一個新節點。然後我可以用動畫移動這個不可見的節點,並且子節點停留在看相機。

相關問題