3d游戏设计 Homework3

3d游戏设计 Homework3


一、操作与总结

  • 1.参考Fantasy Sykbox FREE 构建自己的游戏场景
  • 2.写一个简单的总结,总结游戏对象的使用
  • 3.关于摄像机渲染,设置多个摄像机,Clear Flags and Culling Mask,Depth

1.

设置天空盒子有两种方法,一种是将天空盒子绑定到摄像机上,这样在摄像机的视野里看到的天空都是设置了我们的天空贴图的,但是如果切换摄像机就无法显示同一个天空了。第二种是在场景中添加天空盒子,这样避免了在多摄像机中切换摄像机所带来的天空显示不一致的问题。

创建一个Material,在Shader中选择Skybox/6sides,给6个面添加天空盒图片创建天空盒。

第一种方法绑定天空盒子

通过给Camera添加Component-Skybox,将Material拖进SkyboxCustom Skybox设置天空盒。
3d游戏设计 Homework3

第二种方法绑定天空盒子

直接将天空盒拖入场景,或者在菜单栏中的window中->Lightingj->Setting,将天空盒拖入Skybox Materials在sense中显示。

3d游戏设计 Homework3

2.

游戏对象是在游戏场景中存在的对象,可以通过动态创建也可以静态创建,游戏对象的属和行为由绑定在游戏对象上的组件来确定,如果一个游戏对象只有Transform组件,那么它就是一个空对象,当然你可以手动给游戏空对象添加组件增加它的行为。
常用游戏对象:

  • Empty(不显示确实最常用的对象之一)
  • Camera摄像机,观察游戏世界的窗口
  • Light光线,游戏世界的光源
  • 3D物体
  • Audio声音
  • UI基于时间的newUI系统
  • Particle System 粒子系统与特效

游戏对象可以进行组合,组合之后给父对象添加的行为会同时作用到子对象上,而子对象也可以做相对于父对象的行为。
游戏对象的运动是离散仿真例子之一,通过在Update函数改变Transform position参数,通过告诉Update达到Consistent的效果。(这里再提一下为什么不用LateUpdate函数,Update一般用于场景刷新,LateUpdate一般用于摄像机控制,因为LateUpdate的会在Update之后,所以可以决定调用什么方法)

3.

这个我一直不太懂,自己的理解如下,如果有不正确的地方,欢迎纠正。

首先摄像机可以设置设置它的Culling Mask,FOV,Position,和Rotation,相机的渲染对象是在视角范围内和Culling Mask所不遮罩的所有物体的列表。
相机的渲染同时通过两个方式,一是颜色渲染,一是深度渲染,渲染是通过一定频率进行的,将渲染信息存储到缓冲区,分别是颜色缓冲和深度缓冲,默认的缓冲区都是可以刷新的,通过Camera中的Clear Flags进行设置,Clear Flags中的参数有Skybox和Solid Color和Depth Only和Don’t Clear,分别对应

  • Skybox:把颜色缓冲清空,并更新为天空盒,并完全清空深度缓冲
  • Solid Color:和天空盒一样,只是把颜色缓冲清空更新为纯色,可以在Background中设置背景决定用哪个颜色填充色彩缓冲
  • Depth only:这个选项会保留颜色缓冲,但会清空深度缓冲
  • Don’t Clear:不清除任何缓冲
    (通俗的说如果没有刷新颜色缓冲纯色或天空盒填充,那么就会出现重影)
    (如果没有刷新深度缓冲,那么就会出现物体会在最上面,就像老滚5中打开背包出现在最上层的装备一样,或者FPS类游戏中你拿武器的手会随着你的视角转)

Depth参数越小决定哪个先渲染,先渲染的就会在最下面的层出现,所以后渲染的呈现在上面,如果Depth参数大的Camera在上面,然后把Camera的Clear Flags设置为Skybox那么就会出现上面的相机挡住了相机(当然可以设置相机呈现在屏幕上的位置)。

拿CS举一个例子,环境用Camera1来渲染,拿着武器的手用Camera2来渲染,设置Camera1的参数
Depth:0 (最先渲染,在下层)
Culling Mask:Environment(环境层)
Clear Flags:skybox

Camera2的参数
Depth:1
Culling Mask:Hands(手层)
Clear Flags:Depth only(让物体处于最上层)