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! SCNView
sceneView.scene = mainScene
sceneView.showsStatistics = true
sceneView.allowsCameraControl = true

好玩起见,我们再添加几个简单几何体到场景中去:

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())

类似的还有其他几个简单几何体,设置都大同小异.

最后我们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
    }

最后运行App看看效果:

还是蛮赞的,不是吗 ;]

时间: 2024-10-23 18:37:33

SceneKit:简单的3D游戏场景搭建的相关文章

unity 3D游戏场景转换

//////////////////2015/07/07//////// /////////////////by xbw/////////////// ///////////////环境 unity 4.6.1// 当需要多个场景时,就用到了场景转换, 这里呢,我有两个场景,一个move(开场镜头),另一个second(游戏场景): 要想运行完开长镜头后接着运行游戏场景,需要用到一个函数::: Application.LoadLevel("second");引号里变是需要运行的场景,即

使用Unity3D的设计思想实现一个简单的C#赛车游戏场景

最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现.原本在C#中很方便地就可以完成的一个小场景,使用Unity3D的设计思想(即一切游戏对象皆空对象,拖拽组件才使其具有了活力)来实现却需要花费大量时间与精力,究竟它神奇在什么地方?本文通过实现这个小例子来看看. 一.空对象与组件 在Unity3D最常见的就是GameObject,而一个GameObject被实例化后确啥特性与行为都没有,只有当我们往其中拖拽了一

使用Cocos开发一款简单的3D VR抓钱游戏

使用Cocos开发一款简单的3D VR抓钱游戏 最近VR成为了一个新兴的热点,很多以前从事游戏开发的团队都在关注这个方向.如何在VR时代来临之际快速的掌握开发VR游戏的方法,这对于很多中小团队来说,是一个要考虑的问题. 目前市面上有很多3D引擎已经开始支持VR功能.特别是虚幻,Unity等引擎对于VR这个领域都非常重视,但是国内这几年有大量的手游团队在使用Cocos2d-x来开发游戏项目,现有人员的的经验对于游戏开发非常宝贵,更何况目前VR领域并未出现很好的CP盈利案例.短期内贸然转型,放弃现有

【Unity3d】3d网页游戏场景打包与加载

http://www.cnblogs.com/dosomething/archive/2012/04/07/2436353.html 3d游戏中  一个场景往往比较大  如果游戏的进行需要下载一个10M甚至更大的场景时  加载所用的时间会导致很大部分玩家的流失 我们知道unity3d中的内置地形是使用一张高度图  加载场景时  首先加载地形并显示  再去加载场景中的部件(比如树.房子等)  将会很有必要 在加载场景中的部件时  可以根据玩家当前所在的位置  由近到远的去加载 场景中的每个部件实际

Unity 3D酷跑类游戏场景循环

Unity 3D酷跑游戏场景循环 ////////////////2015/07/05///////////// ///////////////by xbw//////////////////// ///////////////环境 Unity4.6.1////// 经过一上午的学习与实验,终于实现了3D酷跑游戏的场景循环..大喜.遂分享交流,共同学习. 在场景中建两个Plane作为地面,分别命名为Plane1,Plane2: Position 分别设为0,0,50:0,0,150: Scale

吴涛作品介绍-易语言和VOLCANO 3D游戏引擎

易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,可以通过使用本语言极其快速地进入Windows程序编写的大门. VOLCANO 3D 游戏引擎 VOLCANO是一款MMORPG(大型多人在线角色扮演)3D网络游戏的开发引擎,用作支持用户快速并简单地开发具有真实游戏环境和丰富游戏玩点的游戏. 易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,尤其是根本不

Unity 3D游戏开发Mecanim动画系统讲解

本期教程和大家分享Mecanim动画系统的重定向特性,Mecanim动画系统是Unity3D推出的全新的动画系统,具有重定向.可融合等诸多新特性,通过和美工人员的紧密合作,可以帮助程序设计人员快速地设计出角色动画.一起跟着人气博主秦元培学习吧! 博主今天想和大家分享的是Mecanim动画系统的重定向特性,众所周知,<仙剑奇侠传>是一部经典的RPG游戏,这部游戏到今天依然焕发着强大的生命力.博主在网上认识了一个制作<仙剑奇侠传>同人游戏的小团队,他们目前正在着手制作一个称为<仙

然并卵的1980年代的3D游戏眼镜往事,搞创新的你知道吗

时下各种和技术有关的新闻总喜欢用一个词--黑科技,它在游戏世界里格外多:VR是黑科技.AR是黑科技,甚至于游戏里出现了新的生态系统,也冠以黑科技的名号.按照一般解释,黑科技是公众没见过的"新.奇.特"技术.将黑科技融入了游戏里,又能如何?真的就能实现颠覆式创新吗? 文/张书乐 原载于<人民邮电报>2016年7月1日<乐游记>专栏108期 这让我想起了游戏机初现的时候上市的一款设备--1982年11月上市的Vectrex游戏主机,它由史密斯工程公司研发.当然,结局

Cocos2d-x 的3D游戏制作官方教程(中文翻译)

Cocos2d-x 在版本3开始已经支持了3D游戏开发的特性,我在官网文档看到3D开发的部分,觉得有必要记录一下,权当做学习笔记.因为只花了半天时间翻译,而且能力有限,各位看官勿喷. 本博客虽然水分很足,但是也算是博主的苦劳了,如需转载,请附上本文链接http://blog.csdn.net/cyh_24/article/details/45702343,不甚感激! 相信,你已经对Cocos2d-x有所了解,并且将它作为一种2D游戏引擎来看待.但是,从版本3开始,我们已经将3D一些特性添加到了C