C3D 世界坐标和屏幕坐标转化问题

  • Creator 版本: 3.8
    在3.8中我的一个物体把他从世界坐标转化为屏幕坐标,然后在把他从屏幕坐标转化为世界坐标,转化后的世界坐标 和原来的物体的世界坐标不一样 请问我哪里写错了吗?
    let pm = this.mainCamera.worldToScreen(this.club.getPosition())
    let test = this.mainCamera.screenToWorld(pm);
    我用的就是这两行的代码由于初学3d 很多API 还不清楚是怎么回事

看看转屏幕坐标的时候坐标z还在不

screenToWorld后面还有个参数默认是0,0就是近裁面上的投射,1就是远裁减面上的投射

你现在说的这个概念我不是很懂,其实我想要的就是 我把世界坐标转化为屏幕坐标之后,然后在转化为世界坐标 不变,这个该怎么处理。这些概念我需要慢慢消化。

我打印了一下还是在的

看了一下源码深度值还在的应该没问题,getpostion 换成getworldpostion

我调用了下空间转屏幕坐标 发现深度值 高达0.9几 这个明显不对的 1-1000的可视范围

归一化到0-1之间了没问题

0.9 还没问题? 那个物体离相机很近的

看到一个帖子 使用canvas下的相机来做转换是没问题的 可以先这样用,我试过确实没问题
const camera = this.node.parent.getChildByName(“Canvas”).getComponent(CanvasComponent).cameraComponent;

    const worldPos = this.node.worldPosition;

    camera.worldToScreen(this.node.worldPosition, v3_1);

    camera.screenToWorld(v3_1, v3_2);

    console.log(`worldpos.x:${worldPos.x} worldpos.y:${worldPos.y} worldpos.z:${worldPos.z} `)

    console.log(`v3_2.x:${v3_2.x} v3_2.y:${v3_2.y} v3_2.z:${v3_2.z} `);

2d相机改成透视投影就会有问题,应该是相机的透视投影的屏幕坐标转换的代码有问题