unity3d学习(一):unity3d的介绍

unity3d介绍

简介

unity3d

是由unity technologies公司开发的用于轻松创建游戏和三维互动内容的开发工具,是一个国际领先的专业游戏引擎

游戏

  • 在移动平台,unity几乎成为3d游戏开发的标准工具,使用它开发的游戏数不胜数
  • 2d游戏:视角完全锁定,二维坐标
  • 3d游戏:可以任意变化视角,无锁定,三维坐标

虚拟现实

  • virtual reality:是世界前沿科技之一,利用电脑模拟产生一个三维空间的虚拟世界,并提供视觉、听觉、触觉等感官的模拟。使用者通过各种输入设备与虚拟环境中的事务进行交互,从而产生身临其境的体验
  • augmented reality:增强现实,通过电脑技术,将虚拟的信息应用到真实世界,真实环境和虚拟的物体实时地叠加到了同一个画面或空间

游戏引擎

  • 什么是游戏引擎:是程序的框架,是一款游戏最核心的代码
  • 包含的系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、动画系统、人工智能、网络引擎、场景管理
  • 使用游戏引擎,开发者可以重用已有的核心技术,将精力集中在游戏逻辑和设计上,从而简单快速的创建游戏

unity特点

  • 简单易用
  • 开发效率高
  • 价格偏移
  • 新手居多
  • 跨平台

游戏公司大致分工

  • 策划
  • 美工
  • 软件工程师
  • 测试工程师

工具介绍

面板

project项目资源面板

  • 存放游戏的所有资源
  • 与项目中资源文件夹Assets对应,例如场景、脚本、模型、音频、图片等

hierarchy层次面板

  • 显示当前场景中所有游戏对象的层次关系
  • 包含了当前场景的游戏对象(GameObject),其中一些是资源文件的实例,如3D模型和其它预制组件的实例

scene面板

提供设计游戏界面的可视化面板

常用快捷键

  • 按下鼠标左键:选择,移动
  • 按下鼠标右键:旋转
  • 按下鼠标中键:移动scene观察位置
  • 鼠标滚轮滚动:缩放scene
  • 鼠标右键+wasd:场景漫游
  • 手型工具选中对象+F,或者hierarchy中双击对象:将对象设置为scene视图中心
  • alt+鼠标左键:旋转
  • alt+鼠标右键:缩放
  • alt+鼠标中键:移动scene观察位置

game面板

预览游戏运行后的界面

inspector检视面板

  • 显示当前选定对象的附加组件及其属性信息
  • 为重要游戏物体选择图标

工具

变换工具

  • 移动场景Q
  • 移动物体W
  • 旋转物体E
  • 缩放物体R
  • 顶点吸附:选择对象后按住V键,再拖拽到目标物体某个顶点上,松开V键

变化切换

  • 改变游戏对象的轴心点
    • center:设置轴心点在物体中心
    • pivot:使用物体本身的轴心
  • 改变物体的坐标
    • local:自身坐标
    • global:世界坐标

播放控件

  • 从左到右依次是预览游戏、暂停游戏、逐帧播放
  • 在预览游戏中,任何改变都是暂时的,推出后会重置

视图

  • ISO:正交观察模式
  • persp:透视观察模式

基础概念

坐标

  • 坐标:x红色、y绿色、z蓝色
  • 本地坐标:物体自身坐标,随旋转而改变
  • 世界坐标:整个场景的固定坐标,不随物体旋转而改变

场景

scene

一组相关联的游戏对象的集合,通常游戏中每个关卡就是一个场景,用于展现当前关卡中的所有物体

物体(游戏对象)

GameObejct

  • 运行时出现在场景中的游戏物体
  • 是一种容器,可以挂载组件
  • 在hierarchy面板中,将一个物体拖进另一个物体中,子物体将继承父物体的移动、旋转和缩放属性,但子物体不影响父物体

组件

component

  • 是游戏对象的功能模块
  • 每个组件都是一个类的实例
  • transform变换组件:决定物体的位置、旋转、缩放
  • mesh filter网格过滤器:用于从资源中获取网格信息
  • mesh renderer网格渲染器:从网格过滤器中获得几何形状,再根据变化组件定义的位置进行渲染
  • 网格过滤器与网格渲染器联合使用,使模型显示到屏幕上

材质

  • 材质:物质的质地,指色彩、纹理、光滑度、透明度、反射率、折射率、发光度等,实际上就是shader的实例
  • shader着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现,实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法
  • texture纹理:附加到物理表面的贴图

纹理、着色器与材质的关系

unity3d学习(一):unity3d的介绍_第1张图片

物理着色器

