自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

这也是生活的一部分

你是你梦想路上唯一的障碍。

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

原创 练习项目(十):非真实感渲染的几个小知识点

概述本篇内容比较简单,主要介绍非真实感渲染中的几种轮廓线实现方法,再介绍一下卡通着色和素描风格的渲染技术。 一、表面角度轮廓线实现思路:利用视线方向和顶点法线的点积,得到轮廓线的信息。点积越接近0,说明距离轮廓线越近。这种方式的优点是,只需要一个Pass就可以得到结果,简单、快速。但缺点也很明显,只适用于某些类型的模型,对于像Cube这样的模型就会有问题。由于这种方法渲染得到的轮廓线宽度不均,实际应用不多。效果如下:代码如下二、程序几何轮廓线实现思路:使用两个Pass渲染,第一个Pass

2021-02-28 12:57:16 298

原创 练习项目(九):反射、折射相关计算

概述反射、折射,在实现水面、玻璃等效果的时候,都多多少少会用到一些。本文主要简单介绍一些实现反射和折射的知识。使用天空盒来代表环境的信息。 一、简单的反射反射,表现为物体反射它周围的环境。根据观察者的视角,反射会影响到物体本身的颜色表现。镜子就是一个反射性物体,它会根据观察者的视角反射它周围的环境。在中学的物理课中,应该就学习过入射角、反射角等概念。反射的原理并不难,只是根据视角方向、法线方向,计算出反射方向,用来采样立方体贴图(此处是天空盒)。下图简单描述了这个过程:已知视角方向viewDir

2021-02-28 12:56:21 863

原创 练习项目(八):在URP中显示法线图

概述在Build in渲染管线下,获取深度图、法线图很简单。但是在URP下,获取深度图很简单,但是并没有提供对获取法线图的支持。本文主要参考Build in渲染管线下获取法线图的原理,在URP下获取法线图。 一、Build in渲染管线中获取法线图在Build in渲染管线中,获取法线图很简单,在脚本中添加如下代码,然后挂在相机上即可。这样,深度、法线信息就会存储在名为_CameraDepthNormalsTexture的图中,在Shader中可以采样该图获取深度、法线信息。Camera.main.

2021-02-28 12:55:20 1437

原创 练习项目(七):几种简单的阴影实现

概述再次说明一下,最近的几篇“练习项目”,都是在学习这个Github项目,使用URP重新实现一遍。对于本篇的内容,我也纠结了很久,纠结要不要写本篇博客。因为本篇的内容没有什么知识点,只是介绍了一些比较受限的阴影实现。最后还是决定要写下来,让这个“练习项目”完整一点。 一、用面片实现阴影说起来也是缘分,几年前刚毕业进入一家游戏公司,那时候做的是横版2D游戏,游戏内角色的阴影就是用这种方式实现的。后来也有几款游戏延续了这种实现方式。这种方式很简单,用一个圆形的面片代表阴影,放在要产生阴影的物体下方,跟随

2021-02-28 12:54:13 544

原创 练习项目(六):Back facing描边法

概述描边,在卡通渲染中是一个非常重要的主题。目前比较流行的描边方法有两种:一种是基于后处理的描边,这种方式相对不容易定制,适用于对复杂场景的描边;一种是过程式描边,通过两次绘制,一次绘制本体,一次绘制描边。本文主要介绍第二种描边方式,在《GUILTY GEAR Xrd》中称其为Back Facing法。一、基本的实现描边基本思路是通过两次绘制,一次绘制本体,一次绘制描边。这里就有个问题,两次绘制的顺序怎么处理呢?经过试验可以发现,两种顺序可以得到相同的结果。本文使用的顺序是先绘制本体,再绘制描边

2021-02-28 12:53:12 633

原创 练习项目(五):程序化生成多边形

