簡體   English   中英

SceneKit中的相機旋轉

[英]Camera Rotation in SceneKit

我已經發布了類似的問題,這在這里 ,但是這是因為它與EULAR角度涉及不同。

鑒於我在另一篇文章中的設置。 屏幕上有一塊簡單的電路板,還有一個看着它的相機,我想旋轉相機。 為簡單起見,我在代碼中完成整個相機。 對於上下文,根據其他問題和答案,我已經確定電路板在Z軸上運行較長,在X軸上較短,而高度在Y軸上。

將此代碼添加到場景中,我們可以看到我的電路板在Z軸上運行。 我把相機抬高了Y軸,以獲得更好的視野。 我的最終目標是讓電路板在相機上長時間運行。

SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 200;
cameraNode.camera.zNear = 0.1;
[scene.rootNode addChildNode:cameraNode];
cameraNode.position = SCNVector3Make(0, 5, 0);
cameraNode.eulerAngles = SCNVector3Make(0, 0, 0);

Imgur

好開始。 然后我嘗試旋轉相機,使其從頂部向下看,在板上。 我的理解是,我需要圍繞X軸旋轉才能實現這一目標。 我通過嘗試以下方法做到了這一點。

SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 200;
cameraNode.camera.zNear = 0.1;
[scene.rootNode addChildNode:cameraNode];
cameraNode.position = SCNVector3Make(0, 50, 0);
cameraNode.eulerAngles = SCNVector3Make(0, 0, -M_PI/2);

iOS文檔聲明eulars中的旋轉設置為(z,y,x)。 然而,這不起作用,只是一個空白的屏幕。 然后我開始嘗試並發現繞Z軸旋轉會讓我朝着正確的方向前進。

SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 200;
cameraNode.camera.zNear = 0.1;
[scene.rootNode addChildNode:cameraNode];
cameraNode.position = SCNVector3Make(0, 50, 0);
cameraNode.eulerAngles = SCNVector3Make(-M_PI/2, 0, 0);

這渲染了這個屏幕。 Imgur

這沒有任何意義,但我繼續它並最終發現,通過圍繞Y軸旋轉,我可以得到我想要的屏幕。

SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 200;
cameraNode.camera.zNear = 0.1;
[scene.rootNode addChildNode:cameraNode];
cameraNode.position = SCNVector3Make(0, 50, 0);
cameraNode.eulerAngles = SCNVector3Make(-M_PI/2, -M_PI/2, 0);

y旋轉也有點莫名其妙,因為我原本期望必須圍繞Z軸旋轉。 Imgur

雖然這段代碼有效但我的其他帖子也有類似的問題。 為什么在第一次旋轉時我必須圍繞Z軸而不是X軸旋轉。 我想我可能只是不了解它的角度。

提前致謝

編輯:

正如@mnuages所指出的那樣,在線文檔說明這個向量在(x,y,z)中。 這與我通常使用的標題文檔相反,如此處所示 Imgur

看起來這只是Apple代碼中的一個錯誤/錯字。 謝謝你清理它。

[評論不適合評論]

請注意, 文檔說明了這一點

此向量中的組件順序與旋轉軸匹配:

  • 間距(x分量)是圍繞節點x軸的旋轉。
  • 偏航(y分量)是繞節點y軸的旋轉。
  • Roll(z分量)是繞節點z軸的旋轉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM