说明
- 本系列文章的学习首先要感谢史前图腾的共享精神,在他的系列文章中有详细的解释,但是他的代码都是Swift写的.并且代码的解释比较少,
- 在这里我提供了demo-OC版供大家参考和学习,基础知识会一一为大家解释,但是OC版的demo只提供最终合集,方便一次到位减少打开工程的次数
- demo地址:
OC-地址
swif-地址
Scene Kit editor
Xcode自带了一个简单好用的3D场景编辑器,当选中或创建一个xxx.scn文件时就会出现
区域解释:
1.Scene graph(场景节点树):场景中每一个元素都显示在这里,可以拖拽树状结构的元素来控制父子关系.
2.Design area(设计区):效果呈现区,可以拖拽,旋转和缩放,也可以从对象库中拖放原始节点到这里.
3.Inspectors(检查器):和场景类型有关的检查器,检查器中的内容将根据你选中的节点不同而改变,最上方横放的有五个新的检查器
- Node Inspector(节点检查器):SCNNode对象有关的属性.
- Attributes Inspector(属性检查器):和选中节点类型有头的检查器,如果选中的是Box,可以设置长宽高,如果是-
- Sphere,可以设置半径.
- Material Inspector(材料检查器):设置节点的颜色和纹理
- Physics Inspector(物理检查器):设置物理行为的配置
- Scene Inspector(场景检查器):场景中所有节点都有的全局检查器,可以设置场景中的一些属性.
4.Properties(属性):检查器的内部属性
5.Object Library(对象库):所有可用的SCNNode对象,从系统自带到用户自定义的节点都有.SCNAction对象也在这里.
6.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(收缩动作区):打开/关闭下面的动作区
7.Actions area(动作区):给节点添加动作时,可以从对象库中拖放一个action到这里,就会影响被选中的节点
Basic scene navigation基础场景导航
Pan(拖动):Magic鼠标直接在滚轮处上下左右移动,触摸板用双指移动,普通鼠标按住option键拖动
Rotate(旋转):按下左键并移动鼠标
Zoom(缩放):按住option键使用滚轮缩放,触摸板用捏合手势.
Multi-selection(多选):按住Command单击多选.
Basic node manipulation基础节点操作
以Box节点为例
- Positioning(定位):拖动高亮的坐标轴,可以在坐标轴方向上移动.拖动灰色扇形区,可以沿所有平面移动
- Rotatation(旋转):拖动高亮的坐标轴曲线,可以旋转节点
附加操作:移动节点时,按住Command键,可放大并仔细检查位置.
旋转节点时,按住Command键,可放大并仔细检查角度.
按住Option键并拖动,可复制一个共享属性的副本,就是说对原本做的属性更改操作将影响副本.如果想取消共享属性,取消按钮在属性检查器中几何体共享分类下面.
xxx.scn文件的加载
非常简单,根据文件路径名直接加载就可以了
// 创建SCNView 用于管理 维度空间 SCNScene
SCNView *scnViiew = [[SCNView alloc] initWithFrame:self.view.bounds];
scnViiew.delegate = self;
[self.view addSubview:_scnView = scnViiew];
// 场景维度 直接使用我们采用Xcode创建的维度
SCNScene *scene = [SCNScene sceneNamed:@"SceneEditor.scn"];
scnViiew.scene = _scene = scene;