判断世界坐标系内的物体或一个点,摄像机是否可见

本文提供了一种方法,用于判断3D世界坐标系中的物体或特定点是否位于摄像机的视锥体内,从而确定其是否可见。通过转换物体位置到视口坐标,并检查其是否在摄像机视锥体范围内,此方法适用于正交或透视摄像机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

///
/// 判断世界坐标系内的物体,摄像机是否可见
///
///
///
public bool isVisibleOn3dCamera( GameObject obj, Camera camera3d)
{
Vector3 pos = camera3d.WorldToViewportPoint(obj.transform.position);
// Determine the visibility and the target alpha
bool isVisible = (camera3d.orthographic || pos.z > 0f) && (pos.x > 0f && pos.x < 1f && pos.y > 0f && pos.y < 1f);
return isVisible;
}

/// <summary>
///判断世界坐标系内的一个点,摄像机是否可见
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public  bool isVisibleOn3dCamera( Vector3 pos, Camera camera3d)
{
    pos = camera3d.WorldToViewportPoint(pos);
    bool isVisible = (camera3d.orthographic || pos.z > 0f) && (pos.x > 0f && pos.x < 1f && pos.y > 0f && pos.y < 1f);
    return isVisible;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值