自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

by UPiracy

坚定的Unity程序员

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 图形学笔记(八) 光和光照(加工中)

光和光照光照模型光有什么样的几何性质?光学具有三重领域,按照其诞生的历史顺序分为几何光学、波动光学和量子光学。而在计算机图形学领域,我们仅关注光的几何性质。在几何光学中,我们仅考虑可视光,而不考虑其它电磁波。可视光的波长特别小,几乎可以忽略其波动特性,而仅研究其粒子性。在这个背景下,光可以在宏观视角下由几何学描述,光可以认为沿直线传播。虽然在物理仿真程序中,计算机确实可以模拟出完整的几何光学和部分的波动光学,但对于追求视觉正确而非本质正确的图形学领域来说几何光学仍然过于复杂。相比标准的几何光学,图形

2020-07-20 23:29:28 1034 1

原创 图形学笔记(七) 色彩与混合

色彩与混合色彩空间人眼有什么样的生理特征?了解眼睛的生理特点可以帮助我们更好地掌控图形系统地设计。例如,眼睛受限于可查觉的最小亮度和最小分辨率。如果显示器像素可显示的亮度等级小于人眼可察觉的最小亮度差,或者其像素对人眼所张视角为眼睛最小角度分辨率二的1/10,那么该显示器的复杂性就超出了必要。人类视觉系统有强大的并行处理能力,这使得用户能接受从计算机传来的大量信息。视觉系统一方面可容纳简陋或粗糙的数据,如简笔画,但另一方面又对特定瑕疵极为敏感,能在数百万像素中找到错误的那一个。视觉系统可以很好地完

2020-07-20 23:26:17 2955

原创 图形学笔记(六) 模型与网格(加工中)

模型与网格常见的模型文件格式什么是三维模型?网格是由物体的点云连接形成的,点云中的顶点包括坐标、法线、切线等一系列信息。网格通常由三角形、四边形或者其它凸多边形组成,凹多边形会极大的影响渲染效率。一般的建模规范是,在CG领域尽量保持四边形建模,因为四边形网格能更方便的处理各类特效,同时对美术人员来说也易于修改;而在工业领域则应该导出三角形网格,因为三角形网格更加稳定,方便硬件理解。工业领域的网格必须是封闭几何体,在3Dmax等模型软件中都有封闭性检查算法。而CG领域的网格则不必是封闭集合体,它可以是

2020-07-20 23:20:48 3769

原创 图形学笔记(五) 空间图形的几何表示(加工中)

空间图形的几何表示曲线什么是埃尔米特曲线?**埃尔米特曲线(Hermit)**是一种插值曲线,也是样条曲线家族中最好理解的一种曲线。Hermit曲线给定曲线两个端点的位置矢量P0P_0P0​、P1P_1P1​和切线矢量T0T_0T0​、T1T_1T1​,通过插值获得曲线在定义域[0,1]上的三次参数方程:我们设目标参数方程为P(t)=at3+bt2+ct+dP(t)=at^3+bt^2+ct+dP(t)=at3+bt2+ct+d,则有P′(t)=3at2+2bt+cP'(t)=3at^2+2bt

2020-07-20 23:19:04 1011

原创 图形学笔记(四) 数学变换

数学变换点和坐标什么是点?注意区分图形学中的点与图论中的点:图论中的点重视点与点的拓扑结构,而不关心点的坐标,而图形学中的点没有严格限制拓扑结构,且及其关注点的坐标。在几何学中,点是最简单的形,是几何图形最基本的组成部分,在空间中作为1个一维的对象。在欧氏几何中,点是空间中只有位置,没有大小的图形。在解析几何中,点可以以坐标的形式表示。在计算机图形学中,坐标是点的本质属性。什么是笛卡尔坐标系?笛卡尔坐标系是我们一直以来接触的,也是计算机科学中最常用的坐标系类型,它有一个更通俗的名称——直角坐标

2020-07-20 23:12:08 863

原创 图形学笔记(三) 渲染流水线

