繁体   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