WorldSpace

Unity3D的四种坐标系(转)

浪子不回头ぞ 提交于 2021-01-09 18:10:19
【 Unity3D的四种坐标系 】 1、World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 2、Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点, 右上角为(Screen.width,Screen.height) ,Z的位置是以相机的世界单位来衡量的。注:鼠标位置坐标属于屏幕坐标, Input.mousePosition 可以获得该位置坐标,手指触摸屏幕也为屏幕坐标, Input.GetTouch(0).position 可以获得单个手指触摸屏幕坐标。   Screen.width = Camera.pixelWidth   Screen.height = Camera.pixelHeigth 3、ViewPort Space(视口坐标):视口坐标是标准的和相对于相机的。相机的左下角为(0,0)点,右上角为(1,1)点,Z的位置是以相机的世界单位来衡量的。 4、绘制GUI界面的坐标系:这个坐标系与屏幕坐标系相似,不同的是该坐标系以屏幕的左上角为(0,0)点, 右下角为(Screen.width,Screen.height) 。 【 四种坐标系的转换 】 1、世界坐标→屏幕坐标:camera.WorldToScreenPoint

Unity2019学习:常用功能--Canvas画布

♀尐吖头ヾ 提交于 2021-01-06 11:54:43
Canvas(画布)游戏对象是其他Unity UI的基础,其他的Unity UI必须是Canvas(画布)游戏对象的下级游戏对象。 当UI内容发生变化的时候,是以画布为单位进行重绘,合理的将内容分配到不同的画布可以提高性能。 Render Mode(渲染模式) Screen Space Overlay(屏幕空间-覆盖) 屏幕空间-覆盖是根据屏幕分辨率进行渲染,不参考场景中的任何游戏对象或者摄像机,渲染之后将其绘制在其他所有内容之上。 Screen Space Camera(屏幕空间-摄像机) 屏幕空间-摄像机是将画布设置为摄像机前方视野中的一个平面。 这种模式下,必须通过Render Camera(渲染摄像机)属性来指定摄像机,且只有在被指定的摄像机中,画布才是可见的。 Plane Distance(平面距离)属性用来指定画布到摄像机的距离,该距离不会影响画布中内容的大小,但是会被距离摄像机更近的其他游戏对象遮挡。如果Plane Distance(平面距离)属性的取值在摄像机Clipping Planes(剪裁平面)属性的取值范围之外,画布仍然是不可见的。 World Space(世界空间) 世界空间这种渲染模式是将画布变成了Unity空间的一个普通游戏对象来处理。世界空间这种渲染模式的画布经常做游戏对象的名称或者说明上,如NPC头顶的名称,血条。 Canvas Group(画布组

纹理映射和MipMap

☆樱花仙子☆ 提交于 2020-08-09 21:08:59
1 纹理映射(Texture Mapping) 首先让我们一起来观察这样一张图: 无论是球上的图案,以及地板的木头纹理都呈现出了不同的颜色信息,那么回想在讲解Blinn-Phong反射模型的时候曾提到,一个点的颜色是由其漫反射系数决定的,反射什么颜色的光,人眼就能看见什么颜色。那么针对上面这幅图,难道要去针对每一个点自己去设定一个颜色吗?还是说有什么更方便的方法呢?那便是 纹理映射 了! 我们可以将三维物体上的任意一个点都映射到一个2维平面之上,举一个简单例子,地球仪: 倘若拥有从3维World space到2维Texture space的一个映射关系,那么只需要将每个点的颜色信息即漫反射系数存储在2维的Texture之上,每次利用光照模型进行计算的时候根据映射关系就能查到这个点的漫反射系数是多少,所有点计算完之后,结果就像最左边的screen space之中,整个Texture被贴在了模型之上。 有了Texture,有了映射关系,对渲染结果会有一个非常大提升,因为很多fancy的效果都可以通过texture的设计得到(当然这属于美术的活儿了,咱们用就行了)。可以看这样一个有点丑的例子。 可以看到在利用texture渲染之后,这个独眼怪物丑的更有特点了。 好了,相信到这大家都对纹理映射了有了一个大概的了解,那么有了一张Texture之后,这种映射关系究竟是如何表示的呢

一天干掉一只Monkey计划(四)——卡通着色,描边

旧街凉风 提交于 2020-08-06 08:04:59
一天干掉一只Monkey计划(四)--卡通着色,描边 --Zephyroal 楔子: 实在无奈,Unreal的世界浩如烟海,在里面一点一点地爬动,很充实,但也很无奈,加之最近加入自行车驴行俱乐部,几乎都没有什么时间出来搞些自己的小小兴趣爱好了,老大说的好“每一个年轻程序员都有一颗渲染的心”,正好有相关方面的应用,写下此篇,总结一下卡通渲染方面的知识,摘录不少,这里不一一谢过了,最后用RM做了相关的实现,工程文件就懒地放了,最怕害了一样手懒的童鞋,下个东西就当学习结束了,以我自己的深刻教训,理论与实际永远隔着一条银河,牢记,自勉: 实践是检验真理的唯一标准! 一、 技术背景 非真实感绘制 (Non-photorealistic rendering) (NPR)是计算机图形学的一类,主要模拟艺术式的绘制风格,也用于发展新绘制风格。和传统的追求真实感的计算机图形学不同,NPR受到油画,素描,技术图纸,和动画卡通的影响。NPR已经以"卡通造影"的形式出现在电影和电子游戏中,它也已出现在设计图纸和试验动画中 卡通渲染便是一种典型的常用非真实感绘制技术,它要求帖图由不明显的渐变色块夹杂一些不复杂的纹理组成。它强调粗细线条(Silhouette,轮廓勾边)和简单色块(ToonShading,块状色调着色),忽略细节。利用这些很简单很纯粹的线条和色块,就能渲染出设计师所要求的质感很强的卡通效果

Unity3D法线转换与切线空间总结

空扰寡人 提交于 2020-03-23 20:48:40
3 月,跳不动了?>>> 本篇为大家总结了Unity3D中的法线转换与切线空间知识。在Shader编程中经常会使用一些矩阵变换函数接口,其实它就是把固定流水线中的矩阵变换转移到了可编程流水线或者说GPU中,先看下面的函数语句: // Transform the normal from object space to world space o.worldNormal = mul(v.normal, (float3x3)_World2Object); 在这里先给大家介绍一下,为何使用此函数,模型的顶点法线是位于模型空间下的,因此我们首先需要把法线转换到世界空间中。计算方式可以使用顶点变换矩阵的逆转置矩阵对法线进行相同的变换,因此我们首先得到模型空间到世界空间的变换矩阵的逆矩阵_World2Object,然后通过调换它在mul函数中的位置,得到和转置矩阵相同的矩阵乘法。由于法线是一个三维矢量,因此我们只需要截取_World2Object的前三行前三列即可。下面给大家展示变换Shader代码。 由于光源方向、视角方向大多都是在世界空间下定义的,所以问题就是如何把它们从世界空间变换到切线空间下。我们可以先得到世界空间中切线空间的三个坐标轴的方向表示,然后把它们按列摆放,就可以得到从切线空间到世界空间的变换矩阵,那么再对这个矩阵求逆就可以得到从世界空间到切线空间的变换: /// ///