Unity3D 世界物体如何转换为屏幕长宽?

1回答

Unity3D 世界物体如何转换为屏幕长宽?

提问者 无可奈何 2017-04-14 356浏览
现在的方式:获取物体的render.bounds.center和extents,然后计算出物体8个角的位置,再计算出在屏幕上最左面和最右的位置,然后计算出在屏幕上的坐标和长宽。

主要的问题在于,WorldToScreenPoint从世界坐标-》屏幕坐标时,会返回一个摄像机的z坐标。如果通过z坐标判定,哪些物体是在屏幕之外的?

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • Unity官方专家 2017-04-14 16:37

    通过z的值可以判断出该点是否在可见位置。然后根据物体的不同形状来判断当前可见点是否能构成可见部分。
    关于如何通过计算z来判断物体是否可见,请参考:

    https://forum.unity3d.com/threads/solved-worldtoscreenpoint-behaviour.51651/


    计算误差是一定存在的,可以考虑定义一个阈值来做取舍。比如-0.000010.00001之前可以认为是0.

    有几个疑问:
    1.
    现在需要想要做到的是计算屏幕上物体最终的大小还是判断可见?
    2.
    如果判断可见,为什么要在投射到屏幕之后判断,而不是通过视锥判断?
    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答