[SceneKit]相机(四)

96
作者 里脊糖醋
2017.07.20 07:37* 字数 591

SCNCamera相机是用于显示场景内容必须的节点, 需要把相机加到节点之上, 再把节点加到根节点上.
SCNNode包含相机物体观察视野的观察点, 即相机的位置和方向. 相机的视角始终沿着节点的局部坐标系的负Z轴, 要在不同的场景指定不同的相机的视野, 使用position, rotation, transfrom来设置.


屏幕快照 2017-07-22 下午10.01.00.png

相机有两种类型透视(perspective)和正交(orthographic)

透视相机: 游戏中经常使用第一视角的相机, 会有一种近大远小的感觉


屏幕快照 2017-07-22 下午10.06.22.png

正交投影: 投影线垂直于投影面的投影属于正交投影 ,属于平行投影一种。靠近和远离, 物体大小都是相同的


屏幕快照 2017-07-22 下午10.06.31.png

基于SceneKit]场景编辑器(三)中的例子, 看下相机的效果.

注意: 这里面有一个xcode的小bug(准确的来说我是不清楚这是xcode的bug还是我自己配置的文件有问题), 新建工程, 默认的scn文件是名称是ship, 如果你此时把这个ship.scn文件删除, 之后再新建一个ship.scn的文件, 拖进场景的控件就不显示形状, 拿相机来举个例子
正常的情况下我们看到的场景中的相机应该是这个样子的


屏幕快照 2017-07-22 下午10.47.58.png

但是在ship.scn场景中却显示成这样


屏幕快照 2017-07-22 下午10.48.15.png

只有一个3D坐标, 这样很不利于我们观察效果.

解决办法, 那就是新建scn文件时不要使用ship.scn文件名, 改成其他的名称就不会出现这个问题了, 这个问题困扰了一天, 自己也是无意中找到解决办法的, 坑死我了.

现在删除基于SceneKit]场景编辑器(三)中的例子中的ship.scn文件, 新建一个game.scn文件. 然后拖进一个box和一个相机

设置box的position为0,0,0; diffuse为FF0000;


屏幕快照 2017-07-22 下午10.53.34.png

屏幕快照 2017-07-22 下午10.54.55.png

然后在拖进一个camera
适当的调整相机的位置


屏幕快照 2017-07-22 下午11.01.25.png

从相机发射出来的线表示的是相机的视野
右侧有很多关羽相机的属性, 修改某个值, 立马能看到效果, 这点很好, 减少了运行工程的次数, 节省的不少时间, 苹果可这是很贴心呀.

SceneKit