区块链技术博客
www.b2bchain.cn

第一章第一节、SceneKit 极简介绍求职学习资料

本文介绍了第一章第一节、SceneKit 极简介绍求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

为什么不用 MetalKit?

MetalKit 虽然足够强大,但做为初学者,如果所有功能都需要自己手动编写,花一整天时间去理解如何画一个三角形,会非常令人有挫败感。
第一章第一节、SceneKit 极简介绍
SceneKit 是苹果基于 Metal 的 3D 游戏框架,功能完善,性能也不错,可惜生态不好,学习资料少,使用人数也少。但我们选择使用它,因为它对 iOS 开发者非常友善,简单学习就能入门并使用。还有一个重要原因,就是 ARKit 的渲染功能是由 SceneKit 提供的,因此不管是学习 SceneKit,还是学习 Metal Shader ,都是可以在 ARKit 中直接使用的,并非全无用处的『屠龙之技』。

与 MetalKit 相比,SceneKit 可以帮我们干很多重复性工作,它自带了可视化的 3D 编辑器,并有完善的 debug 工具链。所以用 SceneKit 来学 Shader 其实是一条捷径,让我们更加聚焦 Shader 本身的逻辑。
第一章第一节、SceneKit 极简介绍

来打个比方:一个新手飞行员开始学飞行,因为起飞和降落风险较大,要先找个老飞行员带着他,完成起飞后,再把操纵杆给新人,让他感受操纵飞机的感觉。

又比如:当一个新手司机去 4S 店买车,要试驾时,都是 4S 店的工作人员把车开到路况比较简单的试驾路线上,然后才交给新手司机去驾驶的。

现在,我们就是那个新手,而 SceneKit 就是老飞行员和 4s 店工作人员。在 SceneKit 的流程中,所有步骤都已经完成,但其中一小段可以交给我们自己控制,这就是 Metal Shader

SceneKit 简介

示例代码见Chapter1/Chapter1_1文件夹。

Scenes:SCNScene

它自带一个定义了坐标系的 root node (根节点),使用 scene gragh 来组织场景,可以向内部增加树状结构的内部节点(node),例如 lights光源,cameras相机, geometry几何体,particle emitters粒子发射源等。

它需要放到 SCNView 中才能显示,SCNView 在 OSX(macOS) 中是 NSView 的子类,在 iOS 中是 UIView 的子类;

Xcode 左侧树状结构

第一章第一节、SceneKit 极简介绍
坐标系,屏幕外是+Z方向,坐标使用向量表示,示例 SCNVector3(x: 0, y: 5, z: 10)
第一章第一节、SceneKit 极简介绍

Nodes:SCNNode

3D 场景中的每个元素都被称为 node(节点),存放在树状结构 scene gragh 中,例如 lights光源,cameras相机,geometry几何体, particle emitters粒子发射源。
每个 scene graph 中包含一个特殊的基础节点: root node(根节点),可以把其他节点添加到节点下面,变成它的子节点。

添加到 scene 中的 node,默认在(x:0, y:0, z:0),即相对于父节点的位置。要想调整节点在父节点的位置,应该调整local coordinates(本地坐标系),而不是调整world coordinates(世界坐标系)。

注意:默认情况下,如果一个场景中没有任何改变时,SceneKit会进入”paused”(暂停)状态,为了防止这种情况,需要在创建SCNView实例时设置playing属性为true

scnView.playing = true

camera

摄像机的显示范围控制,小于zNear不显示,大于zFar不显示。添加到一个空节点的 camera 属性里
第一章第一节、SceneKit 极简介绍