基于物理特性的shader是unity 5.x的重大革新之一,所谓物理着色器(physically based shading PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果

摄像机

  • 附加了摄像机camera组件的游戏对象
  • 向玩家捕获和显示世界的设备
  • 场景中摄像机的数量不受限制

摄像机的组件

  • transform:变换组件
  • camera摄像机:向玩家捕获和显示世界
  • flare layer耀斑层:激活可显示光源耀斑
  • GUI layer:激活可渲染二维GUI元素
  • Audio Listener音频监听器:接收场景输入的音频源Audio Source并通过计算机的扬声器播放声音

摄像机的属性

  • clear flag清除标识:决定屏幕的空白部分如何处理
    • skybox天空盒:空白部分显示天空盒图案
    • solid color纯色:空白部分显示背景颜色
    • depth only仅深度:画中画效果时,小画面摄像机选择该项可清除屏幕空部分信息只保留物体颜色信息
    • don‘t clear不清除: 不清除任何颜色或深度缓存
  • background背景:所有元素绘制后,没有天空盒的情况下,剩余屏幕的颜色
  • culling mask 选择遮蔽层:勾选的层为要渲染的,不渲染的层则不会显示
  • projection投射方式
    • perspective透视:filed of view 摄像机视距
    • orthographic正交:size 摄像机视距
  • clipping planes剪裁面:near之内的不渲染,far之外的不渲染
  • viewport rect 视口矩形:该相机在屏幕上绘制的坐标和大小
  • depth深度:相机在渲染顺序上的位置,越大越靠前

天空盒

  • 围绕整个场景的包装器,用于模拟天空的材质

使用天空盒

  • 设置摄像机clear flag属性为skybox
  • 方式一:摄像机添加组件skybox
  • 方式二:光照窗口,window-rendering-lighting-environment
    • skybox可以作为反射源将天空色彩反射到场景中的物体

小技巧

ctrl+shift+f,让选中对象移动到当前位置

渲染管线

  • 图形数据在GPU经过运算处理,最后输出到屏幕的过程
      1. 游戏
      2. 图形API
      3. CPU与GPU分界线
      4. 顶点处理
      5. 图元装配
      6. 光栅化
      7. 像素处理
      8. 缓存
  • 绘制调用draw call:每次引擎准备数据并通知GPU的过程,通俗讲,每帧调用显卡渲染物体的次数

顶点处理

  • 接收模型顶点数据
  • 坐标系转换

图元装配

组装面:连接相邻的顶点,绘制为三角面

光栅化

计算三角面上的像素,并为后面着色阶段提供合理的插值参数

像素处理

  • 对每个像素区域进行着色
  • 写入到缓存中

缓存

  • 一个存储像素数据的内存块,最重要的缓存是帧缓存与深度缓存
  • 帧缓存:存储每个像素的色彩,即渲染后的图像,帧缓存常常在显存中,显卡不断读取并输出到屏幕中
  • 深度缓存z-buffer:存储像素的深度信息,即物体到摄像机的距离,光栅化时便计算各像素的深度值,如果新的深度值比现有值更近,则像素颜色被写到帧缓存,并替换深度缓存

遮挡剔除

occlusion culling

  • 即时遮挡剔除:instant occlusion culling
  • 这趟剔除:当物体被送到渲染流水线之前,将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能

步骤

  • 为物体创建层和标签,并添加
  • 为物体添加碰撞器collider组件
  • 摄像机附加IOCcam脚本

属性

  • layer mask:参与遮挡剔除的游戏对象层

  • IOC tag:将为指定标签的游戏对象自动添加IOClod脚本对象

  • Samples:每帧摄像机发射的射线数目,数量多剔除效果好,但是性能开销大,通常在150-500之间

  • Rays FOV:射线视野,应大于摄像机视野Field of view

  • view distance:视图距离,射线长度,与far相同

  • hide delay:延迟隐藏,当物体被剔除时延迟的帧数,建议在50-100之间

  • PreCull check:检查采集信息,建议勾选,可以提高剔除效率

  • realtime shadows:实时阴影,一般不勾选

多层次细节LOD

  • Levels of detail:LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染效率

步骤

  • 创建层和标签
  • 创建空物体,并添加不同精度的模型
  • 为之前的空物体指定层和标签,不应用到子对象
  • 父物体或子物体添加碰撞检测组件
  • 摄像机附加脚本IOCcam

属性

  • Lod1 distance:摄像机到物体距离小于当前距离时,使用Lod_0模型
  • Lod2 distance:摄像机到物体距离大于Lod1且小于当前距离时,使用Lod1模型,大于当前值使用Lod2模型
  • Lod Margin:LOD边缘,如果物体在LOD各阶段过度时发生闪烁,尝试提高当前值

光照系统

简介

全局光照

Global Illumination

  • 简称GI,即全局光照
  • 能够计算直接光,间接光,环境光以及反射光的光照系统
  • 通过GI算法可以使渲染出来的光照效果更为丰富真实

直接光照

  • 从光源直接发出的光,通过light组件实现
  • type类型:灯光对象的当前类型
    • directional light 平行光:平行发射光线,可以照亮场景内所有物体,用于模拟太阳
    • point light 点光源:在灯光位置上向四周发射光线,可以照射其范围内的所有对象,用于模拟灯泡
    • spot light 聚光灯:在灯光位置上向圆锥区域内发射光线,只有在这个区域内的物体才会收到光线照射,用于模拟探照灯
    • area light 区域光:由一个面向一个方向发射光线,只照射该区域内的物体,仅烘焙时有效,用在光线较为集中的区域
  • range 范围:光从物体的中心发射的范围,仅适用于点光源和聚光灯
  • spot angle 聚光角度:灯光的聚光角度,只适用于聚光灯
  • color颜色:光线的颜色
  • intensity 强度:光线的明亮程度
  • culling mask 选择遮蔽层:选择要照射的layer
  • shadow type 阴影类型:
    • no shadow:没有阴影
    • hard 硬阴影:效果较差
    • soft 软阴影:效果逼真
    • strength 硬度:阴影的黑暗程度
    • resolution分辨率:阴影的细节程度
    • bias 偏移:物体与阴影的偏移
  • 通过 mesh renderer组件启用/禁用阴影
    • cast/receive shadows 当前物体是否投射/接收阴影
      • off 不投射阴影
      • on投射阴影
      • two sided 双面阴影
      • shadows only 隐藏物体,只投射阴影
  • 阴影剔除:设置显示阴影的距离
    • edit->project->settings->quality->shadows distance

环境光照

  • 作用于场景内所有物体的光照,通过enviroment lighting中的ambient控制
  • ambient source 环境光源
    • skybox 通过天空盒颜色设置环境光照
    • gradient 梯度颜色
      • sky 天空颜色
      • equator 地平线颜色
      • ground 地面颜色
    • ambient color 纯色
  • ambient intensity 环境光强度
  • ambient GI 环境光GI模式
    • realtime 实时更新,环境光源会改变
    • backed 烘焙,环境光源不会改变

间接光照

  • 物体表面在接受光照后反射出来的光
  • 通过light组件中bounce intensity反弹强度控制
  • 可以通过scene面板irradiance模式查看间接光照
  • 只有标记lightmaping static的物体才能产生间接反弹光照

反射光照

  • 根据天空盒或立方体贴图计算作用于所有物体的反射效果,通过environment reflection控制
  • reflection source 反射源
    • skybox 天空盒
      • resolution 分辨率
      • compression 是否压缩
    • custom 自定义
      • cubemap 立方体贴图
  • reflection intensity 反射强度
  • reflection bounces 使用reflectionprobe后允许不同游戏对象间来回反弹的次数

实时GI

realtime GI

  • 所谓实时,是指在运行期间任意修改光源,所有的变化可以立即更新
  • 由于unity5引入了行业领先的实时全局光照技术enlighten系统,才可以在运行时产生间接光照,使场景更加真实丰富
  • 操作步骤
    • 游戏对象设置为static
    • 启用lighting面板的precomputed realtime GI
    • 点击build按钮

烘焙GI

lightmap

当场景中包含大量物体时,实时光照和阴影对游戏性能有很大影响,使用烘焙技术,可以将光线效果预渲染成贴图,再作用于物体上模拟光影,从而提高性能,适用于在性能比较低的设备上运行的程序

步骤

  1. 游戏对象设置为static
  2. 设置light组件的baking属性
  3. 启用lighting面板的backed GI
  4. 点击build

光源侦测

light probes

由于lightMapping只能作用于static物体,所以导致运动的物体与场景中的光线无法融合在一起,显得非常不真实,而light probes组件可以通过probe收集光影信息,然后对运动物体邻近的几个probe进行插值运算,最后将光照作用到物体上

步骤

  1. 创建游戏对象light probe group
  2. 添加侦测小球 add probe
  3. 点击build 按钮
  4. 勾选需要侦测物体的meshrenderer组件的use light probes属性

声音

简介

unity支持的音频文件格式

  • mp3、ogg、wav、aif、mod、it、s3m、xm
  • 声音分为2D、3D两类
    • 2D声音:适合背景音乐
    • 3D声音:有空间感,近大远小
  • 在场景中产生声音,主要依靠两个重要组件
    • audio listener 音频监听器:接收场景中音频源Audio source发出的声音,通过计算机的扬声器播放
    • audio source 音频源

音频源

  • audio clip 音频剪辑:需要播放的音频资源
  • mute 静音:启用则静音
  • play on awake 唤醒播放:勾选后场景启动时自动播放
  • loop 循环:循环播放音频
  • volume 音量:音量大小
  • pitch 音调:通过改变音调值调节音频播放速度,1是正常速度
  • stereo pan:2d声音设置左右声道
  • spatial blend:2d与3d声音切换

3D声音设置

  • volume rolloff:音量衰减方式
  • min distance:开始衰减距离
  • max distance:结束衰减距离

你可能感兴趣的:(unity,unity3d)