概述本篇是“练习项目”系列的第五篇,主要练习程序化生成各种多边形的例子。这一篇博客,主要都是一些数学知识,这里推荐一个软件:GeoGebra。这个软件可以很方便地画出各种函数的几何表示,对于问题的分析很有帮助。实例1、圆形在UV坐标系中,根据给定的圆心和半径,判断当前片元的UV值到圆心的距离是否小于半径。主要的代码如下:float Circle(float2 center, float radius, float2 uv){ return 1 - step(radius, distance(

2021-02-28 12:52:01 421

原创 练习项目(四):深度图基础及应用

概述本篇是“练习项目”系列的第四篇,主要介绍一下深度图的原理,以及使用深度图实现一些炫酷的效果。这里再次说一下,本系列的文章,大部分是根据网上的博客,把项目从Build in管线转到新版的URP管线。前面三篇文章,基本没遇到什么因为管线不同而产生的困难。但到了深度图和后处理,新旧管线之间还是有相当大的不同的,在这里绕了不少弯路,希望这里多注意一下。一、原理深度纹理实际就是一张渲染纹理,只不过它里面存储的像素值不是颜色值,而是一个高精度的深度值。由于被存储在一张纹理中,深度纹理里面的深度值范围是[0,1

2021-02-28 12:42:46 2089 1

原创 练习项目(三):表面凹凸技术

概述本篇是“练习项目”系列的第三篇,主要介绍一下利用表面凹凸技术提升物体的表面细节。为了提升模型表面的细节,一个可以想到的方式是制作更加复杂的网格,但这是不可取的。一方面会增加美术人员的工作量;另一方面,也会对机器的性能造成很大的消耗。本篇文章,将介绍一些表面凹凸的技术,来达到提高表面细节的目的。一、凹凸贴图(Bump Mapping)这种技术,使用高度图来计算法线。给定一张高度图,通过计算相邻像素的高度差值来改变表面法向量。为了计算(u,v)处的法向量,要经过以下几步。第一步,在(u-1,v)和

2021-02-28 12:40:06 242

原创 练习项目(二):消融效果

概述本篇是“练习项目”系列的第二篇,主要介绍一下利用消融实现的效果。在游戏开发的过程中,有很多看起来很神奇的效果,都是使用消融的原理实现的。原理主要的原理,就是使用噪声图和透明度测试,根据噪声图中采样的值,对某些像素进行剔除。1、基本原理实现这里会实现一个最基础的项目,来简单了解消融的基本原理。主要的代码如下:float cutout = SAMPLE_TEXTURE2D(_NoiseTex, sampler_NoiseTex, input.uv.zw).r;AlphaDiscard(cuto

2021-02-28 12:38:45 555

原创 练习项目(一):顶点动画

概述之前是使用OpenGL练习图形学项目的,现在要转向在Unity 3d中练习图像学项目。由此,才有了这一系列的项目。本篇将从比较简单的顶点动画说起,开启图形学的篇章。原理主要的原理,就是在顶点着色器中,对顶点进行各种偏移。这种偏移,可以根据自己的需要,在模型空间、世界空间、裁剪空间等空间中进行。1、压扁效果开放两个属性,TopY和BottomY,代表物体的上部和底部(世界空间中的数值)。再开放一个滑动属性用来控制顶点运动的幅度。以TopY为基准,先计算出每个顶点的世界坐标,然后对顶点的Y坐标进

2021-02-28 12:32:55 878 1

原创 法线贴图那些事儿

概述在学习法线贴图的过程中,有几个比较难以理解的概念,这里记录一下。特别说一下,本文的法线贴图是切线空间下的法线贴图。空间变换如上图所示,简单表达了在使用法线贴图的过程中,涉及到的几个空间变换:切线空间:从法线贴图中采样得到的法线,在切线空间中;对象空间:物体的本地坐标空间,顶点的相关信息,在对象空间;世界空间:光源位置、观察者位置等,在世界空间中。在空间变换的过程中,主要涉及到了两个变换矩阵:TBNTBNTBN矩阵:从切线空间变换到对象空间;ModelModel

2020-05-25 08:04:50 556

原创 令人迷惑的Gamma

概述首先我想说,接触到Gamma的概念也很长时间了,一直没有认真的去学习它。知其然而不知其所以然。最近恰巧学到了这一部分,就想彻底地搞懂它。CRT说起Gamma,肯定离不开CRT(阴极射线管)。CRT(阴极射线管)是大多数计算机显示器、视频监视器、电视接收器和示波器中使用的显示设备,由德国科学家 Karl Ferdinand Braun于1897年发明。它的特点是荧光屏被加热的阴极发...

2020-04-20 09:58:32 468

原创 深度缓冲中的深度值计算及可视化

概述在渲染管线中的顶点变换中,介绍了顶点在各个坐标空间的变换。变换到最后,是屏幕坐标空间。在OpenGL中,屏幕空间坐标的Z值即是深度缓冲中的深度值。深度缓冲包含了一个介于0.0和1.0之间的深度值,它将会与观察者视角所看见的场景中所有物体的z值进行比较。本文将介绍深度值的计算,以及从深度值反向计算出相机空间中的顶点的Z值。深度值计算在渲染管线中的顶点变换中,计算得到了透视投影矩阵:Mpe...

2020-04-09 16:41:16 477

原创 渲染管线中的顶点变换

概述在图形学渲染管线中,一个顶点坐标,大概要经历局部坐标系、世界坐标系、相机坐标系、裁剪坐标系,最后到窗口坐标系,显示在屏幕上。在这些过程中,从一个坐标系到另一个坐标系,都需要进行一定的变换。下面,将介绍每次变换的方式。注意,本文是针对OpenGL的。局部空间->世界空间这一变换过程,主要是将模型放置在世界空间中,进行一定的缩放、旋转或平移。这一步比较简单,只要将相应的矩阵作用到...

2020-04-08 17:49:37 960

原创 导入图片时设置默认格式

导入图片时设置默认格式当我们将图片导入到工程中时,unity 3d会对图片进行处理,设置图片的默认格式。如下图所示,是图片导入到工程中,unity 3d进行的默认设置。 但是,一般情况下,这样的图片格式并不能满足我们的需求。所以我就想,有没有办法修改图片导入时设置的格式呢?答案是有的。 首先说一下思路: 1. 我们可以在Assets文件夹下建立一个文件夹,例如:G

2017-07-16 11:11:54 1183 1

原创 查找丢失组件的预制体

在制作游戏的过程中,我们经常会遇到预制体丢失组件的情况,如下图所示。      预制体丢失组件,一般情况下如果我们不去获取该组件,就不会报错或影响游戏的运行。但是在游戏加载该预制体时,会报警告,看到Console中有警告的话也是非常难受的。考虑到游戏中使用了上百的预制体,每个预制体又由数个甚至数十个子物体组成,手动寻找丢失组件的预制体的工作量太大,不具有很好的可操作性。

2017-03-02 08:13:27 1158

原创 移动到目标点的方法

考虑这样一个需求:敌人出生在A点,需要到达B点去攻击主角。之前,我是这样实现这个需求的(只考虑Z轴的移动): 1 using UnityEngine; 2 3 public class Test : MonoBehaviour 4 { 5 /// 6 /// 目标点 7 /// 8 Vector3 targetPos; 9

2017-02-25 21:14:32 459

原创 关于material和sharedMaterial的问题

在unity3d中,Renderer组件有两个属性:material和sharedMaterial,它们都可以用来获取Renderer的材质属性。但是它们之间却又很大的区别,下面通过示例来讲解一下。准备工作:unity3d中新建一个空场景;创建两个cube,分别命名为Cube0、Cube1;在Project中新建一个材质球,取名M0,shader选择Unlit/Color,shader的M

2016-11-18 21:23:28 2044

原创 LINQ To XML的一些方法

1、Elements()返回XML文档或片段的所有第一级元素。2、Descendants()返回XML文档或片段中的所有子元素(所有级别的子元素)。3、Attributes()返回当前选中元素的所有特性。

2016-02-15 09:00:23 306

转载 关于Unity3d中的LayerMask使用

http://blog.csdn.net/monzart7an/article/details/22605949

2015-11-12 17:02:17 517

原创 在unity的scene中画五角星

使用Gizmos的DrawLine方法画线。首先在场景中找到五角星的五个定点的坐标,按照一笔画的顺序命名为1,2,3,4,5,如图所示:接下来就是编写代码了,代码很少,如下所示:using UnityEngine;using System.Collections;public class fiveStars : MonoBehaviour { public Tr

2015-08-13 10:45:45 2077

原创 unity tips

1、在unity 的mecanim中,如果一个动画指向两个或两个以上的动画,那么在inspector中,transitions中可以看到所有的过渡路径,这些路径是有先后顺序的。

2015-07-28 16:03:32 372

原创 index < m_IntCount错误

在inspector中,重新添加动画的过度条件即可。参考

2015-07-28 14:01:39 1360

原创 unity 3d 生成apk文件时,设置图标

如图所示:注意红线标注部分:如果安装到手机之后,程序的图标还是unity的默认图标,重启手机即可。

2015-04-09 13:57:48 6377

原创 别踩白块(u3d)

刚开始接触unity 3d,现在要从头学起,模仿《别踩白块》做一个游戏。下面开始正文了。在做之前,先想好需要哪些界面。需要一个开始界面和一个游戏界面。由于刚开始,先做的是游戏界面。截图如下:用了一个面板做天空北京,一个球体做地面,摄像机角度调整好,有那么一点3D的感觉。将整个游戏场景放在一个空对象GameUI中,方面后面的编程。固定场景搞定,下面开始动态的游戏物体--黑白块了。游戏素材

2015-04-05 09:18:17 4148 1

原创 第三人视角,摄像机跟随代码

using UnityEngine;using System.Collections;public class CameraFollow : MonoBehaviour { public Transform target; // The distance in the x-z plane to the target public float distance = 10.0f; //

2015-04-01 13:19:42 718

原创 SQL SERVER 2005 请求失败或服务未及时响应

出现的问题如图所示,在开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager中,打开后找到"SQL Server 2005 网络配置"->MSSQLSERVER 属性的协议 在右边的属性框中把“VIA协议”禁用即可!

2015-01-25 22:50:21 1247 1

原创 SQL SERVER 2005 错误:18456

安装好SQL SERVER 2005之后,Windows身份验证无法登陆,出现18456错误。而sql server 身份验证可以用sa用户登陆。解决办法:用sa用户登陆,执行SQL 语句:CREATE LOGIN [soros\longfei] FROM WINDOWS中间括号里面的是计算机名和你的用户名。

2015-01-24 20:52:32 532

翻译 QUdpSocket Class

翻译自:QT官网文档QUdpSocket类Header:#include qmake:QT += networkInherits:QAbstractSocket.注意:这个类的所有函数都是不可重入的(reentrant)。所有类的列表,包括继承类

2014-11-29 18:42:35 3897

转载 qt获取本机网络信息

networkinformation.h#include#include#include#include#include#includeclass NetworkInformation:public QWidget{ Q_OBJECT public: NetworkInformation(QWidget *parent=0); void getHostInfo

2014-11-29 15:45:17 512

原创 PC和ARM平台编译Qt的命令

编译for PC 的Qt过程是:(1)qmake

2014-11-22 20:29:25 1304

原创 Qt开始学习的一些问题

1、需要将qmake、moc和qvfb的路径加入到系统的环境变量:qmake、moc:export PATH=$PATH:/usr/local/Trolltech/QtEmbedded-4.6.1-i386/binqvfb:export PATH=$PATH:/opt/QtEmbedded-4.4.3-i386/sdk/qtopiacore/host/bin2、遇到错误:Qt for

2014-11-18 16:53:21 599

转载 Ubuntu下嵌入式Qt开发环境配置全攻略

http://qpcwth.blog.163.com/blog/static/20993024620139151424822/在安装的过称中,出现y

2014-09-05 16:21:32 725

原创 计算机与ARM板通过路由器相连

首先,使用两根网线分别将计算机和ARM板与

2014-09-02 10:11:11 1912

原创 链表的基本操作

#include#includetypedef int datatype;//存储结构定义typedef struct LNODE{ datatype data; struct LNODE *next;}Lnode, *LinkList;//打印链表void printlist(const LinkList l){ LinkList p=l->next; while

2014-08-28 10:56:40 567

原创 两种矩阵转置的代码

#include#include//#define MAX_TERMS 101#define MAX_COL 50typedef struct{ int row; int col; int value;}term;//term a[MAX_TERMS];/*void transpose(term a[], term b[]){ int n,i,j,currentb

2014-08-23 10:27:53 1131

原创 Ubuntu亮度无法调节或调节无法保存的问题

装了搜狗输入法之后,系统设置里面的很多软件都没有了。以前盘

2014-08-17 09:16:25 697

原创 从头开始——重装ubuntu

一、装系统环境:计算机原版

2014-08-14 17:06:53 2322

原创 这个更新需要花去 50.6 M 磁盘上总计 /boot 的空间。请在 7737k 磁盘上留出 /boot 空间。清空您的回收站和临时文件,用“sudo apt-get clean

系统升级会下载多余的内核,删除即可。1

2014-08-13 08:34:58 4528

原创 多线程:pthread_exit,pthread_join,pthread_self

/*exit_join_id.c*/#include#includevoid* eji(void* agr){ printf("here is eji\n"); printf("PID= %u",(unsigned int)pthread_self()); pthread_exit("here all done!\n");}int main(int arg

2014-08-12 20:34:04 513

别踩白块源码和apk文件

使用unity 3d开发的别踩白块。包含工程文件和apk文件。

2015-04-05

空空如也

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

TA关注的人

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