引擎 cocos2d-x

开始

https://blog.csdn.net/mitu405687908/article/details/51695510
https://blog.csdn.net/liu_xueping/article/details/40079145

3D相关

  • 导出.fbx文件
    obj:obj是max或maya默认可以导出的格式,不需要任何转换,但是它有一个缺点就是不支持动画的导出。
    c3t:c3t文件是通过FBX模型文件转换后生成的Json格式的文件,使用c3t格式的目的是方便用户进行模型数据的查看和版本比较,由于c3t文件是Json格式的,所以它的文件体积比较大,载入速度也比较慢,通常在实际游戏中不提倡使用。
    c3b:c3b是二进制文件,数据的内容与c3t文件是一样的,不同的是c3b文件体积小,加载速度快,提倡在实际游戏开发中使用。
    进入到Cocos2d-x/tools/fbx-conv,命令中的-a表示同时输出c3b和c3t文件,你还可以使用-b或-t来单独输出c3b或-c3t文件,转换后的文件会生成到当前目录下。

  • 术语
    Mesh(网格):构建一个shape的顶点,以及对应的渲染纹理。
    Model(模型):可被渲染的对象,他是网格的集合。
    Camera(摄像机):3D场景不是平面,所以需要设置一个摄像机。
    Light(光线):光线用于使场景看上去更加接近真实世界。

  • Sprite3D
    auto sprite = Sprite3D::create(“boss.c3b”);
    auto sp = Sprite3D::create(“axe.c3b”);
    sprite->getAttachNode(“Bip001 R Hand”)->addChild(sp);
    sprite->getMeshByName(“Girl_UpperBody02”)->setVisible(false);
    auto animation = Animation3D::create(“orc.c3b”);
    auto animate = Animate3D::create(animation):setTransitionTime(0.0);
    sprite->runAction(RepeatForever::create(animate));
    // eee
    sprite->removeAllAttachNode();
    sprite->setEffect() 添加特效
    //多个动画
    auto animation = Animation3D::create(“orc.c3b”);
    auto runAnimate = Animate3D::create(animation, 0, 2);
    sprite->runAction(runAnimate);
    auto attackAnimate = Animate3D::create(animation, 3, 5);
    sprite->runAction(attackAnimate);

  • 摄像机
    Camera对象继承自Node,支持大部分的Action对象。有两种:透视(perspective)摄像机和正交(orthographic)摄像机。
    auto s = Director::getInstance()->getWinSize();
    //默认摄像机为透视摄像机
    auto camera = Camera::createPerspective(60, (GLfloat)s.width/s.height, 1, 1000);
    camera->setPosition3D(Vec3(0, 100, 100));
    camera->lookAt(Vec3(0, 0, 0), Vec3(0, 1, 0));
    //创建正交对象
    auto camera = Camera::createOrthographic(s.width, s.height, 1, 1000);
    //add camera to the scene
    addChild(camera);
    //从摄像机中隐藏对象
    camera->setCameraFlag(CameraFlag::USER1);
    node->setCameraMask(CameraFlag::USER1);


  • 支持4种光线:
    auto light = AmbientLight::create (Color3B::RED);
    addChild (light); //办公室光
    auto light = DirectionLight::create(Vec3(-1.0f, -1.0f, 0.0f), Color3B::RED);
    addChild (light); //太阳光
    auto light = PointLight::create(Vec3(0.0f, 0.0f, 0.0f), Color3B::RED, 10000.0f);
    addChild (light); //灯泡
    auto spotLight = SpotLight::create(Vec3(-1.0f, -1.0f, 0.0f), Vec3(0.0f, 0.0f, 0.0f), Color3B::RED, 0.0, 0.5, 10000.0f) ;
    addChild (spotLight); //聚光效果
    Light Masking

  • 进阶概念
    BillBoard是一个特殊的精灵,它一直正对着摄像机。
    auto billboard = BillBoard::create(“Blue_Front1.png”, BillBoard::Mode::VIEW_POINT_ORIENTED);
    auto billboard = BillBoard::create(“Blue_Front1.png”, BillBoard::Mode::VIEW_PLANE_ORIENTED);
    billboard->setScale(0.5f);
    billboard->setPosition3D(Vec3(0.0f, 0.0f, 0.0f));
    billboard->setBlendFunc(BlendFunc::ALPHA_NON_PREMULTIPLIED);
    addChild(billboard);

  • 包围体
    获得向量的标准化形式,也可以理解为获取一个向量的单位向量。
    Vec2 getNormalized() const;
    Vec3 Vec3::getNormalized() const;
    包围体是一个简单的几何空间,里面包含着复杂形状的物体。包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳。
    box2 = new AABB();
    box2.setMin(-1.0f,-1.0f,-1.0f);
    box2.setMax(1.0f,1.0f,1.0f);
    – local aabb = sprite:getAABB()
    OBB = (centerPoint, width, height, rotation)
    – local obbt = cc.OBB:new(aabb)
    –_obbt.intersects(_obb[i])
    –_obbt._xAxis
    –_obbt._center
    –Vec3 corners[8] = {};
    –_obbt.getCorners(corners);
    Mat4 mat = _sprite->getNodeToWorldTransform();