func setupCamera() {   // 1.创建空的节点   cameraNode = SCNNode()   // 2.创建相机,添加到节点中   cameraNode.camera = SCNCamera()   // 3.设置相机节点的位置   cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)   // 4.添加到根节点中   scnScene.rootNode.addChildNode(cameraNode) }

primitives geometry(原生几何体)

第一章第一节、SceneKit 极简介绍
系统自带了很多基础的几何体,添加到一个空节点的 geometry 属性里

第一排从左起:cone(圆锥体), torus(圆环体), capsule(胶囊体), tube(管道)
第二排从左起:pyramid(四棱锥), box(长方体), sphere(球体),cylinder(圆柱体)

SCNView内置属性

// 1.显示统计数据 scnView.showsStatistics = true // 2.打开相机控制 scnView.allowsCameraControl = true // 3.自动启用默认光源 scnView.autoenablesDefaultLighting = true

1.showsStatistics 在底部显示一个实时的统计条,左侧+号点击可展开;
2.allowsCameraControl 允许使用简单手势控制相机

为什么不用 MetalKit?

MetalKit 虽然足够强大,但做为初学者,如果所有功能都需要自己手动编写,花一整天时间去理解如何画一个三角形,会非常令人有挫败感。
第一章第一节、SceneKit 极简介绍
SceneKit 是苹果基于 Metal 的 3D 游戏框架,功能完善,性能也不错,可惜生态不好,学习资料少,使用人数也少。但我们选择使用它,因为它对 iOS 开发者非常友善,简单学习就能入门并使用。还有一个重要原因,就是 ARKit 的渲染功能是由 SceneKit 提供的,因此不管是学习 SceneKit,还是学习 Metal Shader ,都是可以在 ARKit 中直接使用的,并非全无用处的『屠龙之技』。

与 MetalKit 相比,SceneKit 可以帮我们干很多重复性工作,它自带了可视化的 3D 编辑器,并有完善的 debug 工具链。所以用 SceneKit 来学 Shader 其实是一条捷径,让我们更加聚焦 Shader 本身的逻辑。
第一章第一节、SceneKit 极简介绍

来打个比方:一个新手飞行员开始学飞行,因为起飞和降落风险较大,要先找个老飞行员带着他,完成起飞后,再把操纵杆给新人,让他感受操纵飞机的感觉。

又比如:当一个新手司机去 4S 店买车,要试驾时,都是 4S 店的工作人员把车开到路况比较简单的试驾路线上,然后才交给新手司机去驾驶的。

现在,我们就是那个新手,而 SceneKit 就是老飞行员和 4s 店工作人员。在 SceneKit 的流程中,所有步骤都已经完成,但其中一小段可以交给我们自己控制,这就是 Metal Shader

SceneKit 简介

示例代码见Chapter1/Chapter1_1文件夹。

Scenes:SCNScene

它自带一个定义了坐标系的 root node (根节点),使用 scene gragh 来组织场景,可以向内部增加树状结构的内部节点(node),例如 lights光源,cameras相机, geometry几何体,particle emitters粒子发射源等。

它需要放到 SCNView 中才能显示,SCNView 在 OSX(macOS) 中是 NSView 的子类,在 iOS 中是 UIView 的子类;

Xcode 左侧树状结构

第一章第一节、SceneKit 极简介绍
坐标系,屏幕外是+Z方向,坐标使用向量表示,示例 SCNVector3(x: 0, y: 5, z: 10)
第一章第一节、SceneKit 极简介绍

Nodes:SCNNode

3D 场景中的每个元素都被称为 node(节点),存放在树状结构 scene gragh 中,例如 lights光源,cameras相机,geometry几何体, particle emitters粒子发射源。
每个 scene graph 中包含一个特殊的基础节点: root node(根节点),可以把其他节点添加到节点下面,变成它的子节点。

添加到 scene 中的 node,默认在(x:0, y:0, z:0),即相对于父节点的位置。要想调整节点在父节点的位置,应该调整local coordinates(本地坐标系),而不是调整world coordinates(世界坐标系)。

注意:默认情况下,如果一个场景中没有任何改变时,SceneKit会进入”paused”(暂停)状态,为了防止这种情况,需要在创建SCNView实例时设置playing属性为true

scnView.playing = true

camera

摄像机的显示范围控制,小于zNear不显示,大于zFar不显示。添加到一个空节点的 camera 属性里
第一章第一节、SceneKit 极简介绍

func setupCamera() {   // 1.创建空的节点   cameraNode = SCNNode()   // 2.创建相机,添加到节点中   cameraNode.camera = SCNCamera()   // 3.设置相机节点的位置   cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)   // 4.添加到根节点中   scnScene.rootNode.addChildNode(cameraNode) }

primitives geometry(原生几何体)

第一章第一节、SceneKit 极简介绍
系统自带了很多基础的几何体,添加到一个空节点的 geometry 属性里

第一排从左起:cone(圆锥体), torus(圆环体), capsule(胶囊体), tube(管道)
第二排从左起:pyramid(四棱锥), box(长方体), sphere(球体),cylinder(圆柱体)

SCNView内置属性

// 1.显示统计数据 scnView.showsStatistics = true // 2.打开相机控制 scnView.allowsCameraControl = true // 3.自动启用默认光源 scnView.autoenablesDefaultLighting = true

1.showsStatistics 在底部显示一个实时的统计条,左侧+号点击可展开;
2.allowsCameraControl 允许使用简单手势控制相机

为什么不用 MetalKit?

MetalKit 虽然足够强大,但做为初学者,如果所有功能都需要自己手动编写,花一整天时间去理解如何画一个三角形,会非常令人有挫败感。
第一章第一节、SceneKit 极简介绍
SceneKit 是苹果基于 Metal 的 3D 游戏框架,功能完善,性能也不错,可惜生态不好,学习资料少,使用人数也少。但我们选择使用它,因为它对 iOS 开发者非常友善,简单学习就能入门并使用。还有一个重要原因,就是 ARKit 的渲染功能是由 SceneKit 提供的,因此不管是学习 SceneKit,还是学习 Metal Shader ,都是可以在 ARKit 中直接使用的,并非全无用处的『屠龙之技』。

与 MetalKit 相比,SceneKit 可以帮我们干很多重复性工作,它自带了可视化的 3D 编辑器,并有完善的 debug 工具链。所以用 SceneKit 来学 Shader 其实是一条捷径,让我们更加聚焦 Shader 本身的逻辑。
第一章第一节、SceneKit 极简介绍

来打个比方:一个新手飞行员开始学飞行,因为起飞和降落风险较大,要先找个老飞行员带着他,完成起飞后,再把操纵杆给新人,让他感受操纵飞机的感觉。

又比如:当一个新手司机去 4S 店买车,要试驾时,都是 4S 店的工作人员把车开到路况比较简单的试驾路线上,然后才交给新手司机去驾驶的。

现在,我们就是那个新手,而 SceneKit 就是老飞行员和 4s 店工作人员。在 SceneKit 的流程中,所有步骤都已经完成,但其中一小段可以交给我们自己控制,这就是 Metal Shader

SceneKit 简介

示例代码见Chapter1/Chapter1_1文件夹。

Scenes:SCNScene

它自带一个定义了坐标系的 root node (根节点),使用 scene gragh 来组织场景,可以向内部增加树状结构的内部节点(node),例如 lights光源,cameras相机, geometry几何体,particle emitters粒子发射源等。

它需要放到 SCNView 中才能显示,SCNView 在 OSX(macOS) 中是 NSView 的子类,在 iOS 中是 UIView 的子类;

Xcode 左侧树状结构

第一章第一节、SceneKit 极简介绍
坐标系,屏幕外是+Z方向,坐标使用向量表示,示例 SCNVector3(x: 0, y: 5, z: 10)
第一章第一节、SceneKit 极简介绍

Nodes:SCNNode

3D 场景中的每个元素都被称为 node(节点),存放在树状结构 scene gragh 中,例如 lights光源,cameras相机,geometry几何体, particle emitters粒子发射源。
每个 scene graph 中包含一个特殊的基础节点: root node(根节点),可以把其他节点添加到节点下面,变成它的子节点。

添加到 scene 中的 node,默认在(x:0, y:0, z:0),即相对于父节点的位置。要想调整节点在父节点的位置,应该调整local coordinates(本地坐标系),而不是调整world coordinates(世界坐标系)。

注意:默认情况下,如果一个场景中没有任何改变时,SceneKit会进入”paused”(暂停)状态,为了防止这种情况,需要在创建SCNView实例时设置playing属性为true

scnView.playing = true

camera

摄像机的显示范围控制,小于zNear不显示,大于zFar不显示。添加到一个空节点的 camera 属性里
第一章第一节、SceneKit 极简介绍

func setupCamera() {   // 1.创建空的节点   cameraNode = SCNNode()   // 2.创建相机,添加到节点中   cameraNode.camera = SCNCamera()   // 3.设置相机节点的位置   cameraNode.position = SCNVector3(x: 0, y: 0, z: 10)   // 4.添加到根节点中   scnScene.rootNode.addChildNode(cameraNode) }

primitives geometry(原生几何体)

第一章第一节、SceneKit 极简介绍
系统自带了很多基础的几何体,添加到一个空节点的 geometry 属性里

第一排从左起:cone(圆锥体), torus(圆环体), capsule(胶囊体), tube(管道)
第二排从左起:pyramid(四棱锥), box(长方体), sphere(球体),cylinder(圆柱体)

SCNView内置属性

// 1.显示统计数据 scnView.showsStatistics = true // 2.打开相机控制 scnView.allowsCameraControl = true // 3.自动启用默认光源 scnView.autoenablesDefaultLighting = true

1.showsStatistics 在底部显示一个实时的统计条,左侧+号点击可展开;
2.allowsCameraControl 允许使用简单手势控制相机

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 第一章第一节、SceneKit 极简介绍求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们