[英]SceneKit camera rotation wrong although camera and nodes share origin
[英]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);
給
好開始。 然后我嘗試旋轉相機,使其從頂部向下看,在板上。 我的理解是,我需要圍繞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);
這渲染了這個屏幕。
這沒有任何意義,但我繼續它並最終發現,通過圍繞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軸旋轉。
雖然這段代碼有效但我的其他帖子也有類似的問題。 為什么在第一次旋轉時我必須圍繞Z軸而不是X軸旋轉。 我想我可能只是不了解它的角度。
提前致謝
編輯:
正如@mnuages所指出的那樣,在線文檔說明這個向量在(x,y,z)中。 這與我通常使用的標題文檔相反,如此處所示
看起來這只是Apple代碼中的一個錯誤/錯字。 謝謝你清理它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.