SceneKit 简单的3D游戏场景搭建

                       

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

猜你喜欢

转载自blog.csdn.net/qq_43678568/article/details/86171693