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中的相机旋转所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)