swift 快速奔跑的兔几 本节的内容是:SceneKit 第一说 创建一个3D胶囊

swift 快速奔跑的兔几 本节的内容是:SceneKit 第一说 创建一个3D胶囊,第1张

概述SceneKit是一组类,可以用来在App中创建和呈现3D场景。 它还可以和core animation和sprite kit无缝交互,这就意味着我们可以在多种上下文中使用SceneKit 1、SceneKit的结构 SceneKit通过SCNView来呈现一切。它是UIView(NSView For OS X)的一个子类。在SCNView的内部,创建和准备一个场景(SCNScene)。场景中包含

SceneKit是一组类,可以用来在App中创建和呈现3D场景。
它还可以和core animation和sprite kit无缝交互,这就意味着我们可以在多种上下文中使用SceneKit

1、SceneKit的结构
SceneKit通过SCNVIEw来呈现一切。它是UIVIEw(NSVIEw For OS X)的一个子类。在SCNVIEw的内部,创建和准备一个场景(SCNScene)。场景中包含节点,这些节点被编排为一个场景图:一个节点有0个或多个子节点, 但是只能有一个父节点。

2、添加SceneKit视图
创建一个新的iOS应用程序
添加SceneKit框架:在项目导航器的顶部选择项目,在项目设置内向下滚动至:linked frameworks and librarIEs部分,单击+,选择SceneKit.framework
将主视图控制器的类由UIVIEw改成SCNVIEw
在vIEwDIDLoad中添加代码

import UIKitimport SceneKit class SceneKitVIEwController: UIVIEwController { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() let sceneVIEw = self.vIEw as! SCNVIEw sceneVIEw.backgroundcolor = UIcolor.graycolor() // Do any additional setup after loading the vIEw. } }

这时运行,即可看到灰色的背景

3、添加场景:向vIEwDIDLoad中添加如下代码

// 添加场景        let sceneOne = SCNScene()        sceneVIEw.scene = sceneOne

SCNScene对象是所有SceneKit对象的容器。想要向用户显示的对象都要放在这个容器内。注意,尽管我们可以有多个场景,但是视图中一次只能有一个场景可见。

4、添加照相机
照相机是用户进入3D场景的门户,它们是你观察3D世界的虚拟眼睛。你看到的东西取决于照相机的位置,角度和一些其它参数。
如何添加照相机:

// 添加照相机 并指明水平和垂直视角都是45度        let cameraOne = SCNCamera()        cameraOne.xFov = 45        cameraOne.yFov = 45

下面,需要将照相机附加到一个节点上:

// 将照相机附加到节点        let cameraNode = SCNNode()        cameraNode.camera = cameraOne        cameraNode.position = SCNVector3(0,0,20)        sceneOne.rootNode.addChildNode(cameraNode)

5、添加3D对象:一枚胶囊

// 添加3D对象         let capsuleOne = SCNCapsule(capRadius: 2.5,height: 10)        let capsuleNodeOne = SCNNode(geometry: capsuleOne)        capsuleNodeOne.position = SCNVector3(0,0)        sceneOne.rootNode.addChildNode(capsuleNodeOne)

此时可以看到一枚白色的胶囊。屏幕上木有光照,所以默认为全亮度的白色。

6、添加光源
有许多不同类型的光源可供使用:
*环境光源:在整个场景内投射均匀光
*泛光源:从单个点向所有方向辐射光线
*平行光源:在单个方向上投射光
*聚光源:在给定方向上从单个方向投射光

下面给胶囊添加一个环境光源和一个泛光源

// 添加环境光源        let ambIEntlight = SCNlight()        ambIEntlight.type = SCNlightTypeAmbIEnt        ambIEntlight.color = UIcolor(white: 0.25,Alpha: 1.0)        let ambIEntNodeOne = SCNNode()        ambIEntNodeOne.light = ambIEntlight        sceneOne.rootNode.addChildNode(ambIEntNodeOne)        // 添加泛光源        let omnilight = SCNlight()        omnilight.type = SCNlightTypeOmni        omnilight.color = UIcolor(white:1.0,Alpha: 1.0)        let omniNodeOne = SCNNode()        omniNodeOne.light = omnilight        omniNodeOne.position = SCNVector3(-5,8,5)        sceneOne.rootNode.addChildNode(omniNodeOne)
总结

以上是内存溢出为你收集整理的swift 快速奔跑的兔几 本节的内容是:SceneKit 第一说 创建一个3D胶囊全部内容,希望文章能够帮你解决swift 快速奔跑的兔几 本节的内容是:SceneKit 第一说 创建一个3D胶囊所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1082813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存