Unity摄像机视野范围简单教程
图文教程技术文章技术文库综合文库
显示全部 7
1037 1
实名

通过了实名认证的内容创造者

发布于 2019-4-14 20:54:03

您需要 登录 才可以下载或查看,没有账号?注册

x
01.png

Unity每次新建工程后,系统都会赠送一个摄像机,那么这个摄像机的视野范围是多少?或者,如果想让摄像机的范围正好地对准一张图片,应该怎么设置?

这里主要用到摄像机fieldOfView和aspect两个属性

02.png

首先我们可以先玩一下摄像机组件的FieldofView属性,可以看到值越大,摄像机角度也越大

那么通过角度和距离,我们就可以求出视野的高,见下图



首先求高度,通过三角函数可得halfHeight=distance*Mathf.Tan(camera.fieldOfView/2*Mathf.Deg2Rad);

(上图这里,好像两个halfHeight中间还有个竖线的距离,可以将摄像机ClippingPlanes中Near值设成0,就能看到这个是等比缩放的,图上的distance也不是真正的distance)

有了高度后,通过aspect(宽高比)再求出视野的宽

halfWidth=halfHeight*camera.aspect;

计算后,可以将视野画出来,达到图1的效果,新建脚本DrawCameraView,挂载到摄像机上,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrawCameraView : MonoBehaviour {

    private Camera _camera;
    public float distance=5;

        void Start () {
        _camera = Camera.main;
        }
       
        void Update () {

        Vector3[] corners = GetCorners();

        Debug.DrawLine(corners[0], corners[1], Color.red);
        Debug.DrawLine(corners[1], corners[2], Color.red);
        Debug.DrawLine(corners[2], corners[3], Color.red);
        Debug.DrawLine(corners[3], corners[0], Color.red);
    }

    Vector3[] GetCorners()
    {
        float halfHeight = distance*Mathf.Tan(_camera.fieldOfView/2*Mathf.Deg2Rad);
        float halfWidth = halfHeight * _camera.aspect;

        Vector3[] corners = new Vector3[4];
        Vector3 cameraPos = transform.position;
        corners[0] = new Vector3(cameraPos.x - halfWidth, cameraPos.y + halfHeight, cameraPos.z + distance);//leftUp
        corners[1] = new Vector3(cameraPos.x + halfWidth, cameraPos.y + halfHeight, cameraPos.z + distance);//rightUp
        corners[2] = new Vector3(cameraPos.x + halfWidth, cameraPos.y - halfHeight, cameraPos.z + distance);//rightDown
        corners[3] = new Vector3(cameraPos.x - halfWidth, cameraPos.y - halfHeight, cameraPos.z + distance);//leftDown

        return corners;
    }
}

评分

参与人数 1活跃度 +8 展开 理由
诺一 + 8 【诚意】很有诚意的内容,获取额外奖励

查看全部评分

还没有设置签名!您可以在此展示你的链接,或者个人主页!
使用道具 <
W阳光男孩X  发表于 2019-4-15 12:12:27  
2#
谢谢分享
回复 收起回复
使用道具
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表