creator 2.0.1 worldToScreen求解

我们游戏cocos2dx版本用到了Camera做透视投影的近大远小效果,也用到了projectGL来计算屏幕坐标。目前我把游戏用creator改写的过程中由于自带的cocos2dx-lite移除了Camera,导致遇到一系列问题。

而我之前也有发帖提到过,我修改了cccamera的beforeDraw方法实现了针对节点N做透视投影。这次我想把节点N里的坐标C转化为屏幕坐标。
看到render-engine.js里有个worldToScreen方法,是把一个世界坐标乘以摄像机的视图和投影矩阵最终变化到视口坐标,应该和cocos2dx Camera里的projectGL方法是同样的作用。但是我调用这个方法无论传入什么世界坐标返回结果一直在ui设计尺寸的中心点左右, 设计尺寸是750*1334,返回结果一直近似于(375,667)。麻烦指点一下。
相关代码如下:


BattleCamera用来渲染PanelBattle。_temp_vec2是PanelBattle里一个点。

@panda @jare @an540545947 @

又卡在这里了:joy:

github讨论
https://github.com/cocos-creator/engine/issues/3296

最后提供一个正确版本的实现

哇 老哥好执着。。好几天不上论坛 ,以上论坛就看到了 你又在研究 话说这个是为了干嘛的?把一个3d坐标的点 放到 屏幕上的某一点么?
意思是官方代码有bug 就那段 vec3.tran

屏幕坐标=cocos坐标 *cc.view.getScale()/cc.view.getDevicePixelRatio()

我在改写一个cocos2dx项目,worldToScreen和screenToWorld是creator里和2dx Camera类中projectGL和unProjectGL类似的api。

老哥,可以上传一个Demo吗?谢谢