现在的位置: 首页 > 综合 > 正文

iPhone Cocos3D 简介说明

2018年05月25日 ⁄ 综合 ⁄ 共 1902字 ⁄ 字号 评论关闭

介绍:

 

Cocos3d框架是iOS平台高度提炼的3D应用开发框架。

Cocos3d是cocos2d的扩展集,cocos2d深入人心,广泛使用在iOS 2d游戏开发中。

因此此文章适用于有一定cocos2d开发基础的开发者。

 

几个重要的概念介绍:

 

既然是3D游戏,必然存在X,Y,Z轴,Z代表视图中深浅,即与玩家眼前的距离远近。

 

 

重要类介绍:

 

CC3Layer

 

CC3Layer是两个最重要的类之一。它实现了CC3World与2D世界的巧妙联系。

CC3Layer属于cocos2d中的CCLayer的比较特殊的一个子类,也正是因此,CC3Layer与cocos2d中的CCLayer可以无缝切换,允许CCLayer(即一个2D平面的总管)的子部件,比如CCNode,controls,label与3D部件互相交互,允许2D部件在CC3Layer的上方,下方底部,旁边儿共同存在视图中。

 

CC3Layer可以随处放在cocos2d程序中。我说以上部分的目的,大部分是为了3D游戏的2D菜单,2D控制手柄,等部件可以与3D游戏界面共存。这些并不冲突。

 

使用过程中,当你使用CC3Layer的子类,请重载以下方法:

 

initializeControls – 这个方法就是你添加2D物体的入口。请在这里添加。CC3Layer开始初始化的时候,会自动触发这个函数,你甭担心代码不会执行到这里。

update: – 如果你有标准CCNode在里面,并且通过scheduleUpdate方法来自动刷新物体,那么这个方法便会自动被执行到这里。如果想刷新2D物体,传值,请重载此方法实现。

 

 

CC3World

 

明眼人都看出来了,第二个最关键的类,便是它。

所有3D对象的渲染,创造,委托,位置等等都在这里处理。

 

同样CC3World也有这两个函数需要重载实现。

 

initializeWorld –这里3D模型开始初始化,植入的代码。可以直接用函数,类对象来生成,也可以直接导入POD文件。CC3World就像树一样,可以在上面放满child,即所有的CC3Node想添加进去,直接调用addChild:method。

update: – 这个函数,也差不多啦。大致就是更新移动3D对象位置,处理物体更新。

 

 

以下非必须重载的方法,但是也非常常用:

 

addChild: –与cocos2d一样,添加child到3D世界。

addContentFromPODResourceFile: & addContentFromPODFile: 顾名思义,导入3D资源文件,此方法比较实用。

getNodeNamed: –返回child的标记的名字。

activeCamera –此方法用处不是特别多,大部分在有多个camera镜头的时候,开启。大多数是场景对话,切换两个不同的镜头。

ambientLight – 周围的灯源,这个有区别与当作child Node添加进去的灯。

 

 

CC3Node

 

3D世界里,所有的模型,摄像头,光线,甚至CC3World都是nodes。CC3Node显然是万物之源啦。什么移动,旋转,隐藏,等等操作,都是这里来的。具体的,慢慢参考API文档吧。

 

CC3Camera & CC3Light

 

这两个是比较特别的,是继承自CC3TargettingNode,顾名思义,用来跟踪node移动的。说白了,就是摄相机视角。所以这个也可以旋转,移动,切换视角。

 

CCActions

 

注意,这里基本跟cocos2d方法一致。可以实现控制着色,阴影,扭曲,旋转,绝大部分操作。

尽管如此,依然有CC3Transform来实现部分3D世界才有的效果。

 

 

Automatic Frustum Culling and Bounding Volumes

 

3D世界里,你看到的,只是片面的摄像头一角。所以有大量的3D物件,你没必要去渲染,浪费资源。

所以Frustum Culling就是用来从渲染管道里,把不在视角之内的物体,去除掉。这是自动滴哦。

还有一个Ocllusion culling,就是这个物体的确在视角里,但是,它被其他物体挡住了。它也不会被批准通过进入渲染管道。

 

Blah …blah…blah….以上讲了省内存,渲染顺序,等等。

 

总之,他自动省事儿。你啥都不需要担心。

 

以上都是概念。

 

安装就自行看cocos3d的README吧,里面写好了,要先安装cocos2d模版,3D是覆盖到原目录的哦。

 

New一个新的cocos3d的project,自己慢慢摸索吧。详细说明请参考 http://brenwill.com/2011/cocos3d-programming-guide/

抱歉!评论已关闭.