一、网格

1.定义

网格是 GameObject 的 3D 骨架。Unity 中的每个 GameObject 都有一个网格。它是对象的几何元素。

2.结构

网格是由顶点(单数:vertex )定义的一系列平面 2D多边形,这些顶点是 3D 空间中存储为 XYZ 坐标的点。

如果 3D 对象仅由 2D 多边形制成,那么它将像钻石或其他宝石一样刻面。3D 网格需要额外的信息才能使它们在某些地方显得平滑或弯曲。

网格数据还包括法线,它们是定义表面所面对方向的附加值。当所有法线都垂直于边缘时,形状看起来平坦且多面,如上图所示。
法线表示多边形的形状;例如,它是弯曲的而不是平坦的,以及它是如何弯曲的。着色器根据法线将网格渲染为弯曲的,而不实际更改网格。球体实际上是由许多平面组成的网格,但它的法线使表面看起来很光滑。

3.相关组件

网状过滤器组件

Mesh Filter 组件指向您项目中的网格坐标数据。

网格渲染器组件

Mesh Renderer 组件是您指定如何渲染网格的地方。

Explore meshes and rendering - Unity Learn

二、渲染与渲染管线(render and pipeline)

1.渲染

渲染是获取三维 (3D) 数据并使用它为屏幕生成二维 (2D) 图像的过程。

进一步分解:在 Unity 中,我们可以定位 3D 模型,将材质应用于这些模型,并将虚拟相机对准它们。渲染是获取所有数据(对象几何、位置、颜色、照明等)并从相机的角度生成图像。
基于物理的渲染physically based rendering (PBR)

2.渲染管线

如果渲染是从 A 点到 B 点(3D 数据到 2D 图像)的过程,那么您可以将渲染管道视为到达那里的不同方式。

由于每个渲染管线使用不同的技术和计算来生成 2D 图像,因此结果可能会有所不同,具体取决于选择的管线

Get started on your guided project - Unity Learn

三、着色器

1.定义

着色器是一个脚本,它应用材质中包含的属性来将 3D 对象的网格渲染到屏幕上的 2D 图像。

每个着色器都是为特定的渲染管道编写的。

Explore shaders - Unity Learn

2.shaders and materials的关系

着色器定义了表面的外观,而材质定义了它的外观

Manage materials in a project - Unity Learn

四、反射