http://www.cocos.com/doc/tutorial/show?id=1188
2. 创建2.X 3.X项目
window 在此处打开命令窗口:shift+鼠标右键
E:\myBook\cocos2dx\cocos2d-x-2.2\cocos2d-x-2.2\tools\project-creator>create_proj
ect.py -project HelloCocoStudio -package com.john -language cpp
cocos new HelloWorld -p com.cocos2dx.org -l cpp -d e:/phonework2

3.Cocos| 3D建模规范及注意事项
https://blog.csdn.net/dingd_158/article/details/41204821

安卓启动黑屏处理

http://blog.csdn.net/maximuszhou/article/details/39448971?utm_source=tuicool&utm_medium=referral
0.Cocos2d-x程序在Android下的启动过程

http://www.linuxidc.com/Linux/2011-09/42863.htm

1.在最初加载一张图片,可视为lauching
proj.android\res\drawable\lauching.png
proj.android\src\org\cocos2dx\lib\Cocos2dxActivity.java
public void init(){
… …
ImageView tImageView=new ImageView(this);
tImageView.setScaleType(ScaleType.CENTER);
Drawable tDrawable=this.getResources().getDrawable(R.drawable.lauching);
tImageView.setImageDrawable(tDrawable);
mFrameLayout.addView(tImageView);
}

http://blog.sina.com.cn/s/blog_6957e2e50101bxf1.html
http://www.2cto.com/kf/201502/375356.html
2.将程序背景变透明(如果不删除的话,顶部会有一个Cocos2dxEditText的白条,Cocos2dxEditText封装了EditText,主要用于TextField,如果程序中有使用到它,那建议更换为EditBox)
proj.android\src\org\cocos2dx\lib\Cocos2dxActivity.java
public void init(){
… …
//Cocos2dxEditText edittext = new Cocos2dxEditText(this);
//edittext.setLayoutParams(edittext_layout_params);
//mFrameLayout.addView(edittext);
//this.mGLSurfaceView.setCocos2dxEditText(edittext);
this.mGLSurfaceView.setZOrderOnTop(true);
this.mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
}
proj.android\src\org\cocos2dx\lib\Cocos2dxRenderer.java
public void onSurfaceCreated(final GL10 pGL10, final EGLConfig pEGLConfig) {
… …
pGL10.glDisable(GL10.GL_DITHER);
pGL10.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
pGL10.glClearColor(0, 0, 0, 0);
pGL10.glEnable(GL10.GL_CULL_FACE);
pGL10.glShadeModel(GL10.GL_SMOOTH);
pGL10.glEnable(GL10.GL_DEPTH_TEST);
}
proj.android\AndroidManifest.xml
<activity …
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
… >

结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值