Unity3D的ScreenToWorldPoint和WorldToScreenPoint

这两个函数是相机Camera类的函数,主要用来作为点在屏幕坐标系与世界坐标系下的坐标相互转换。


官方文档中的介绍:

ScreenToWorldPoint:从屏幕空间到世界空间的变化位置。屏幕空间以像素定义。屏幕的左下为(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界单位衡量的到相机的距离。

WorldToScreenPoint:从世界空间到屏幕空间变换位置。屏幕空间以像素定义,屏幕左下为(0,0),右上是(pixelWidth,pixelHeight),Z的位置是以世界单位衡量的到相机的距离。

这里关于到屏幕坐标的转换或者由屏幕坐标向世界坐标系的转换,关于屏幕坐标的部分都是由一个 Vector3 描述的。针对这个返回值,前两个分别代表在屏幕坐标的x轴与y轴,屏幕左下角为起点(0,0),水平为x轴,竖直为y轴。

主要讨论一下这个vector3的第三个值的意义

这个第三个值指的是在世界坐标系中,指定的点到相机平面之间的距离,也就是到相机的xy平面的距离,也即物体到相机的连线在相机本体坐标系的z轴上的投影。

下面用一个简单的例子看一下:

首先把一个cube放在(0,0,0)的位置,相机置于(0,0,-10)的位置,z轴正对cube。
在这里插入图片描述

此时Log一下cube的positon在屏幕坐标系下的位置(用WorldToScreenPoint),发现结果如下,第三个值为10。
在这里插入图片描述

接下来将相机绕Y轴分别旋转45度与90度,执行同样的操作。发现45度时第三个值为10*cos(45度),约为7.1。当旋转90度时,第三个值为0。可以验证。
45度:
在这里插入图片描述
在这里插入图片描述
90度:
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值