1.漫反射:Base Map(AlbedoDiffuse Map

什么是反照率(Albedo)?

反照率一词描述了漫反射的测量。它通常指定为常规颜色,表示为红色、绿色和蓝色的三个值(RGB 值)。RGB 值可以转换为色调、饱和度和亮度(亮度)的值。反照率颜色的亮度对应于漫反射的量,色调和饱和度描述了从表面逸出的光的质量。

为什么叫地图(Map)?

地图可以是纯色的,也可以用 2D 图像指定以增加表面的变化。您用于设置 Base Map 属性的颜色选择器仅将所选颜色应用为纯色。

2.镜面反射:Specular、smoothness

高光不同于平滑度。我们可以把一个红苹果打磨到非常光滑,但它永远不会变成金属。然而,为了有任何镜面反射,一个光滑的物体必须有一些镜面反射。

下图中的苹果具有相同的平滑度,但增加了高光度。

Specular、Metallic

镜面反射作为材料的一种属性,是一种指定表面看起来像金属的方法。您可以使用两种工作流程来指定材质中的金属外观——Specular、Metallic

Metallic 工作流程更常见,因为它更易于使用,但它并不科学。高光工作流程基于真实世界的反射率原理,但彩色高光贴图使其更具挑战性。

3.平滑度smoothness

平滑度,也称为光泽度光泽度,使镜面反射成为焦点。从光滑的表面,光线以均匀的方式反射,因此您可以在反射中看到光源的形状。

在下图中,所有五个苹果的金属色设置均为 0.5,平滑度增加。在最光滑的一张上,我们可以看到桌子的灯光和反射。

Simulate solid surfaces - Unity Learn

五、贴图、纹理(Maps、textures)

1.什么是纹理?

定义:贴图是 2D 图像,它像一张纸一样环绕游戏对象,以设置网格中的颜色、镜面反射或金属度、物理纹理和其他属性。包含地图的图像文件称为纹理

纹理是您可能熟悉的格式的常规图像文件,例如 BMP、TIF、PNG 和 JPG。
图像文件中的数据被组织成通道
黑白图像,也称为灰度图像,只有一个通道来指示每个像素中的灰度阴影。
彩色图像需要三个通道,红色、绿色和蓝色 (RGB),它们结合起来可以创建您在计算机显示器上看到的颜色。
某些图像文件格式有四个通道:红色、绿色、蓝色和 alpha (RGBA)。Alpha 通道通常包含透明度数据。

2.底图纹理base map textures

底图纹理(也称为漫反射反照率)是一个常规 RGB 或 RGBA 彩色图像文件,用于定义对象表面的漫反射(即颜色)。
底图还可以在地图的 Alpha 通道中包含透明度信息。

用于改变颜色

将纹理从 Project 窗口拖到材质的Base Map属性左侧的空框中;

尝试使用颜色选择器设置基色来为底图纹理着色。通常你会希望这种颜色是白色的,这样它就不会改变纹理颜色,但有时着色会很有用。

3.平铺纹理Tiled textures

平铺纹理的纹理设计为围绕任何网格平铺。每个文件中的地图就像地板上的瓷砖一样简单地重复。

属性:

平铺是网格表面上每单位的平铺数量。数字越大,图案越小。

偏移从不同的点开始平铺。例如,0.5 的 X 偏移将平铺偏移纹理宽度的一半。

4.UV贴图纹理

对于像球体这样的基元和像我们的块这样的简单形状,纹理贴图在哪些点与对象的网格对齐并不重要。但是在角色模型等详细对象上,纹理贴图与网格的对齐非常重要!

纹理如何环绕网格?

在建模应用程序中创建 3D 模型时,应用程序使用称为UV 映射的过程生成这些纹理

UV 映射是展开 3D 模型的表面以创建平面,然后对其应用 2D 纹理贴图的过程。在此过程中,建模应用程序生成 UV 坐标,允许将纹理回绕到模型上。

Map materials with textures - Unity Learn

待续。。

unity3d学习笔记-着色器(1.一些概念)相关推荐

  1. unity3d学习笔记-着色器(3.凹凸贴图Bump Maps)

    一.凹凸贴图Bump Maps 1.目的意义 考虑低多边形网格(多边形较少的网格)和高多边形网格之间的区别.渲染高多边形网格需要更多的计算能力,因为更多的多边形意味着有更多的数据需要处理. 但是使用凹 ...

  2. unity3d学习笔记-着色器(5.自定义着色器)

    一.界面介绍 创建方法:右键单击并选择Create > Shader > Universal Render Pipeline > Lit Shader Graph :这将在文件夹中创 ...

  3. unity3d学习笔记-着色器(4.一些贴图)

    1.遮挡贴图occlusion maps 即使在 PBR (基于物理的渲染)中,环境光也会以奇怪的方式反射它应该被遮挡的地方.遮挡贴图为这些遮挡区域添加阴影. 遮挡图与 3D 建模软件中的大多数模型一 ...

  4. unity3d学习笔记-光照(1.一些概念)

    一.直接光照和间接光照之间的区别 1.直射光是发射的光,撞击表面一次,然后直接反射到传感器中. 2.间接光是最终反射到传感器中的所有其他光,例如多次撞击表面的光以及当您不直接看太阳时来自天空的光.(请 ...

  5. Unity3D学习笔记3——Unity Shader的初步使用

    文章目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. ...

  6. Unity3D学习笔记6——GPU实例化(1)

    文章目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成 ...

  7. Unity3D学习笔记8——GPU实例化(3)

    文章目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1) ...

  8. Unity3D 学习笔记4 —— UGUI+uLua游戏框架

    Unity3D 学习笔记4 -- UGUI+uLua游戏框架 使用到的资料下载地址以及基础知识 框架讲解 拓展热更过程 在这里我们使用的是uLua/cstolua技术空间所以提供的UGUI+uLua的 ...

  9. Unity3D学习笔记:粒子特效参数

    Unity3D学习笔记:粒子特效参数含义 转载 https://blog.csdn.net/asd237241291/article/details/8433534 粒子特效 粒子系统检视面板 初始化 ...

最新文章

  1. iframe元素內嵌页面如何去掉继承的html及body背景色/背景图片
  2. string日期格式化_java面向对象---日期类
  3. javascript jquery 获取select选中的值
  4. 使用 CORBA 和 Java IDL
  5. 转:MySQL史上最全性能优化方式
  6. 第八十四节,css布局小技巧及font-awesome图标使用
  7. linux开源文档管理系统_Linux中的系统管理员问题 免费和开源软件
  8. 车厢调度(信息学奥赛一本通-T1357)
  9. 【python笔记】 for循环和while循环,break和continue语句
  10. html5文章 -- 应用HTML5 开发手机APP
  11. Photoshop CC(2018)安装破解
  12. 宏基ACER E1-471G拆机心得及注意事项
  13. 小窗终曲说策划(有空就看看吧,可能对设计想法有所帮助,不仅仅是游戏方面
  14. 【原创】Kinect for windows SDK 入门学习资源合辑
  15. Java练习题【新】
  16. 四足机器人(从PCB到3D打印)
  17. 为什么粘贴是crtl+v
  18. 推荐:雨林木风Linux
  19. 平台业务收款分账产品设计 - 退款退分账
  20. 二氧化铅,氧化锌,四氧化三铁-碳复合材料增容电池的方法

热门文章

  1. 计算机英语kbc,计算机英语词汇(附;翻译).doc
  2. 关于浏览器主页被https://hao.360.com/?src=lmls=n78852a3c9b劫持
  3. 智卡调度APP的隐私声明
  4. 如何通过储蓄USD获得100%+年化收益
  5. 电力机车电子脚踏开关中霍尔开关的选择DRV5013/CHA442
  6. php 识别图片五星好评,jquery实现五星好评方法
  7. SAPABAP金色传说:SELECT SUM(CASE WHEN THEN END)语法示例
  8. ASO第一步-什么是ASO,与SEO的区别?
  9. Google play ASO 关键字指南
  10. 大连在线旅游网站推荐-找驴网