ios – SceneKit中的相机旋转

ios – SceneKit中的相机旋转,第1张

概述我已向此发布了类似的问题 here,但不同之处在于它处理的是角度. 鉴于我在另一篇文章中的设置.屏幕上有一块简单的电路板,还有一个看着它的相机,我想旋转相机.为简单起见,我在代码中完成整个相机.对于上下文,根据其他问题和答案,我已经确定电路板在Z轴上运行较长,在X轴上较短,而高度在Y轴上. 将此代码添加到场景中,我们可以看到我的电路板在Z轴上运行.我把相机抬高了Y轴,以获得更好的视野.我的最终目标 我已向此发布了类似的问题
here,但不同之处在于它处理的是角度.

鉴于我在另一篇文章中的设置.屏幕上有一块简单的电路板,还有一个看着它的相机,我想旋转相机.为简单起见,我在代码中完成整个相机.对于上下文,根据其他问题和答案,我已经确定电路板在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);

好开始.然后我尝试旋转相机,使其从顶部向下看,在板上.我的理解是,我需要围绕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,-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,0);cameraNode.eulerAngles = SCNVector3Make(-M_PI/2,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,-M_PI/2,0);

y旋转也有点莫名其妙,因为我原本期望必须围绕Z轴旋转.

虽然这段代码有效但我的其他帖子也有类似的问题.为什么在第一次旋转时我必须围绕Z轴而不是X轴旋转.我想我可能只是不了解它的角度.

提前致谢

编辑:

正如@mnuages所指出的那样,在线文档说明这个向量在(x,z)中.这与我通常使用的标题文档相反,如此处所示

看起来这只是Apple代码中的一个错误/错字.谢谢你清理它.

解决方法 [评论不适合评论]

请注意,documentation表示

The order of components in this vector matches the axes of rotation:

Pitch (the x component) is the rotation about the node’s x-axis. Yaw (the y component) is the rotation about the node’s y-axis. Roll (the z component) is the rotation about the node’s z-axis.
总结

以上是内存溢出为你收集整理的ios – SceneKit中的相机旋转全部内容,希望文章能够帮你解决ios – SceneKit中的相机旋转所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存