Graphics
Camera
两种camera类型的区别:
- perspective: 透视。真实,Unity默认,远小近大。
- orthographic: 正交。无远小近大。
要实现多个camera切换,可通过enabled属性设置。
要在大屏幕中设置小窗口,如赛车游戏中的后视镜,可通过设置Viewport Rect。
视锥体(view frustum):人的视野范围是个锥体,想象成从camera发散出的许多射线,每条射线上离camera最近的点才被看到,其余都被隐藏。
视野范围(field of view, FOV):视锥体发散的角度。
裁剪平面(clipping plane):分为near plane和far plane,在两者之间的保留,以外的部分都裁减掉。
ScreenPointToRay()函数的实现:从near clipping plane发出射线,沿着视锥体发散,直到远处的RaycastHit。
遮挡剔除(occlusion culling):被完全遮挡的物体不被渲染,需要手动设置。
Material, Shader & Texture
这三者的区别和联系:
- material:决定了表面如何渲染,配置选项取决于它使用的shader。
- shader:用数学方法计算每个像素的颜色,基于光照输入和material配置。
- texture: 位图图片。
基于物理的渲染(pbr):unity的标准shader就是,真实感强。又分为粗糙的和镜面的。
energy conservation: 反射的光不能比接收到的多,diffuse越大,specular越小。
HDR(high dynamic range):0-1范围外的颜色,如太阳。
Physics
rigidbody: 使得物体受到物理引擎的控制,对force有效;但这样就不能直接设置transform,除非设置isKinematic属性,设置后对force无效。
collider:要先加rigidbody才有作用,当两个物体都有collider时,才会发生碰撞,否则就会穿过。
CharacterController:用于处理FPS和TPS中的人物移动,不使用rigidbody(意味着不受力的作用,包括重力),但可以处理碰撞,必须通过Move移动。
三种collider的相互碰撞关系: