(下) Camera类实例方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(下) Camera类实例方法相关的知识,希望对你有一定的参考价值。
RenderToCubemap方法:生成Cubemap静态贴图(专业版有)
1.public bool RenderToCubemap(Cubemap cubemap);
参数为Cubemap静态贴图
2.public bool RenderToCubemap(RenderTectur cubemap);
其中参数cubemap为RenderTexture静态贴图
3.public bool RenderToCubemap(Cubemap cubemap, int faceMask);
其中参数cubemap为Cubemap静态贴图,faceMaske为反射面数量,默认值为63.
4.public bool RenderToCubemap(RenderTexture cubemap, int faceMaske);
其中参数cubemap为RenderTexture静态贴图,faceMask为反射面数量,默认值为63。
功能说明 此方法的作用使用摄像机生成一个Cubemap静态贴图,当faceMaske值为63时,表示Cubemap的上下左右前后6个面全部反射,这种情况下系统计算消费也最大,该值是一个二进制计算的参数,默认值为63即111111,表示6个面全开,如果不需要全部反射,则需要修改faceMask的值。
RenderWithShader方法:使用其他shader渲染
public void RenderWithShader(Shader shader, string replacementTag);
参数为要使用的shader和shader的Tag标示。
功能说明 此方法的作用是可以使用指定的shader来代替当前物体的shadr渲染一帧。当replacementTag为空时会替换时口中所有物体的shader。
ScrreenPointToRay方法:近视口到屏幕的射线
SceenPointToRay(Vector3 position);
参数为屏幕位置参考点。
功能说明 此方法的作用是可以从Camera的近视口nearClip向前发射一条射线到屏幕上的position点。参考点position用实际像素值得方法来决定Ray到屏幕的位置。参考点position的x轴分量或y轴分量从0增长到最大值时,Ray从屏幕一边移动到另一边。当Ray未能碰撞到物体时,hit.point返回值为Vector3(0,0,0)。参考点position的z轴分量值无效。
ScreenToViewportPoint方法:坐标系转换
public Vector3 ScreenToViewportPoint(Vector3 position);
其中参数position为屏幕参考点
功能说明 此方法的功能是实现坐标点position从屏幕坐标系向摄像机视口的单位化坐标系转换。参考点position的x和y分量为屏幕的实际坐标值,单位为像素,z值无效。
ScreenToWorldPoint 方法:坐标系转换
public Vector3 ScreenToWorldPoint(Vector3 position);
其中参数position为屏幕参考点。
功能说明 此方法的作用是将参考点position从屏幕坐标系到世界坐标系。此方法与方法ViewportToWorldPoint功能类似。只是此方法的参考点position中各个分量值都为实际单位像素值,而非比例值。
SetTargetBuffers方法:重设摄像机到TargetTexture的渲染
1.public void SetTargetBuffers(RenderBuffer colorBuffer,RenderBuffer depth Buffer);
其中参数colorBuffer为纹理的颜色缓存,depthBuffer为纹理的深度缓存。
2.public void SetTargetBuffers(RenderBufeer[] colorBuffer,RenderBuffer depth Buffer);
其中参数colorBuffer为纹理的颜色缓存,depthBuffer为纹理的深度缓存。此重载方法可以将摄像机的渲染一次付给多个colorBuffer
此方法用于将Camera的渲染赋给RenderTexture的colorBuffer和depthBuffer。
ViewportToWorldPoint方法:坐标点的坐标系转换
public Vector3 ViewportToWorldPoint(Vector3 positrion);
功能说明 此方法是实现从Camera视口坐标点想世界坐标点转换,与方法WorldToViewportPoint的功能正好相反。此方法的返回值大小受当前Camera在世界坐标系中的位置Camera的fieldOfView值以及参考点position的共同影响。其中参考点position的x和y分量的有效范围为[0,0,1,0],为比例值;而z值为实际单位值,非比例值。
此方法暂时用不到,算法以后研究。
WorldToScreenPoint方法:坐标点的坐标系转换
public Vector3 WorldToScreenPoint(Vector3 position)
参数为待转换的世界坐标系中的坐标点
功能说明 此方法用来实现从世界坐标点向屏幕坐标点转换,即坐标点position投射到屏幕上的坐标值。返回值的x和y分量是以屏幕左下角(0,0)点建立平面坐标系来计算的。
WorldToViewportPoint方法:坐标点的坐标系转换
public Vector3 WorldToViewportPoint(Vector3 position);
其中参数为待转换的世界坐标系中的坐标点。
功能说明 此方法的功能是把三维坐标点position从世界坐标系转换到屏幕的单位化坐标系总,即世界坐标点position投射到屏幕上的坐标点的x,y分量所占屏幕宽高的比例大小。此方法与方法WorldToScreenPoint功能类似,不同的是返回值的x和y分量是比例值,以屏幕的总宽度和总高度分别为x和y分量的最大值。
关于Camera视口、aspect、pixelRect及rect的关系注解。
1.Camera视口用来记录当前摄像机能看到场景中的哪些内容,其大小及位置是可以改变的。而屏幕视口是指当前硬件的屏幕,对于一个固定的硬件(例手机),它的屏幕视口大小(即分辨率)是固定的。Camera视口的内容不一定可以完全显示在屏幕上,屏幕可能只显示了一部分是口内容,也可能对视口内容进行了放缩。可以简单理解为,Camera视口是一张二维图片,而屏幕是用来显示这张图片的,图片可能被裁减、也可能被压缩。Camera视口的内容现实到屏幕上的方式由很多因素决定。
2.Unity的Game面板中的aspect选项是用来模拟硬件屏幕的,可分为3类:全屏显示,固定比例显示和固定分辨率显示。全屏方式即以当前Game屏幕的大小来模拟硬件屏幕分辨率,其Camera视口即为当前摄像机的默认状态。而在固定比例方式则会改变Camea视口的宽高比例,其大小不固定。而在固定分辨率方式下,视口的最大宽度和高度是固定的,当Game视口的宽度和高度大于固定分辨率时,其有哦小显示区间将保持固定分辨率的大小。
3.在Camera.aspect固定的情况下,无论选择Game视图中哪种屏幕模拟方式,它们的现实内容都是相同的。不同的屏幕模拟方式只会对现实的内容进行放缩。决定屏幕视口显示内容的是Camera.aspect的值和Camera的Transform,至于屏幕要如何显示Camera视口的内容,那就是硬件显示屏要处理的事情了。
4.PixelRect和Rect功能类似,都是决定硬件显示屏如何显示Camera视口提供的内容的。不同的是,PixelRect以实际像素来展示显示内容,而Rect以单位化形式来展示显示内容。
以上是关于(下) Camera类实例方法的主要内容,如果未能解决你的问题,请参考以下文章