Unity3D引擎之渲染技术系列一
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者。国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术具体解释》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
在学习Unity引擎或者是其它3D游戏引擎时。常常遇到的问题就是各个坐标空间,在曾经的博客中也给读者介绍过,本篇博客里用通俗易懂的语言再给读者揭露一下为什么须要这么多坐标空间?以及怎样产生矩阵变换或者说利用矩阵变换解决这个问题。
在生活中我们常常遇到问路的,有的人方向感比較强,而有的人方向感比較弱,针对这些人指路时就要注意了,方向感强的人,你能够告诉他向东走大约300米。再向北走100米,你给他说的这些就是以东南西北为坐标轴介绍的,方向感弱的人,你就不能这么说了。你仅仅能说向向前走300米,再向左走100米。这时你使用的是以这个路人围原点的坐标空间。通过这个案例。你能够看到不同的指路方式相应的就是我们不同的坐标轴向。
由此可见,我们在生活中在不同的情况下使用不同的坐标空间。这个跟游戏中使用不同的空间是相似的。
Unity3D引擎开发3D游戏时。也会面临着各个坐标空间的变换,在这里给读者普及一下,这样开发人员再做一些空间变换时更easy上手。Unity3D引擎使用的是扩展名为FBX的模型,模型的制作是美术人员用建模工具Max制作完毕导出的,除了模型还包含图片,比方高光。法线等,关于材质的渲染能够使用Unity3D自带的Shader或者自己编写Shader。
制作的模型相对于它自身而言就是局部空间也称为模型空间,也称为局部空间,每一个模型都有自己独立的坐标空间。
当它移动或者旋转时。模型空间也会跟着它移动和旋转。
打个形象比喻,我们在公司的房间里面移动时,我们自身的空间也在跟着移动,当我们转身时,我们的坐标空间也在尾随变化。
在模型制作时,美术人员会给模型一个坐标,默认的情况下都是设置成(0。0,0),这个坐标是作为父节点的坐标,模型会有自己的孩子节点。如果带有孩子节点的物体例如以下图所看到的:
孩子节点的坐标是(2,2。0)。它是子物体的局部坐标,以下会通过矩阵转换的方式,计算一下它在Unity中的世界坐标,也是快速读者怎样利用矩阵变换获取到在世界空间的世界坐标。在Unity3D引擎使用的是左手坐标系也就是Z轴朝里。X轴朝右。Y轴朝上。
将我们制作好的模型拖入到Unity编辑器后的效果例如以下所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
红色箭头表示的是X轴,绿色的箭头表示的是Y轴。蓝色的箭头表示的是Z轴。
它在世界场景中的坐标是(0。0。0)换句话说就是它自身的局部坐标与世界坐标重合。它的孩子节点是我们上面提到过的,以下我们将模型进行位移,旋转,缩放进行操作,我们进行缩放(2,2,2),旋转(0。150。0),位移(5,0,25)。在Unity的表现效果例如以下所看到的:
我们能够构建出模型变换矩阵,在这里要注意一个问题,它们变换的顺序是一定的,不能改变。
先进行缩放,在进行旋转,最后进行位移操作。相应的矩阵变换例如以下所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
接下来我们对模型的子物体进行模型变换例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
也就是说。在世界空间下,模型的子孩子的位置是(9,4,18.0)这样我们通过矩阵变换就得到了子孩子的世界坐标,事实上这些基本运算我们在游戏开发中也是常常使用的。比方我们能够自己利用矩阵变换实现实时阴影,Unity3D自带的阴影因为消耗比較大,不easy在移动端实现,我们自己能够利用矩阵变换实现,效率得到提升。
后面继续介绍观察空间的矩阵实现。
Unity3D引擎之渲染技术系列一的更多相关文章
- Unity3d 引擎原理详细介绍
体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则. Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于 ...
- Unity3d 引擎原理详细介绍、Unity3D引擎架构设计
体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则. Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于 ...
- unity3d引擎程序员养成
标准流程:1. c++ Primer 英文版(第四或第五版)全部看完习题做完是必须的.渲染程序设计比较复杂,后期会用到c++的全部特性.c++学的越好后面越轻松.要看英文版,计算机翻来覆去就那么几个单 ...
- 新书《Cocos2dx 3.x 3D图形学渲染技术讲解》问世
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- Unity3D之高级渲染-Shader Forge增强版
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家.特邀编辑.畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...
- Unity3d 引擎原理详细介绍、Unity3D引擎架构设计 - zhibolife
时间 2014-03-24 11:18:00 博客园-所有随笔区原文 http://www.cnblogs.com/zhibolife/p/3620440.html 体系结构 为了更好地理解游戏的 ...
- 剖析Unreal Engine超真实人类的渲染技术Part 1 - 概述和皮肤渲染
一.概述 1.1 数字人类的概要 数字人类(Digital Human)是利用计算机模拟真实人类的一种综合性的渲染技术.也被称为虚拟人类.超真实人类.照片级人类. 它是一种技术和艺术相结合的综合性模拟 ...
- 剖析Unreal Engine超真实人类的渲染技术Part 2 - 眼球渲染
目录 三.眼球渲染 3.1 眼球的构造及理论 3.1.1 眼球的构造 3.1.2 眼球的渲染理论 3.2 眼球的渲染技术 3.2.1 角膜的半透和光泽反射 3.2.2 瞳孔的次表面散射 3.2.3 瞳 ...
- Unity3d 基于物理渲染Physically-Based Rendering之最终篇
前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-B ...
随机推荐
- linux中,在在shadowsoks下怎么更新软件
在shadowsoks下怎么更新软件 先描述一下我的情况.我们学校不给大一开通校园网,我自己租用了***的vps服务器,搭建shadowsocks,(使用ipv6地址才能连接),开始了自己悲催的上网生 ...
- 洛谷 P4538 收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- LA 3026 Period
这只是蓝书上的一道KMP水题...然后对于最长前缀的循环证明我就不说了... #include<iostream> #include<cstring> #include< ...
- 在前端页面调用sevlet的路径
1.路径:相对路径和绝对路径 <!-- 使用相对路径访问Servletpath --> <a href="servlet/ServletPath">这是Se ...
- Spring/Spring MVC/Spring Boot实现跨域
说明:Spring MVC和Spring Boot其实用的都是同一套. CORS介绍请看这里:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Acc ...
- hdu 1162 Eddy's picture (Kruskal算法,prim算法,最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 [题目大意] 给你n个点的坐标,让你找到联通n个点的一种方法.保证联通的线路最短,典型的最小生成 ...
- .net开发常用的第三方开发组件
转自:http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件: 1.RSS.NET.dll: RSS.NET是一款操作RSS feed ...
- 让Mac支持lrzsz
http://blog.csdn.net/citywolf4/article/details/49071679 https://github.com/mmastrac/iterm2-zmodem
- [转载]Elasticsearch Java API总汇
from: http://blog.csdn.net/changong28/article/details/38445805#comments 3.1 集群的连接 3.1.1 作为Elasticsea ...
- USE [EPPM] [dbo].[REFRDEL_CLEANUP]
USE [EPPM] GO /****** Object: StoredProcedure [dbo].[REFRDEL_CLEANUP] Script Date: 2016/4/2 16:32:29 ...