3d游戏设计 Homework3

3d游戏设计 Homework3


1、操做与总结

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

1.

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

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

第一种方法绑定天空盒子

经过给Camera添加Component-Skybox,将Material拖进SkyboxCustom Skybox设置天空盒。
这里写图片描述svg

第二种方法绑定天空盒子

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

这里写图片描述

2.

游戏对象是在游戏场景中存在的对象,能够经过动态建立也能够静态建立,游戏对象的属和行为由绑定在游戏对象上的组件来肯定,若是一个游戏对象只有Transform组件,那么它就是一个空对象,固然你能够手动给游戏空对象添加组件增长它的行为。
经常使用游戏对象: 设计

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

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

3.

这个我一直不太懂,本身的理解以下,若是有不正确的地方,欢迎纠正。orm

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

  • 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:skyboxblog

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