3d坐标转换 cocos_cocos3d屏幕坐标转换成世界坐标 - CSDN
精华内容
参与话题
  • cocoscreator坐标转换

    2020-01-06 17:27:24
    1.得到目标节点A的世界坐标 getposition 2.将A的世界坐标转成B的父节点的AR converToNodeSpaceAR 3.用AR的返回值设B的位置setposition
    1.得到目标节点A的世界坐标 getposition
    2.A的世界坐标转成B的父节点的AR
    converToNodeSpaceAR
    3.AR的返回值设B的位置setposition
    
    展开全文
  • 问题描述:同一个层上的不同节点下的元素移动。 在C这个层上面有两个节点A和B,现在我想把A下的一个临时创建的节点移动到B下 这个时候,第一想到的是,获取两个创建的节点的...转换世界坐标 整体思路就是 ...

    问题描述:同一个层上的不同节点下的元素移动。

     在C这个层上面有两个节点A和B,现在我想把A下的一个临时创建的节点移动到B下

     

    这个时候,第一想到的是,获取两个创建的节点的坐标,然后cc.Move

     

    但是实际的效果不是这样的,元素都不知道移动到那里去了?

    因为,节点的坐标都是相对的。就是在A下新建一个节点,他的坐标就是cc.v2(0,0);

    转换世界坐标

    整体思路就是

    1、获取双方的世界坐标
    
    2、转换为统一的节点的相对坐标
    
    3、设置坐标

     下面是坐标转换code

    /**
     * 得到一个节点的世界坐标
     * node的原点在中心
     * @param {*} node 
     */
    function localConvertWorldPointAR(node) {
        if (node) {
            return node.convertToWorldSpaceAR(cc.v2(0, 0));
        }
        return null;
    }
     
    /**
     * 得到一个节点的世界坐标
     * node的原点在左下边
     * @param {*} node 
     */
    function localConvertWorldPoint(node) {
        if (node) {
            return node.convertToWorldSpace(cc.v2(0, 0));
        }
        return null;
    }
    
     
    /**
     * 把一个世界坐标的点,转换到某个节点下的坐标
     * 原点在node中心
     * @param {*} node 
     * @param {*} worldPoint 
     */
    function worldConvertLocalPointAR(node, worldPoint) {
        if (node) {
            return node.convertToNodeSpaceAR(worldPoint);
        }
        return null;
    }
     
    /**
     * 把一个世界坐标的点,转换到某个节点下的坐标
     * 原点在node左下角
     * @param {*} node 
     * @param {*} worldPoint 
     */
    function worldConvertLocalPoint(node, worldPoint) {
        if (node) {
            return node.convertToNodeSpace(worldPoint);
        }
        return null;
    }
    
    /**
     *  * 把一个节点的本地坐标转到另一个节点的本地坐标下
     * @param {*} node 
     * @param {*} targetNode 
     */
    function convetOtherNodeSpace(node, targetNode) {
        if (!node || !targetNode) {
            return null;
        }
        //先转成世界坐标
        let worldPoint = localConvertWorldPoint(node);
        return worldConvertLocalPoint(targetNode, worldPoint);
    }
     
    /**
     *  * 把一个节点的本地坐标转到另一个节点的本地坐标下
     * @param {*} node 
     * @param {*} targetNode 
     */
    function convetOtherNodeSpaceAR(node, targetNode) {
        if (!node || !targetNode) {
            return null;
        }
        //先转成世界坐标
        let worldPoint = localConvertWorldPointAR(node);
        return worldConvertLocalPointAR(targetNode, worldPoint);
    }
    

     

    展开全文
  • CocosCreator物体跟随触摸点(鼠标)移动

    千次阅读 2019-01-10 22:31:48
    cocoscreator中,ui坐标与世界坐标是不同的,所以要实现物体跟随移动就需要转换一下坐标 properties: { weapon:cc.Node, }, onload(){ //绑定事件 this.node.on(cc.Node.EventType.TOUCH_MOVE,this.mouseFun...

    绑定鼠标点击事件
    在cocoscreator中,ui坐标与世界坐标是不同的,所以要实现物体跟随移动就需要转换一下坐标

     properties: {
      weapon:cc.Node,
     },
    onLoad(){
        //绑定事件
        this.node.on(cc.Node.EventType.TOUCH_MOVE,this.mouseFun,this);
    },
    mouseFun(event){
        console.log('鼠标移动了');
        //触摸点的世界坐标
        var pos=new cc.Vec2(event.getLocationX(),event.getLocationY());
        //转换为UI坐标
        pos=this.node.convertToNodeSpaceAR(pos);
        //给要移动的物体赋值
        this.weapon.position=pos;
        //只移动x轴,Y轴同理
        //this.weapon.x=pos.x;
    },
    
    展开全文
  • 【玩转cocos2d-x之十】cocos2d-x坐标

    万次阅读 多人点赞 2013-12-27 17:03:44
    cocos2d-x采用的是笛卡尔平面坐标系,也就是平面上两条垂直线构成的坐标系,平面上任意一点都可以用(x,y)来表示。 (1)就坐标系方向而言,cocos2d-x分为屏幕坐标系和OpenGL坐标系。 (2)就节点本身而言,...

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12830971


    cocos2d-x采用的是笛卡尔平面坐标系,也就是平面上两条垂直线构成的坐标系,平面上任意一点都可以用(x,y)来表示。

    (1)就坐标系方向而言,cocos2d-x分为屏幕坐标系和OpenGL坐标系。

    (2)就节点本身而言,cocos2d-x分为绝对坐标系和相对坐标系。


    1.屏幕坐标系

    屏幕坐标系,也叫UIKit坐标系,原点在屏幕左上,x轴向右,y轴向下。cocos2d-x的屏幕触摸事件传入的位置坐标就是采用了屏幕坐标系。以320*480的屏幕为例,如图坐标值为屏幕坐标系。


    2.OpenGL坐标系

    OpenGL坐标系原点在屏幕的左下,x轴向右,y轴向上。cocos2d-x的元素采用的就是OpenGL坐标系。同样的上例,如图坐标值为OpenGL坐标系。


    3.屏幕坐标系和OpenGL坐标系的转换

    它们的转换导演类(CCDirector)已经封装好了两个函数供我们使用。

    1. //UIKit To OpenGL  
    2. CCPoint convertToGL(const CCPoint& obPoint);  
    3. //OpenGL To UIKit  
    4. CCPoint convertToUI(const CCPoint& obPoint);  


    4.绝对坐标系

    绝对坐标系也叫世界坐标系,从名字可以看来,绝对坐标系是一个恒坐标系,不参考也不依赖于其他坐标系。在cocos2d-x中它使用的是OpenGL坐标系。不过因为我们多在CCLayer上放置游戏元素,所以一般比较少直接用到绝对坐标系。


    5.相对坐标系

    cocos2d-x元素是有层次关系的,节点使用的是相对父节点的位置坐标,也就是相对坐标系(也叫本地坐标系),屏幕绘制的时候,cocos2d-x会自动将相对坐标系转换为绝对坐标系,渲染到屏幕的绝对位置上。


    6.锚点

    在举例之前有必要先了解一下锚点这个概念。锚点是对节点而言的,它是节点的一个属性,表明了节点位置的一个参考基准点,同样放置一个物体在(300,300)这个位置,不同的锚点会产生不同的效果。节点的默认锚点位置在(0.5,0.5)。锚点和节点的位置值没有关系,锚点只是影响了节点在屏幕上渲染的位置。如下图,虽然精灵的在屏幕上渲染的位置不一样,但是它们的position值是一样的,都是(300,300)。锚点只会影响它本身在父节点中的渲染位置,而不会影响其子节点的相对它本身的位置。


    7.绝对坐标系和相对坐标系的关系

    我们先看一个例子,为了方便演示,节点的锚点都设置为(0,0)。

    1. CCSprite* big=CCSprite::create("big.png");  
    2. big->setAnchorPoint(ccp(0,0));  
    3. big->setPosition(ccp(50,50));//设置在相对父节点的(50,50)位置  
    4. this->addChild(big);//屏幕是父节点  
    5. CCSprite* little=CCSprite::create("little.png");  
    6. little->setAnchorPoint(ccp(0,0));  
    7. little->setPosition(ccp(50,50));//设置在相对父节点的(50,50)位置  
    8. big->addChild(little);//big是父节点  

    效果如下:


    8.绝对坐标系和相对坐标系的转换

    CCNode提供给我们相对坐标系和绝对坐标系的转换函数。

    1. CCPoint convertToNodeSpace(const CCPoint& worldPoint);  //将世界坐标转换为对象节点内坐标,忽略锚点,以当前父节点左下角坐标为标准  
    2. CCPoint convertToWorldSpace(const CCPoint& nodePoint);  //将对象节点内坐标转换为事件坐标,忽略锚点,以当前父节点左下角坐标为标准  
    3. CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);//将世界坐标转换为基于锚点的对象节点内坐标    
    4. CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint);//将局域锚点的对象节点内坐标转换为世界坐标  

    如果要获取big和little的绝对坐标

    1. CCPoint wp1=this->convertToWorldSpace(big->getPosition());//wp1(50,50)  
    2. CCPoint wp2=big->convertToWorldSpace(little->getPosition());//wp2(100,100)  

    如果要把绝对坐标转换为big和little的相对坐标

    1. CCPoint np1=big->convertToNodeSpace(ccp(200,200));//np1(150,150)  
    2. CCPoint np2=little->convertToNodeSpace(ccp(200,200));//np2(100,100)

    展开全文
  • CocosCreator中使玩家移动到点击位置

    万次阅读 2016-07-20 00:40:29
    var pol = this.tanke.getPosition()  将一个点转换到canvas节点 (局部) 空间坐标系  var temp=this.node.convertToNodeSpaceAR(cc.p(0,0))  将tanke的坐标设置为canvas节点坐标  this.tanke.setPosition(temp)
  • 本地坐标转换为世界坐标 世界坐标 = 父节点.convertToWorldSpaceAR(子节点坐标); 世界坐标转换为本地坐标 本地坐标 = 转换点.convertToNodeSpaceAR(世界坐标) (转换点:即将要成为转换坐标的父节点的点) ...
  • cocos 3D坐标变换

    千次阅读 2018-08-20 19:56:31
    cocos 3D坐标变换 -- 世界空间->摄像机空间->屏幕点 -- @param pos 世界坐标 -- @param camera 摄像机 -- @return 屏幕坐标 function ToolUtils.CameraPos2screenPos(pos,camera) local ...
  • 如题,我用的时cocos2dx-3.3版本,里面添加了3d支持。这里有个问题就半天都没弄明白...怎么把3d世界坐标转换为屏幕坐标呢?在程序里需要用到这样的功能,求解答。。。谢谢。。不是cocos2dx的也麻烦能指导下。。十分感谢
  • Cocos2d-x坐标系介绍

    千次阅读 2014-12-13 16:56:22
    Cocos2d-x坐标系介绍 在图形图像和游戏应用开发中坐标系是非常重要的,我们在Android和iOS等平台应用开发的时候使用的二维坐标系它的原点是在左上角的。而在Cocos2d-x坐标系中它原点是在左下角的,而且Cocos2d-x坐标...
  • 骨骼动画原理与Cocos2d骨骼动画

    千次阅读 2018-11-15 19:05:09
    骨骼动画原理与Cocos2d骨骼动画 声明:本文使用的是cocos2d-x-3.17的代码 文章中的提到的测试代码下载地址https://gitee.com/Kyle12/Cocos2dRenderStudy 蒙皮骨骼动画 蒙皮骨骼动画可以分为两部分,蒙皮Skinned ...
  • cocos2d-x坐标

    千次阅读 2012-02-14 14:17:35
    无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥奔头了。所以玩cocos2d,一上来就先把各种与坐标有关的东西搞清楚。   基本的两个坐标系:屏幕坐标系和GL坐标系。 屏幕坐标系x轴朝右,y...
  • cocos2d-x Sprite旋转角度坐标

    千次阅读 2012-12-13 11:17:39
    cocos2d-x的坐标系中,屏幕绝对坐标系为 左下角为原点(0,0),水平向右为X轴正方向,竖直向上为Y轴正方向,那么角度呢?   在我们所学习过得坐标系统,是以X轴正方向为0度,逆时针旋转为角度正增长方向,水平...
  • 就可以转换成世界坐标了. 今天做项目了时候为止老是不对,遂又去查了资料. 正确的转换方式是 nodename->convertToWorldSpace(nodename->getAnchorPointInPoints()); 中间传入的应该是描点在点中的位置啊. 这样...
  • Cocos2dx--取得子节点在屏幕中的位置

    千次阅读 2014-07-29 16:23:13
    Sprite *pTest1 = Sprite::create("CloseNormal.png"); pTest1->setPosition(ccp(100.0f, 120.0f)); Sprite *pTest2 = Sprite::create("CloseNormal.png"); pTest2->setPosition(ccp(10.0f, 12.0f));...
  • 但在3D中,摄像机是个很重要的概念,因为如果直接在设备上显示标准几何模型的坐标,可能屏幕上什么都看不到,因为模型坐标的范围可能不与设备坐标范围相对应,显示器本身是个平面固定的二维矩形区域,
  • Cocos Creator 坐标转换

    千次阅读 2019-04-25 15:57:47
    主要简单讲解下坐标系统,由于Creator是基于...然后讲解下本地坐标与世界坐标,最后讲下坐标转换。 坐标系 基于OpenGL坐标,也就是原点在屏幕左下角,x轴向右,y轴向上。下面讲解的世界坐标也就是与OpenGL坐...
  • 转载 待到重阳日,还来就菊花 虽然麒麟子公司已经放五一了,但还是打算坚持写作。...本系列完整的文章列表 《麒麟子Cocos Creator实用技巧》73 麒麟子做了一个Demo给大家,向大家演示了方向转角度,角度转方...
  • cocos2d 坐标系使用

    千次阅读 2011-11-26 18:36:19
    GL坐标Cocos2D以OpenglES为图形库,所以它使用OpenglES坐标系。GL坐标系原点在屏幕左下角,x轴向右,y轴向上。 屏幕坐标系 苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。ios的...
  • cocos 几个坐标间的转换

    千次阅读 2017-04-17 09:30:28
    这篇博文将介绍一下在cocos2dx中的一些坐标系统概念: 一、  (1)OpenGL坐标Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。 (2)屏幕...
  • Cocos2d-JS坐标

    千次阅读 2015-03-21 10:35:35
    而在Cocos2d-JS坐标系中它原点是在左下角的,而且Cocos2d-JS坐标系又可以分为:世界坐标和模型坐标。UI坐标UI坐标就是Android和iOS等应用开发的时候使用的二维坐标系。它的原点是在左上角的。UI坐标UI坐标原点是在...
1 2 3 4 5 ... 20
收藏数 1,309
精华内容 523
关键字:

3d坐标转换 cocos