SceneKit是Apple用来开发休闲3D游戏的框架,不同于底层的OpenGL库,你仅仅需要很少的代码就可以快速看到实际的3D场景效果.下面简单的聊聊搭建一个3D游戏场景需要做的事情.
首先你必须用其他3D建模工具生成你需要的3D模型,后缀为dae或者scn,应该还附带一张纹理图片.
可以将3D模型文件连同纹理图片导入Xcode,以下是一个例子
可能有些童鞋不知道如何打开场景图(scene graph)的界面,只要点击上图最下一行local按钮左边的方框按钮即可:
你在场景图界面中可以添加光源,摄像头等附属在SCNNode上的元素:
SceneKit中也自带一些简单的3D几何图形类,比如球体,圆锥体等等.你可以将他们组合成更加复杂的3D形体放到3D场景中.稍后我也会给出一些例子.
下面我们可以将3D场景导入到视图中来:
let mainScene = SCNScene(named: "art.scnassets/hero.scn")let sceneView = self.view as! SCNViewsceneView.scene = mainScene sceneView.showsStatistics = truesceneView.allowsCameraControl = true
- 1
- 2
- 3
- 4
- 5
好玩起见,我们再添加几个简单几何体到场景中去:
func BoxNode()->SCNNode{ let box = SCNBox(width: 10, height: 10, length: 10, chamferRadius: 1) let boxNode = SCNNode(geometry: box) boxNode.geometry?.firstMaterial?.diffuse.contents = UIColor.brownColor() boxNode.position = SCNVector3(x: 0, y: 10, z: -20) return boxNode }mainScene.rootNode.addChildNode(BoxNode())
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
类似的还有其他几个简单几何体,设置都大同小异.
最后我们SceneKit还内置了可以直接将字符串变为3D几何体的类SCNText,我们可以方便的在游戏场景中生成3D文字
func createStartingText()->SCNNode{ let startText = SCNText(string: "大熊猫猪侯佩", extrusionDepth: 5) startText.chamferRadius = 0.5 startText.flatness = 0.3 startText.font = UIFont(name: "Copperplate", size: 30) startText.firstMaterial?.specular.contents = UIColor.blueColor() startText.firstMaterial?.diffuse.contents = UIColor.yellowColor() startText.firstMaterial?.shininess = 0.4 let textNode = SCNNode(geometry: startText) textNode.scale = SCNVector3(x: 0.75, y: 0.75, z: 0.75) textNode.position = SCNVector3(x: 0, y: 50, z: -50) return textNode }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
最后运行App看看效果:
还是蛮赞的,不是吗 ;]
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow