Unity中屏幕坐标转世界坐标ScreenToWorldPoint()时z轴的设置

ScreenToWorldPoint(Input.mousePosition)就是将屏幕坐标转换为世界中的坐标 ,但是在使用此函数之前,首先要明确摄像机的两种投影模式,不同的投影方式,转换的效果也不太相同。

透视模式(Perspective):

当摄像机处于透视模式下,转换屏幕坐标到世界坐标时,z值起着关键作用。以下是具体原因:

  1. 透视投影的特点:

    透视模式模拟人类眼睛的视角,物体会随着与摄像机距离的增加而显得更小。透视投影是以摄像机为中心向外放射的,因此需要深度信息(z值)来确定物体在三维空间中的具体位置。
  2. z值的重要性:

    z值指定了物体距离摄像机的深度。没有z值,无法明确该点在摄像机前方的哪个位置。因此如果z值为0,转换后的坐标始终是摄像机的坐标,这是因为在透视模式下,z=0意味着点与摄像机位于同一位置。
  3. 视锥体:

    透视模式使用视锥体来描述摄像机的视野,物体的位置需要在这个三维视锥体内指定。指定不同的z值,也即是确定转换后的坐标处于视椎体中的哪一个截面。

正交模式(Orthographic):

当摄像机处于正交模式时,z值的作用则相对简单:

  1. 正交投影的特点:

    正交模式没有透视缩放,物体不会因为远离摄像机而显得更小,所有对象的大小在视图中保持一致。转换屏幕坐标时,x和y坐标不需要深度信息(z值)即可计算其在世界空间中的位置。
  2. 不需要指定z值:

    在正交投影中,ScreenToWorldPoint只需要x和y即可确定对象的位置,z值只用来确定在深度方向上的层级,而不影响x、y方向的转换。即使不指定z值,正交模式下,x和y的映射是直接的且线性的。

结论

  • 透视模式:需要指定z值,因为它影响物体在三维空间中的位置,决定物体的深度和缩放效果。
  • 正交模式:不需要z值即可获取x、y坐标的世界空间位置,因为视图是平行投影,不存在缩放。
  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值