Laya3.0 相机使用

摄像机,是3D场景里边最经常使用的对象了。

官方文档:点击这里学习

1.投影 Projection

透视:

模拟人眼的视觉效果,近大远小。模拟物理世界的规律,将眼睛或相机抽象成一个点,此时视锥体内的物体投影到视平面上的物体满足近大远小的规律。

3.0默认透视,属性Field Of View可用,范围在0-120。

正交

而正交投影的所有投影射线都平行,物体大小不随距离变化而变化。常用于一些2D与3D混合的游戏或模型查看器等。

属性Orthographic Vertical Size可用。

2.渲染 Render

每个相机在渲染时,都会先将颜色和深度信息存储起来,而这些缓存都会在上一帧处理,也称之为帧缓存。当使用多个摄像机时,将积累大量的渲染数据。

帧缓存,包含以下几个缓冲区:

颜色缓冲区:

用于存储每帧颜色信息的缓冲区,每个像素颜色由RGB组成,常见的是 ([0-255],[0-255],[0-255]),也就是 (8bit,8bit,8bit),每个像素占用24字节。

深度缓冲区:

存储的是每个像素的深度值,通过深度缓冲区,我们可以进行深度测试(ZTest)。当启动深度测试时,片段像素深度值和深度缓冲区深度值进行比较,从而确定像素的遮挡关系,保证渲染正确,决定片段哪些像素点数据可以替换到颜色缓冲区中。

模板缓冲区:

模板缓冲区可以为屏幕上的每个像素点保存一个无符号整数值,这个数值通常为[0-255]。通过修改、设置、对比这个模板值,可以保存或者丢弃像素。

自定义缓冲区:

3.渲染面板:


Clear Flags

Clear Flags(清除标记)可以决定是否清除当前渲染之前存储起来的缓冲区信息。

1.Skybox 天空盒

清除当前渲染之前的全部相机缓冲区的颜色与深度信息,如果没有指定天空盒,则会显示Clear Color颜色

2.Solid Color 纯色

清除当前渲染之前的全部摄相机缓冲区的颜色与深度信息,使用Clear Color颜色。

3.Depth only 仅深度

只清除当前渲染之前的全部摄相机缓冲区的深度信息,保留全部摄相机缓冲区的颜色信息。一般要和CullingMask配套使用。

用途:比如:远景模糊,分屏显示,透明遮挡等。

4.Nothing 不清除

不清除摄相机缓冲区的信息,每帧渲染的结果都会叠加在下一帧之上。

4.HDR

高动态光照渲染:High Dynamic Range Imaging。用来实现比普通数位图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。

通过机器内部处理,压制强光部分不至于过曝光,提升弱光部分使之有一定层次。

5.MSAA和FSAA 抗锯齿

MSAA是多重采样抗锯齿,在图形管线的前段(跟深度有关),需要硬件好一点。

FXAA是快速近似抗锯齿,一般在画面完成后,通过像素颜色检测边缘。

6.输出 Output

如何将3D物体渲染到UI上?

1.首先创建一个RenderTexture,设置Color Format为透明格式。
2.将RenderTextrue 拖到相机Render Target上,并将相机Clear Flag设置为SolidColor,将Clear Color设置为0
3.在UI上创建一个Sprite,将Texture设置为刚才创建的RenderTexture。

相关推荐
老豆81 年前
【base64加密】js/ts的基础加密
javascript·html·base64·加密·cocos·laya·egret