《Unity_API解析》 第二章(下) 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以单位化形式来展示显示内容。

时间: 2024-12-23 09:33:59

《Unity_API解析》 第二章(下) Camera类实例方法的相关文章

《Unity_API解析》 第二章(上) Camera类实例属性

aspect属性:设置摄像机视口比例 public float aspect{ get ; set; } 功能说明:此属性用于获取或设置Camera视口的宽高比例值. cameraToWorldMatrix属性:变换矩阵 public Matrix4x4 cameraToWorldMatrix{ get; } 功能说明:此属性的功能是返回从摄像机的局部坐标系到世界坐标系的变化矩阵. Camera中的forward方向为其自身坐标系的-z轴方向,一般其他对象的forward方向为自身坐标系的z轴方

《Unity_API解析》 第八章 Quaternion类

Quaternion又称四元数,由x.y.z和w这4个分量组成,属于struct类型.在Unity中,用Quaternion来存储和表示对象的旋转角度.对于GameObject一般的旋转及移动,可以用Transform中的相关方法实现. Quaternion类实例属性 eulerAngles属性:欧拉角 功能说明 此属性用来返回和设置Quaternion实例对应的欧拉角,说明如下. 1.对GameObject对象的Transform进行欧拉角的变换次序是,zxy轴依次旋转.不同的旋转次序得到的最

Java第二章----对象和类

从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对象 名词解释 OOA-Object Oriented Analysis-面向对象分析 OOD-Object Oriented Design-面向对象设计 OOP-Object Oriented Programming-面向对象程序设计 面向对象基本特性 万物皆可为对象:任何一件事物都可以表示为程序中

《Unity_API解析》 第十章 Rigidbody类

Rigidbody类的功能是用来模拟GameObject对象在现实世界中的物理特性,包括重力.阻力.质量.速度等.对Rigidbody对象属性的赋值代码通常放在脚本中的OnFixedUpdate方法中. Rigidbody类实例属性 collisionDetectionMode属性:碰撞检测模式 public CollisionDetectionMode collisionDetectionMode{get; set;} 此属性用于设置刚体的碰撞检测模式,刚提的碰撞检测模式有三种,即枚举类型Co

Unity API 解析(2)—— Camera 类属性

aspect属性 -- 摄像机视口比例 public float aspect {get ; set ;} 用于获取或设置camera适口的宽高比例值 aspect 只处理摄像机可以看到的试图的宽高比例,而硬件显示屏的作用只是把摄像机的内容显示出来,当硬件显示屏的宽高比例与aspect的比例值不同时,视图将发生变形 using UnityEngine; using System.Collections; public class Aspect_ts : MonoBehaviour { void

第二章 DateTime工具类

项目中经常需要将DateTime转化成各种格式的String类型,或将各种类型的String转为DateTime类型. 本文提供一个DateTime与String的转换工具类: import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormat; import

flaskweb开发实战,入门进阶和原理解析第二章,http部分实例

import os from jinja2 import escape from flask import Flask, make_response,request, redirect,url_for,abort,session,jsonify from urllib.parse import urlparse, urljoin from jinja2.utils import generate_lorem_ipsum app = Flask(__name__) app.secret_key =

《Unity_API解析》 第十二章 Transform类

Transform类继承自Component类,并实现了IEnumberable接口.Transform是GameObject必须拥有的一个组件,用来管理所在GameObject对象的坐标位置.旋转角度和大小缩放.由于Transform实现了Ienumberable接口,于是可以在程序中使用foreach()方法快速遍历子物体的Transform结构.即: void Start() { foreach (Transform item in transform) { } } Transform类实

《Unity_API解析》 第十三、四章 Vector2类、Vector3类

Vector2类实例方法 Normalize方法:单位化Vector2实例 public void Normalize(); 此方法用来单位单位化向量,即将Vector2实例进行单位化处理.此方法改变了原始向量,无返回值.实例属性normalized与此方法功能相同,但使用属性normalized来单位化向量时,不改变原始向量值,且有返回值. Vector2类静态方法 Angle方法:两向量夹角 public static float Angle(Vector2 from, Vector2 to