setRotation3D 的坐标转换问题

那样获取的不是3D旋转后的坐标

你旋转的节点是a p点放在a节点下 不是跟着一起旋转了吗

对啊 但是是setRotation3D 的旋转 已经不是二维的坐标系了 将P的坐标转通过convertToWorldSpace转换得到的坐标是不对的

@minggo

相机 worldToScreen

我用的是cocos2d-x3.17.2好像没找到这个接口

手动顶一下

Vec3 	unproject (const Vec3 &src) const
Convert the specified point of screen-space coordinate into the 3D world-space coordinate. More...

找到这个api 你那里能调用 project 这个api吗 相机上

这个方法 可以调用到

那你试试 project 这个api

这个方法具体是做什么用的 没看明白 能讲下么

unproject 指定屏幕坐标转为3D世界坐标
project 指定3D世界坐标转为屏幕坐标

现在主要是 我没法知道P点的3D世界坐标

node 应该有这个getPosition3D 方法吧

这个方法有 但是获取的不对 经过图层A经过 setRotation3D 按理来说应该 它的子节点图层BgetPostion3D()的Z值应该不是0 但是图层B得到的Postion3D的Z值还是0

应该是 getPosition3D的位置是想对于它的父节点的3D位置 没法将其转换为世界坐标下的3D位置

继续顶一下

找到解决方案了

image
在node中添加获取3D世界坐标的方法



在node中添加将3D世界坐标转换为屏幕坐标的方法

使用是将需要转换的node调用convertToWorldSpace3D获得3D坐标 然后用transformScreenPoint 将3D坐标转化屏幕坐标即可

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。