[SceneKit专题]6.Scene Editor场景编辑器

96
作者 史前图腾
2017.04.04 11:28* 字数 953

说明

本系列文章是对<3D iOS Games by Tutorials>一书的学习记录和部分翻译,此书对应的代码地址:https://github.com/XanderXu/3D-iOS-Games-by-Tutorials-code
系列文章目录:http://www.jianshu.com/p/fd32aa0d896a

Scene Kit editor

Xcode自带了一个简单好用的3D场景编辑器,当选中或创建一个xxx.scn文件时就会出现

QQ20170404-105556@2x.png
QQ20170404-105556@2x.png
  1. Scene graph(场景节点树):场景中每一个元素都显示在这里,可以拖拽树状结构的元素来控制父子关系.
  2. Design area(设计区):效果呈现区,可以拖拽,旋转和缩放,也可以从对象库中拖放原始节点到这里.
  3. Inspectors(检查器):和场景类型有关的检查器,检查器中的内容将根据你选中的节点不同而改变,最上方横放的有五个新的检查器
  • Node Inspector(节点检查器):SCNNode对象有关的属性.
  • Attributes Inspector(属性检查器):和选中节点类型有头的检查器,如果选中的是Box,可以设置长宽高,如果是Sphere,可以设置半径.
  • Material Inspector(材料检查器):设置节点的颜色和纹理
  • Physics Inspector(物理检查器):设置物理行为的配置
  • Scene Inspector(场景检查器):场景中所有节点都有的全局检查器,可以设置场景中的一些属性.
  1. Properties(属性):检查器的内部属性
  2. Object Library(对象库):所有可用的SCNNode对象,从系统自带到用户自定义的节点都有.SCNAction对象也在这里.
  3. Toolbar(工具条):包含一些重要元素,从左到右,按钮功能
  • Add/delete node(添加/删除节点):选中节点树中的节点,添加一个子元素或者删除选中节点
  • Search filter(搜索过滤器):复杂场景下用来快速搜索
  • Expand/collapse scene graph area(可收缩场景图表区):打开/关闭左侧的场景图表区
  • Coordinate system(坐标系): 选择一个活跃坐标系来编辑你的节点,可选local,parent,world或者screen.
  • View/camera select(视点/相机选择): 当有多个相机时,可以选择相机列表中任一个活跃视点
  • Play/stop scene(播放/暂停场景):播放/暂停物理和动作模拟
  • Expand/collapse actions(收缩动作区):打开/关闭下面的动作区
  1. Actions area(动作区):给节点添加动作时,可以从对象库中拖放一个action到这里,就会影响被选中的节点

Basic scene navigation基础场景导航

  • Pan(拖动):Magic鼠标直接在滚轮处上下左右移动,触摸板用双指移动,普通鼠标按住option键拖动
  • Rotate(旋转):按下左键并移动鼠标
  • Zoom(缩放):按住option键使用滚轮缩放,触摸板用捏合手势.
  • Multi-selection(多选):按住Command单击多选.

Basic node manipulation基础节点操作

以Box节点为例

QQ20170404-111016@2x.png
QQ20170404-111016@2x.png
QQ20170404-111028@2x.png
QQ20170404-111028@2x.png
  • Positioning(定位):拖动高亮的坐标轴,可以在坐标轴方向上移动.拖动灰色扇形区,可以沿所有平面移动
  • Rotatation(旋转):拖动高亮的坐标轴曲线,可以旋转节点

附加操作:移动节点时,按住Command键,可放大并仔细检查位置.
旋转节点时,按住Command键,可放大并仔细检查角度.
按住Option键并拖动,可复制一个共享属性的副本,就是说对原本做的属性更改操作将影响副本.如果想取消共享属性,取消按钮在属性检查器中几何体共享分类下面.

xxx.scn文件的加载

非常简单,根据文件路径名直接加载就可以了

 scnScene = SCNScene(named: "B.scnassets/Scenes/Game.scn")
scnView.scene = scnScene
SceneKit