Unity3D数字孪生开发笔记——软件基础篇

Unity3D数字孪生开发笔记(一)

  • 一、常用快捷键
  • 二、组件功能
    • 1、Material
    • 2、Camera
    • 3、Instant OC
      • 1>渲染管线
      • 2>Occlusion Culling
      • 3>LOD
    • 4、Light
      • 1>Global Illumination
        • a>直接光照
        • b>环境光照
        • c>反射光照
        • d>间接光照
      • 2>Realtime GI
      • 3>Lightmap
      • 4>Light Probes
    • 5、声音
  • 三、其他

一、常用快捷键

1、按下鼠标滚轮拖动场景,滑动滚轮缩放场景;
2、点击鼠标右键同时按下W/S/A/D/Q/E键可实现场景漫游;
3、在Scene面板选中物体有按下F键,或者在Hierarchy面板双击物体,可将物体设置为场景视图的中心;
4、按住Alt同时通过戍边左键围绕某物体旋转场景,鼠标右键缩放场景;
5、顶点吸附:选择物体后按住V键,定位顶点,再拖拽到目标物体某个顶点;

二、组件功能

1、Material

材质:物体的质地,指色彩、纹理、光滑度、透明度、反射率、折射率、发光度等,实际就是Shader的实例

  • Shader 着色器:专门用来渲染3D图形的技术,可以是纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法
  • Texture 纹理:附加到物体表面的贴图

1、创建:Project面板下鼠标右键,Create–>Material

2、Rendering mode:
1>Opaque 不透明
2>Cutout 镂空(去掉透明通道)
3>Transparent 透明(需要更改Albedo后面中Color中的A值)
4>Fade 渐变(需要更改Albedo后面中Color中的A值)

3、Material(材质)只能给到含有Mesh Renderer组件的物体,纹理在Material下,Albedo属性前设置;

2、Camera

  • 向玩家捕获和显示世界的设备
  • 场景中摄像机的数量不受限制

1、创建:SampleScene下鼠标右键–>Camera

2、Clear Flags(处理空白部分):
1>Skybox 天空盒 :围绕整个场景的包装器,用于模拟天空的材质
2>Solid color 纯色
3>Depth only 深度值大于主摄像机时,不显示空白
4>Don’t clear

3、多个Camera

  • 通过修改Camera组件中Viewport Rect的值(整个屏幕看成1,(x,y)代表左下角,(w,h)代表右上角),可控制Game中显示分屏
  • 将需要在前面显示的屏的Depth调大
  • 摄像机可以有多个,但Audio Listener只能有一个,创建Camera时会自动附带这个组件,将主摄像机的Audio Listener留下,其余删除,否则运行时会报错

4、做地图摄像机时,不要直接看场景,可准备一张真是地图图片,让照相机只看图片和人物头顶,可加快性能

3、Instant OC

1>渲染管线

图形数据在GPU上经过运算处理,最后输出到屏幕的过程

理解: 首先将经过CPU计算得到的顶点进行坐标系变换;其次,连接相邻顶点,构成三角面;再次,计算三角面中像素的值;然后,对每个像素进行着色处理,保存到帧缓存中;最后输出到屏幕。
Unity3D数字孪生开发笔记——软件基础篇_第1张图片

1、顶点处理

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

2、图元装配

  • 连接相邻的顶点,绘制三角面

3、光栅化

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

4、像素处理

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

5、缓存
一个存储像素数据的内存块,最重要的缓存时帧缓存与深度缓存

  • 帧缓存:存储每个像素的色彩,即渲染后的图像,站换乘常常在显存中,显卡不断读取并输出到屏幕中
  • 深度缓存 z-buffer:存储像素的深度信息,即物体到射型及的距离,光栅化时便计算各像素的深度值,如果新的深度值比现在值更近,则像素颜色被写到帧缓存,并替换深度缓存

注意 :不考虑光照的情况下,一个物体一个Draw call

2>Occlusion Culling