渲染流水线综述渲染流水线的运行过程是怎样的?渲染流水线是在显存中开启的。CPU将网格、材质、贴图、着色器等注入显存后,GPU开始渲染流水线。渲染流水线分为几何阶段和光栅化阶段(也被称为像素阶段),并最终将运算结果送到显示器的缓冲区中。几何阶段分为顶点着色器->曲面细分着色器(DirectX11和OpenGL4.x以上可编程)->几何着色器->裁剪->屏幕映射五个步骤。光栅化阶段分为三角形设置->三角形遍历->片元着色器->逐片元操作四个步骤。显卡厂商会

2020-07-20 23:10:17 1652

原创 图形学笔记(二) 渲染控制(加工中)

渲染控制Draw Call什么是Draw Call?调用一次图像编程接口(图形API),以命令GPU进行渲染的过程就称为一次Draw Call。Draw Call的流程是什么?Draw Call的准备工作由CPU完成。第一步,CPU把一个网格的顶点数据从硬盘中加载到内存中(存在这一步的原因是大规模3D渲染中内存可能不足)。第二步,CPU对这个网格设置渲染状态(每个网格不等于每个模型/图片,因为存在批处理)。所谓渲染状态包括纹理贴图、材质属性和被编译为二进制文件的着色器。随着渲染状态一起被传递到

2020-07-20 23:04:36 233

原创 图形学笔记(一) 底层知识背景

底层知识背景显卡和GPUGPU和CPU的区别?主流CPU(Central Processing Unit,中央处理器)芯片上有四级缓存,消耗了大量晶体管,在运行时需要大量电力;主流GPU(Graphics Processing Unit,图形处理器)芯片最多有两层缓存,且GPU可以利用晶体管上的空间和能耗做成ALU单元,因此GPU比CPU效率高。CPU重在实时响应,对单任务速度要求高,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测、乱序执行、低延迟缓存等控制部分;GPU主要使用于具有极高可

2020-07-20 23:02:59 576

原创 图形学基础概念笔记(一)

图形学笔记常见专有名词显卡和GPUGPU和CPU的区别?主流CPU(Central Processing Unit,中央处理器)芯片上有四级缓存,消耗了大量晶体管,在运行时需要大量电力;主流GPU(Graphics Processing Unit,图形处理器)芯片最多有两层缓存,且GPU可以利用晶体管上的空间和能耗做成ALU单元,因此GPU比CPU效率高。CPU重在实时响应,对单任务速度要求高,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测、乱序执行、低延迟缓存等控制部分;GPU主要使用

2020-05-31 19:51:09 3011 2

原创 Unity音频采样器(用于Unity音乐可视化)

