接口:screenPointToRay(v2.x, v2.y, outRay),返回的outRay中的d值
web端输出:
{x: -0.49885187095225975, y: -0.4420883378989757, z: -0.7454560431984912}
微信开发工具端输出:
{x: -0.5189354227078515, y: -0.4624038424470172, z: -0.718949729500789}
微信偏差较大
接口:screenPointToRay(v2.x, v2.y, outRay),返回的outRay中的d值
web端输出:
{x: -0.49885187095225975, y: -0.4420883378989757, z: -0.7454560431984912}
微信开发工具端输出:
{x: -0.5189354227078515, y: -0.4624038424470172, z: -0.718949729500789}
微信偏差较大
可能是平台分辨率不同导致的,是有什么问题吗?
这样基于屏幕坐标映射出来的三维坐标偏差比较大,3d物体中的集中在屏幕左下位置
转换函数在下面
private _v2Convertv3(v2:Vec2,out:Vec3){
const outRay = new ray();
this.mainCamera.screenPointToRay(v2.x, v2.y, outRay);
let x = outRay.o.x + (0 - outRay.o.y) / outRay.d.y * outRay.d.x
let z = outRay.o.z + (0 - outRay.o.y) / outRay.d.y * outRay.d.z
out.set(x, -10, z);
}
@JayceLai 如果还有其他实现思路,请指教
不同分辨率下,同一个屏幕坐标值对应的 3D 位置是不同的,但计算出的射线都是准确的。另外,也没发现会集中在屏幕左下位置啊