即时遮挡剔除:Instant Occlusion Culling

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

缺点:CPU有额外开销(需要计算物体到摄像机的距离)
适用于:物体分布较密集,有大量物体被遮挡

3>LOD

多细节层次:Levels of Detail

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

注意: 使用LOD时,模型必须命名为Lod-0、Lod-1……

缺点:CPU有额外开销、占用内存更多
适用于:场景存在高面模型,且高面模型有远近变化的场景

4、Light

1>Global Illumination

简称GI,即全局光照

  • 能够计算直接光、间接光、环境光以及反射光的光照系统
  • 通过GI算法,可以使渲染出来的光照效果更佳真是丰富

a>直接光照

从光源发出的光,通过Light组件实现

1、Type:
-Directional Light 平行光:平行发射光线,可以照射场景内所有物体,用于模拟太阳
-Point Light 点光源:在灯光位置向四周发射光线,可以照射其范围内的所有对象,用于模拟灯泡
-Spot Light 聚光灯:在灯光位置向圆锥区域发射光线,哉悠哉这个区域内的所有物体才会受到光线照射,用于模拟探照灯
-Area Light 区域光:有一个面向一个方向发射光线,只照射该区域内物体,仅烘培时有效,用在关系概念较为集中的区域

2、阴影剔除:设置现设阴影的距离
Edit–>Project Settings–>Quality–>Shadows Disdance

b>环境光照

作用于场景内所有物体的光照,通过Environment Lighting 中的Ambient 控制

1、Ambient Source :
-Skybox 通过天空盒颜色设置环境光照

-Gradient 梯度颜色

  • Sky 天空颜色
  • Equator 地平线颜色
  • Ground 地面颜色

-Ambient Color 纯色

c>反射光照

根据天空盒或立方体贴图计算的作用于所有物体的反射效果,通过Environment Lighting 中的Reflection 控制

1、Reflection Source:
-Skybox 天空盒

-Custom 自定义

  • Cubemap 立方体贴图

d>间接光照

物体表面在接受关照后反射出来的光,通过Light组件中的Bounce Intensity 反弹强度控制,可以在Scene 面板Irradiance模式查看简介光照

注意: 只有标记Lightmaping Static 的物体才能产生间接反弹光照

2>Realtime GI

实时GI: 在运行期间任意修改光源,而所有的变化可以立即更新

1、操作步骤:

  • 游戏对象设置为Lightingmap Static
  • 启用Lighting 面板的Precomputed Realtime GI
  • 点击Build 按钮(如果勾选Auto 编辑器会自动检测场景的改动修复光照效果)

3>Lightmap

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

注意: 只有标记Lightmaping Static 的物体才能使用烘焙

4>Light Probes

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

5、声音

1、Unity支持的音频文件格式:mp3、ogg、wav、aif、mod、it、s3m、xm。

2、声音分为2D、3D两类:

  • 3D声音:有空间感,近大远小
  • 2D声音:适合背景音乐

3、在场景中产生声音,主要依靠两个重要组件:

  • Audio Listener 音频监听器:接收场景中音频源Audio Source 发出的声音,通过计算机的扬声器播放声音
  • Audio Source 音频源

三、其他

1、Mesh Filter 网格过滤器:用于从资源中获取网格,决定物体的形状;
2、Mesh Renderer 网格渲染器:决定物体的外观;

3、一个Project包含多个Scene,一个Scene包含多个GameObject,一个Gameobject包含多个Component;

4、创建父对象时,可先建立一个空的3D目标(Creat Empty),然后将子对象全都拖入空对象,经过Reset后再做调整;
5、子对象的坐标轴时相对于父对象的:移动父对象,子对象的Position不发生变化;旋转父对象,子对象的Rotation不发生变化;

6、2D图片的要求:
1>背景图片,一般为JPG
2>人物、道具等其他照片,一般为PNG(背景透明)
Unity可接受图片类型:PNG、JPG、PSD

你可能感兴趣的:(数字孪生,unity3d)