主要用于音乐可视化教程已经很多了,但是没有拖上来就能用的直接提供组件,欢迎复制黏贴using System.Collections;using System.Collections.Generic;using UnityEngine;namespace MusicSampler{ public class MusicSampler : MonoBehaviour { #region Inspector /// <summary>

2020-05-23 19:03:11 1167

原创 数字转汉字 C#实现

C# 数字转汉字​ 心血来潮需要用一发数字转汉字的算法,但是网上的好多现成算法bug满满,只好自己写了一波,欢迎指导捉虫,不多说直接上代码: public static class Format { static string[] Numbers = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌...

2020-03-25 16:28:08 962

原创 Unity全面入门笔记20-三种Event

event、Event 和 UnityEventevent和delegateeventevent是C#的保留关键字,是委托的一种封装。委托(delegate)可以理解为C或C++中的函数指针,可以保存具有特定返回类型和参数列表的方法的引用,并直接作为函数的参数间接调用目标函数。事件(event)则可以理解为基于委托的一个函数指针栈,可以包括来自不同类型的不同对象的不同方法。典型的委托...

2019-10-04 20:45:33 1689 1

原创 Unity全面入门笔记19-其它输入方式

其它输入方式输入管理器输入管理器我们可以在Unity的输入管理器(主界面菜单栏的"Edit"->“Project Settings”->“Input”)当中管理自己的键位,注意,目前Unity的输入管理器是不支持在Android和IOS端游戏中使用的。我们可以在脚本中通过Input.GetAxis方法来获得一个Axes的值。在前面我们已经通过这个方法获得过Mouse ...

2019-10-04 00:11:13 281

原创 Unity全面入门笔记18-几何输入

输入监控鼠标几何输入鼠标点击事件使用GetMouseButton来获取鼠标按键的事件:public static bool Input.GetMouseButton(int button);public static bool Input.GetMouseButtonUp(int button);public static bool Input.GetMouseButtonDo...

2019-10-04 00:09:14 255

原创 Unity全面入门笔记17-逻辑输入

输入监控逻辑输入键盘监控Input类会在每个逻辑更新其中的键值数据。我们可以使用Input中的方法来判断用户的输入情况,有两组、六个获取按键输入的方法:public static bool Input.GetKey(KeyCode key);public static bool Input.GetKeyUp(KeyCode key);public static bool Input...

2019-10-01 10:41:01 214

原创 Unity全面入门笔记16-异步

异步InvokeInvoke方法public void MonoBehaviour.Invoke(string methodName, float time);public void MonoBehaviour.InvokeRepeating(string methodName, float time, float repeatRate);public void MonoBeha...

2019-10-01 10:37:07 454

原创 Unity全面入门笔记15-生命周期

帧与时间帧帧长在Unity中,一帧是执行两次渲染的间隔时间,Unity会在两次渲染间进行逻辑运算。默认情况下,帧率是50帧每秒,也就是每0.02秒一帧。一帧的帧长还可以在主界面菜单栏的"Edit"->“Project Settings”->“Time”->"Fixed Timestep"进行修改。帧的存在相当于给了游戏逻辑一个硬性的规定:要想保证游戏的流畅,每一...

2019-10-01 10:35:35 714

原创 Unity全面入门笔记14-预制体

预制体Prefab创建PrefabPrefab的作用是保存一个GameObject的外观、组件及其属性,在需要用的时候方便快捷的将其复制,并且统一管理。Prefab作为被序列化的GameObject保存在硬盘中,它既可以作为布置场景时使用的模板物体,又可以作为在脚本中动态生成物体的模板。要创建Prefab,可以先在场景中创建想要作为Prefab的GameObject,在Hierar...

2019-10-01 10:28:37 1663

原创 Unity全面入门笔记13-Transform

TransformGameObject和Transform获取TransformTransform是每个GameObject都具有的属性,Transform是GameObject的一个特殊的Component。尝试删除Transform时会发现,Unity并没有提供可以删除Transform组件的选项,也就是说GameObject必须具有Transform组件。同样的,也没有任何方法...

2019-10-01 10:27:19 347

原创 Unity全面入门笔记12-组件动态操作

对组件的动态操作编译阶段自动添加组件前置组件使用RequireComponent标签标记一个MonoBehaviour,则这个组件被附加到一个GameObject上时会检测是否已经附加了前置组件,如果没有,则自动添加前置组件。[RequireComponent(typeof(CharactorController))]public class UnitManager : Mono...

2019-10-01 10:25:36 265

原创 Unity全面入门笔记11-自定义Inspector

自定义Inspector面板Attribute自定义Inspector使用Attribute实现下面的组件,体验几个Attribute的作用:public class EditorTest : MonoBehaviour{ [Header("属性标题")] [Tooltip("This is a property.")] public int proper...

2019-10-01 00:16:52 781

原创 Unity全面入门笔记10-暴露组件中的属性

Inspector中的自定义组件将属性暴露到Inspector访问权限自定义组件中的属性可以被暴露到Inspector,什么组件会被暴露到Inspector面板由设计这个组件的程序员决定。实现这个组件,将它挂到任意一个GameObject上,观察Inspector中这个组件可以配置的属性:public class InspectorTest : MonoBehavior{ ...

2019-10-01 00:12:25 844

原创 Unity全面入门笔记9-了解组件

组件InspectorComponent和GameObject组件(Component)是最终继承自MonoBehaviour的类的总称。组件实例必须附加在一个GameObject上才能发挥作用。在将脚本从Project面板中拖动到GameObject的Inspector面板中时,我们就将这个组件的一个实例附加到了GameObject上。在此之前我们已经成功将几个组件附加到GameO...

2019-09-28 22:47:56 286

原创 Unity全面入门笔记8-了解GameObject(2)

深入了解GameObjectGameObject的属性TagName下方的选项组,对应GameObject.tag,多用在控制碰撞和查找物体上。在创建标签时可以使用系统自带的标签,也可以在下拉菜单中点击New Tag来创造自定义标签。点击Add Tag…后,Inspector会跳转到Tags&Layers界面,在该界面下创建自定义标签后,需要重新点选GameObject...

2019-09-28 22:45:20 532

原创 Unity全面入门笔记7-了解GameObject(1)

深入了解GameObject创建GameObject前面说到,GameObject必须存在于一个场景中。在场景中创造游戏对象的方法有:在Hierarchy面板中使用Create命令创建新物体。将导入工程的模型文件、图片文件和音乐文件从Project面板直接拖入场景创建对应的物体。将Prefabs拖进场景创建物体。在脚本中获取gameObject可以在脚本类中使用gameObjec...

2019-09-28 22:43:40 536

原创 Unity全面入门笔记6-常用数学类型

Unity中的数学单位向量概述Unity中通过Vector2、Vector3、Vector4来储存二维、三维和四维向量(XYZW),同时还有Vector2Int、Vector3Int这两种整形向量。向量间具有加法和减法的运算符函数重载,向量和数值量间具有乘法和除法的运算符函数重载。坐标、位移、力、速度、旋转等都会用上向量。不同维度的向量互相存在强制类型转换,在高维向量转化为低维向量...

2019-09-28 22:40:53 543

原创 Unity全面入门笔记5-新建脚本

Unity中的脚本新建脚本C#脚本C#脚本的后缀名是*.cs。我们可以在Project面板中右键->“Create”->"C# Scripte"创建一个新的C# Script脚本。最好将新的脚本放在一个恰当的文件管理系统中,比如放置在Scripts文件夹中。新建一个cs文件后,双击即可进入Visual Studio编辑脚本。可以看到新的文件已经引用了System.C...

2019-09-28 22:32:44 414

原创 Unity全面入门笔记4-剩余面板

初识UnityInspector面板初识ComponentComponent是指那些继承自MonoBehaviour的类。每个GameObject都可以储存一系列Component,通过将我们编写的Component附加给需要的GameObject,我们可以实现游戏中需要的逻辑功能。Inspector面板的作用Inspector是Unity中管理Component的窗口,...

2019-09-28 22:30:43 278

原创 Unity全面入门笔记3-Game面板与Hierarchy面板

初识UnityGame面板Game面板的作用Game面板是游戏试玩窗口,展示的是游戏中渲染的实际场景。在Game面板中不能直接通过拖动来移动、旋转、缩放物体,也不能在Game面板中直接点击选中物体。进行试玩有三个按键是对Game面板进行控制的,他们是:Play按钮:在2 by 3布局下,Game面板会直接进入试玩模式;在default布局下,Scene面板会自动被切...

2019-09-28 22:25:07 2587

原创 Unity全面入门笔记2-界面布局与Scene面板

初识Unity界面布局界面布局设置第一次打开Unity时,应用默认界面布局,如下图所示。点击右上角的"Default"(有时是"Layout"按钮)打开下拉菜单,可以改变界面布局。在Unity中最常见的布局是Default布局和2 by 3布局。Unity中所有窗口都可以通过拖动标签的方式自定义位置,它们可以像windows窗口一样悬停在显示器中央,也可以附着在其它标签的周边...

2019-09-28 22:22:15 2706

原创 Unity全面入门笔记1-准备工作

新建Unity项目Unity Hub的项目管理界面新建项目打开Unity Hub的项目面板,点击新建按钮右方的下拉箭头,选择您要使用的Unity引擎版本,进入新建项目面板。选择项目模板不同模板之间的差异在于摄像机和渲染管道的设置,故使用任意一个模板创建的工程,都可以在创建后通过调整配置来切换到其它模板。2D、3D和3D With Extras模板使用的是原版渲染管...

2019-09-28 09:43:47 1834

原创 Unity全面入门笔记0-下载安装

关于Unity1. 前言为什么是UnityUnity已经是当前独立游戏行业最普遍使用的游戏引擎之一,甚至很多大公司也会使用Unity制作AAA巨作。无论您是程序员,还是设计师,或者画师,对Unity这个引擎有一定的了解都一定可以让您对自己的开发工作更加得心应手。并且,从Unity开始入门也能让您更快的上手Cocos-2D和Unreal这样的游戏开发引擎。本教材定位对于对U...

2019-09-28 09:37:24 296

图形学笔记 2020/12/22

图形学笔记未完成版,还有很多坑没有填,之后会慢慢更新。不直接传博文是因为更新图片太麻烦了,还存在很多bug

2020-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除