首页 > 代码库 > Unity API 解析(2)—— Camera 类方法

Unity API 解析(2)—— Camera 类方法

RenderToCubemap  —— 生成Cubemap 静态贴图

RenderWithShader —— 使用其他Shader渲染

使用指定的shader来代替当前物体的shader渲染一帧。当replacementTag为空时会替换视口中所有物体的shader

setReplacementShader与此方法相近,但不是只渲染一帧

ScreenPointToRay

近视口到屏幕的射线。参考点position用实际像素值的方式来决定Ray到屏幕的位置。参考点position的X轴分量或Y轴分量从0增长到最大值时,ray从屏幕一边移动到另一边

using UnityEngine;using System.Collections;public class ScreenPointToRay_ts : MonoBehaviour{    Ray ray;    RaycastHit hit;    Vector3 v3 = new Vector3(Screen.width / 2.0f, Screen.height / 2.0f, 0.0f);    Vector3 hitpoint = Vector3.zero;    void Update()    {        // 射线沿着屏幕x轴从左向右循环扫描        v3.x = v3.x >= Screen.width ? 0.0f : v3.x + 1.0f;        // 生成射线        ray = camera.ScreenPointToRay(v3);        if (Physics.Raycast(ray, out hit, 100.0f))        {            // 绘制线,在scene试图中可见            Debug.DrawLine(ray.origin, hit.point, Color.green);            // 输出射线探测到物体的名称            Debug.Log("é???ì?2aμ?μ???ì???3?£o" + hit.transform.name);        }    }}

ScreenToViewportPoint —— 实现坐标点position从屏幕坐标系向摄像机视口单位化坐标系转换,单位为像素

ScreenToWorldPoint —— 将参考点position从屏幕坐标系转换到世界坐标系,实际单位

SetTargetBuffers —— 重设摄像机到TargetTexture的渲染

ViewportPointToRay —— 近视口到屏幕的射线

ViewportToWorldPoint —— 实现从camera视口坐标点向世界坐标点转换

此方法的返回值大小受当前camera在世界坐标系中的位置camera的fieldOfView值以及参考点的position共同影响

WorldToScreenPoint

从世界坐标点向屏幕坐标点转换,即坐标点position投射到屏幕上的坐标值,返回值的x和y分量是以屏幕左下角为(0,0)点,以向上为y轴,向右为x轴来计算的

using UnityEngine;using System.Collections;public class WorldToScreenPoint_ts : MonoBehaviour{    public Transform cb, sp;    public Texture2D t2;    Vector3 v3 = Vector3.zero;    float sg;    void Start()    {        // 记录屏幕高度        sg = Screen.height;    }    void Update()    {        // sp 绕着cb的y轴旋转        sp.RotateAround(cb.position, cb.up, 30.0f * Time.deltaTime);        // 获取sp在屏幕上的坐标点        v3 = camera.WorldToScreenPoint(sp.position);    }    void OnGUI()    {        // 绘制纹理        GUI.DrawTexture(new Rect(0.0f, sg - v3.y, v3.x, sg), t2);    }}

WorldToViewportPoint

把三维坐标点position从世界坐标系转换到屏幕的单位化坐标系中,即世界坐标点position投射到屏幕上的坐标点的x,y分量所占屏幕宽高的比例大小。

 

camera 视口用来记录当前摄像机能看到场景中的哪些内容,其大小及位置是可以改变的

屏幕视口是指当前硬件的屏幕,对于一个固定的硬件(如手机),它的屏幕视口大小(分辨率)是固定的

camera视口的内容不一定可以完全显示在屏幕上,屏幕可能只显示其一部分内容

 

Game面板的aspect选项是用来模拟硬件屏幕的,可分为3类:全屏显示,固定比例显示和固定分辨率显示

Unity API 解析(2)—— Camera 类方法