版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AR/VR的技术基础目录虚拟现实关键技术概览立体显示技术内容创建技术网络传输技术渲染技术自然交互技术虚拟现实关键技术概览五大技术0105040203虚拟现实近眼显示技术内容创建技术网络传输技术渲染技术感知和自然交互技术科技树AR/VR核心技术1.Near-eyedisplay(近眼显示技术)包括传统的屏幕显示技术(LCOS/OLED/可折叠的AMOLED/MicroLED)和光学技术(光场显示/波导技术等等)。2.Contentcreation(内容创作技术)包括虚拟角色和场景构建、动作捕捉、全景视频拍摄与编辑等等3.Networkcommunication(网络传输技术)这方面最受人关注的当然就是即将商用的5G技术,以及传说中传输速率可达每秒1T的下二代6G技术了。当然还有一系列的其它技术有待发展。4.RenderingProcessing(渲染技术)包括本地渲染、云渲染、光场渲染、多重视角渲染,以及硬件渲染加速等等技术。5.Perception&interaction(感知和自然交互)包括跟踪定位技术、多感官自然交互技术(脑波、语音交互、触感交互等等)、机器视觉技术(SLAM/场景分离与识别等)专利研发立体显示技术双眼视差原理偏振光分光3D显示基于线偏振光的IMAX电影图像分色立体显示儿时的红蓝分光眼镜杜比图像分色技术杜比3D眼镜分时显示主动式快门眼镜VR头戴显示技术VR头戴设备视网膜投影技术HoloLens、GoogleGlass光场显示技术MagicLeap/question/36921637
商用全息投影技术初音未来全息演唱会便携全息投影技术Ostendo量子光电子成像仪内容创建技术内容创建传统3D建模360全景拍摄3D扫描360度全景拍摄优点:百分百真实缺点:无法切换焦点,无法和场景及人物互动传统计算机3D建模优点:精度高,流程成熟缺点:耗费大量人力、时间、精力3D扫描-
方法概述接触式3D扫描时差测距三角测距结构光源调变光非接触被动式扫描立体视觉法色度成形法轮廓法立体光学法光场相机3D扫描-
基于结构光扫描速度极快,数秒内100多万点精度高,可达0.03mm单次测量范围大便携大景深2020/stock/relnews/us/2020-03-20/doc-iimxyqwa2069651.shtml表情和动作捕捉光学动作捕捉惯性动作捕捉机械动作捕捉超声波动作捕捉电磁动作捕捉表情和动作捕捉游戏引擎Unity3DUE4寒霜
SourceVuforiaARKitARCore网络传输技术5G&6G渲染技术渲染技术感知和自然交互技术3D光感应技术-IntelRealsense可选的手势识别设备及SDK,可配合OculusRiftCV1和HTCVive使用LeapMotionFOV眼动追踪技术语音交互和语义理解触觉反馈嗅觉及其它感觉模拟器脑机接口Unity3d的下载与安装目录Unity3d的授权类型在Windows系统下安装Unity3d在Mac系统下安装Unity3dUnity3d的授权类型授权类型个人版加强版专业版企业版在windows系统下安装Unity3d安装1下载Unity
Hub2.使用UnityHub安装Unity3d在Mac系统下安装Unity3d安装1下载Unity
Hub2.使用UnityHub安装Unity3d创建一个全新的Unity3d项目王寒目录创建并登录UnityID创建新项目创建并登录UnityID浏览中打开网址在邮箱中确认创建UnityID创建新项目Unity3d编辑器入门王寒目录界面布局和核心视图工具栏顶部菜单栏界面布局新项目打开后界面组成界面项目视图资源商城层级视图场景视图游戏视图检视视图控制台视图项目视图资源商城视图资源商城视图1.使用UnityID登录2.下载和导入标准资源包StandardAssets3.删除版本不兼容的文件场景视图游戏视图检视视图控制台视图工具栏工具栏组成界面变换工具变换辅助工具播放控制协作开发、云服务和账户分层下拉菜单布局下拉菜单变换工具1.手型工具2.移动工具3.旋转工具4.缩放工具5.矩形工具6.操作工具变换辅助工具1.Center/Pivot按钮Center是以所有选中的对象所组成的轴心作为游戏对象的轴心参考点,通常用于大量对象的整体移动;而Pivot则是以最后一个选中的游戏对象轴心来作为参考点。默认状态下此处会显示Center。2.Global/Local按钮该按钮用来切换物体旋转时的坐标参照系。当选择Global时,物体旋转时的坐标轴也就是世界坐标轴。当选择local时,物体旋转时的坐标轴是自身的坐标。当场景中的物体没有父物体时(也就是在层次结构中没有挂靠在另外一个物体上),或者父物体的坐标是(0,0,0)时,local和global的坐标轴是一样的。播放控制三个按钮分别对应的是Play(播放),Pause(暂停),Step(步进)。协作开发、云服务和账户关于协作开发和云服务,目前还处于beta阶段,因此这里我们暂且不必研究其中的细节。最右侧的是账户设置,点击下拉菜单可以登录官网进行账户(Account)设置、登入登出账户以及升级为Plus或Pro版本。分层下拉菜单分层下拉菜单(Layers)用于控制游戏对象在Scene视图中的显示),在下拉列表中右侧眼睛为睁开的图层对象,将会被显示在Scene视图中,否则将会被隐藏。布局下拉菜单布局下拉菜单(Layout)用来切换视图的布局,同时也可以自定义设置自己习惯的界面布局顶部菜单栏工具栏组成界面文件菜单编辑菜单资源菜单游戏对象菜单组件菜单窗口菜单帮助菜单文件菜单主要用于项目和场景的创建、存储和输出编辑菜单主要用于场景内部的编辑设置资源菜单用来管理游戏资源的工具,该菜单下的命令可以在场景中添加新的游戏对象,还可以导入或者导出所需要的资源包游戏对象菜单用来在场景中添加游戏对象,以及进行一些相关的设置。选择需要的游戏对象,并修改它的位置,就能将游戏对象应用到游戏的场景内,组件菜单Component菜单是Unity3D为开发者提供的便捷的内置系统设置,比如灯光、寻路和光照等等。每个系统都对应一项特殊功能,同时又可以用展开进行更多的设置窗口菜单控制整个编辑器的页面布局以及控制各种视图窗口的开关。笔者建议牢记菜单的快捷键,以便提高开发时的工作效率帮助菜单集合了所有Unity3D官方的相关资源链接网站,同时具备管理软件授权的方法《星际逃生》实战项目王寒目录产品的策划与设计创建新项目搭建游戏场景添加游戏角色预览游戏效果发布到PC平台产品的策划与设计1.游戏背景
2.游戏概述
3.游戏场景(科幻画风)
4.游戏规则(逃生模式)创建新项目打开UnityHub,创建新项目,命名为SpaceEscape搭建游戏场景在Assetstore中下载Sci-FiStyledModularPack添加游戏角色1.在Assetstore中下载StandardAssets
2.解决版本冲突问题(可跳过)
3.添加FPSController并设置属性
预览游戏效果点击工具栏上的Play按钮发布到PC平台1.打开BuildSettings
2.添加当前场景
3.设置产品名称和保存路径
4.打开测试C#的基本语法目录变量和数据类型运算符和表达式C#中的流程控制函数类和方法变量和数据类型常用数据类型
int
–整型,用于保存游戏中的整数数据,如金币数量等
float
-单精度浮点数,用于保存游戏中的浮点数据,如玩家移动速度
double
-双精度浮点数,常用于保存游戏中的精确数值
string
-字符串,常用于保存名称和信息等,如玩家姓名
bool
–布尔,常用于判断条件,如游戏逻辑判断:角色是否死亡变量在编程语言中,每一个数值都需要存储在某个特定的地方,我们称之为变量。变量由变量名称和数据类型构成。变量的数据类型决定了我们可以在其中存储哪种类型的数据。通过使用变量,可以让我们的应用拥有记忆。你可以把变量看做是存储某个数据的临时储物箱。正如储物箱有各种类型和尺寸的一样,数据也五花八门。变量在编程语言中,每一个数值都需要存储在某个特定的地方,我们称之为变量。变量由变量名称和数据类型构成。变量的数据类型决定了我们可以在其中存储哪种类型的数据。通过使用变量,可以让我们的应用拥有记忆。你可以把变量看做是存储某个数据的临时储物箱。正如储物箱有各种类型和尺寸的一样,数据也五花八门。常用数据类型
int
–整型,用于保存游戏中的整数数据,如金币数量等
float
-单精度浮点数,用于保存游戏中的浮点数据,如玩家移动速度
double
-双精度浮点数,常用于保存游戏中的精确数值
string
-字符串,常用于保存名称和信息等,如玩家姓名
bool
–布尔,常用于判断条件,如游戏逻辑判断:角色是否死亡定义一个变量什么是注释什么是注释:编译器会忽略掉被注释的语句和代码注释风格:C语言风格的注释/**/单行注释//多行注释变量命名规范必须以字母,下划线或者@开头(第一个字符不能为数字)后面可以跟任意“字母”,数字,下划线变量名不可以是系统保留的关键字大小写敏感同一个变量名不能重复定义,可以重复赋值正确:firstName、lastName、car1不推荐:firstname、lastname错误:1car、*name常量C#还支持一种特殊的变量——常量。所谓的常量是指在程序运行过程中值不会发生变化的量。在声明变量时,只需在变量的前面加上关键字const或readonly即可把该变量指定为一个常量。比如:constintconsNum=2;readonlyintreadOnly=3;运算符和表达式算术运算符下表显示了C#语言支持的所有算术运算符。假设变量A的值为10,变量B的值为20,则:算术运算符示例赋值运算符在C#中,赋值运算符用于将一个数据赋予一个变量、属性或者引用。数据本身是常量、变量或者表达式。赋值运算符本身又分为简单赋值和复合赋值特别说明对于初学者需要特别注意的是,除非特别用途,
1.代码中所用到的双引号和分号必须采用半角输入,如果使用全角输入,是没办法得到想要结果的。2.标点符号3.代码不要copy&paste关系运算符C#的关系运算符条件运算符条件运算符用于进行逻辑判断,并返回一个布尔类型的运算结果。流程控制流程控制所谓的流程控制,就是对某个条件进行判断,如果判断通过,就执行某语句。C#中的流程控制方法和其他语言基本相同。支持if…else,while,do…while,for,foreach,switch这些流程控制语句。if...else语句示例:
定义两个int类型的变量a,b,对a和b进行对比,如果a>b,则输出”a大于b”,如果a小于等于b,则输出”a小于等于b”。while语句while语句和if...else语句类似,都是需要先进行条件判断,结果为True将执行循环语句do...while语句do...while区分于while语句的地方是:do...while语句会首先执行一次里面的语句,然后进行条件判断for语句for语句中初始值语句只会执行一次,随后进行判断,如果判定成立,执行花括号中的语句,再执行值变化语句,再执行判断。如果判断不成立,跳出该循环。foreach语句首先创建一个int数组,然后通过foreach遍历数组中的每一个元素。foreach会按顺序依次取出数组中的每一个元素Switch语句Switch语句是一个判断选择语句。当您想要将单个变量与一系列常量进行比较时,它们非常有用:函数什么是函数?134在数学里面,函数的作用是让输入值根据特定的规则计算出某个结果并输出。而在编程领域,函数的作用与之类似,不过不仅仅局限于计算数值,而是可以实现任何所需要的功能。简单来说,函数就是可以完成特定功能,可以重复执行的代码块。什么是函数?135以王者荣耀为例,在无限大乱斗模式里面,每两分钟会随机变换一次BUFF,比如所有英雄的移速增加30%、所有英雄攻击增加30%,所有英雄额外获得钟馗的飞钩技能……那要让游戏里面10个英雄同时获取这些随机变换的BUFF,就可以用函数来实现了,因为我们在实现这些功能的时候,就是输入了一些可以重复执行的代码块。函数示例类和方法C#对象和类C#是一门面向对象的编程语言,而类和对象则是面向对象中的重要概念。具有相同属性和功能的一组对象的集合就是一个类。比如人是一个类,猫是一个类。C#方法C#中的方法,其形式和函数类似,也是为了实现某些特定功能的代码块。但是方法和函数的区别在于,方法通常是某个对象所特有的。换而言之,函数是代码世界里独立的生命体,它不依赖于某个对象而生存。但方法不同,任何一个方法都是某个对象的附属生命,同时也只有它的宿主对象才能调用这个方法。以王者荣耀为例,方法就是每一个英雄所独有的技能,一个技能只有该英雄本人可以释放,其他英雄释放不了这个技能。Demo示例创建并引用一个弓箭手类。什么是继承继承就是在类之间建立一种“父子”关系,子类可以拥有某些来自父类的属性和方法父类也被称为基类,子类也被称为派生类在Unity3d项目中创建和使用脚本王寒目录VisualStudio及脚本编辑器的设置在项目中创建脚本将脚本关联为游戏对象的行为组件VisualStudio及脚本编辑器的设置
VisualStudio的安装1.在安装Unity时安装2.单独安装Unity代码编辑器的设置在项目中创建脚本创建方式
1.在Project视图中创建2.在Inspector视图中创建3.在外部创建,然后拖动到项目之中创建方式
1.在Project视图中创建在Project视图中右键单击Assets,选择Create-C#Script,会创建一个新的文件,把文件名更改为HelloUnity。将脚本关联为游戏对象的行为组件关联游戏对象从Hierarchy视图中选中MainCamera,然后在Inspector视图中点击AddComponent,选择Scripts-HelloUnity创建和使用角色类王寒目录案例描述案例实施案例描述案例描述在很多游戏中,将角色分为不同的类型,比如坦克、战士、魔法师等等。我们可以将所有的角色看做一个基类,每个不同的类型看做它的子类,而某个具体的角色则是某种类型角色的子类。在这个小案例中,我们将创建一个自己的英雄角色,并尝试在项目中实际使用。在创建某个角色前,我们通常需要按照以下的步骤进行。1. 创建所有角色的基类2. 创建某个特定角色的子类案例实施案例实施1.创建新项目MyHero2.创建所有角色的基类Hero,并定义其属性和方法3.创建英雄角色子类MyHero,并定义其特有属性和技能4.创建游戏对象HeroCommandObject及对应的组件脚本HeroCommandScript5.实际测试Unity3d的内置对象和工具目录基本几何体地形引擎天空盒Unity资源包基本几何体基本几何体Unity引擎为我们提供了许多基础的几何体,比如说正方体、圆柱体、球体、胶囊体、平面、四边形等。可以使用这些基本的几何体来快速制作游戏的基本原型,包括物品和场景等。基本几何体地形引擎地形引擎Unity中内置了一个地形引擎系统,可以让开发者快速给游戏添加基础的地形地貌。和3D模型不同,在游戏运行时,编辑器中的地形渲染经过了高度优化,减少了对系统资源的消耗。当然,这套地形引擎系统对开发者也是十分的友好,通过使用内置的相关工具,开发者可以在很短的时间内快速创建大场景的地形。第三方地形编辑器除了使用Unity内置的地形编辑器,在AssetStore中还有一些非常优秀的第三方地形编辑插件,如Gaia。使用该插件可以快速创建非常复杂但效果很接近真实的地形天空盒什么是天空盒天空盒我们在玩游戏的时候,尤其是野外的大场景中,要想更逼真离不开三维天空系统。要用程序来模拟无边无际的天空是不可能的,而聪明的前辈们自然也想到了用“天圆地方”这种古代人们对于天空的认识来作为三维天空设计思想。如何更换场景中的天空盒更换天空盒Step1.创建新项目和场景Step2.从Asset
Store中下载天空盒,Skybox
Volume
2(Nebula),或其它Step3.将所下载的天空盒导入到场景中Step4.在Window-Rendering-Lighting
Settings中设置Environment下的Skybox
Material下载天空盒设置天空盒将SkyboxMaterial设置为下载的天空盒资源包的导入与导出资源包导入和导出1.创建并导出unitypackage2.导入已有的unitypackage
Unity3d的光照系统王寒目录什么是光照系统不同光源对象的简介什么是全局光照光照探头和反射探头什么是光照系统Unity光照系统从字面意思理解,光照系统的作用就是给我们的场景带来光源,用于照亮场景。一个五彩缤纷的游戏场景肯定要比一个漆黑一片的游戏场景更具吸引力,想让游戏场景变的更漂亮,光照系统是必不可缺的。Unity光照系统组成部分Unity光照系统主要由灯光组件(4个灯光组件,2个特殊功能组件)以及Lighting面板组成。不同光源对象的简介DirectionalLightPointLightSpotLightAreaLight什么是全局光照全局光照在一个封闭空间内,两个玻璃球体互相反射。全局光照极大程度提升了场景中光照的真实性,但这种程度的实时计算是非常消耗资源的。光照探头和反射探头Why?当场景中的灯光烘焙后,光照信息和阴影都变成“静止”的了。如果场景中有动态的物体,比如可以自由行走的角色,那角色岂不是没有阴影了?这个问题我们该怎么解决呢?这个时候就需要用到LightProbe(光照探头)和ReflectionProbe(反射摊手)了。光照探头的作用是收集附近的光照信息,并对探头范围内的对象进行实时渲染。LightProbesReflectionProbes效果图反射探头和它相似,它的作用是收集附近的反射信息,并反射到范围内的对象上,可以用来提升场景中的灯光效果。Unity3d中的粒子系统王寒目录什么是Shuriken粒子系统怎么样添加粒子系统什么是粒子系统什么是粒子系统粒子系统(particlesystems)中的粒子究竟指的是什么?游戏引擎中的粒子当然不是指质子、中子、电子甚至夸克这样的微观粒子,而是很小很简单的2D图像或者3D网格模型。在粒子系统中,通过各种设置让微小的粒子以某种特定的形态展示出来,就形成了粒子特效。从这一点来看,粒子系统中的粒子就如同空气中的灰尘或者微小颗粒。当大量的粒子聚集在一起时,就会形成我们所期待的各种酷炫效果。ShurikenUnity3d中的粒子系统ParticleSystem怎样添加粒子系统添加粒子系统在Hierarchy视图中右键Effects→ParticleSystemUnity3d中的Shader王寒目录什么是ShaderUnity中的标准Shader自定义Shader什么是Shader什么是Shader
在计算机图形学中,着色器(Shader)是指专用于渲染着色的计算机程序,其作用是设置图像的光照、阴暗和色彩等。着色器通常以极高的灵活性在图形硬件上计算所渲染的效果。大多数的着色器在编码时是针对图形处理单元(GPU)的,着色器编程语言通常可用于编写GPU渲染管道。通过着色器中预定义的算法,可以动态修改图像显示的像素、顶点、纹理等元素的位置、色调、饱和度、明亮度和对比度等等。Unity3d中对象的渲染在Unity3D中,对游戏对象的渲染是通过材质(Materials)、着色器(shaders)和纹理(Textures)共同完成的。三者的关系非常紧密,共同作用于游戏对象,才形成了丰富多彩的游戏世界。材质用于定义物体的表面是如何渲染的,包括所使用的纹理贴图、表面铺设,以及色彩变化等等。材质的可用设置选项取决于其所使用的着色器。Unity3D中的着色器其实是小的代码片段,其中包含了各种数学运算和算法,其作用是基于材质的设置和光照输入来计算每个像素点的色彩和其它属性。纹理贴图其实就是位图。材质中可能包含了到纹理的引用,因此材质所使用的着色器可以在计算物体表面色彩的时候使用纹理贴图。除了用于呈现物体表面的基本色彩(albedo),纹理还可以表现材质表面的其它方面,比如反射或粗糙程度等。Unity中的标准Shader使用Shader示例创建新项目使用Shader步骤一在Assets文件夹下右键Create→Shader→StandardSurfaceShader使用Shader步骤二然后导入一张图片使用Shader步骤三右键创建Material“Cube”使用Shader步骤四在Material的Shader下选择“Cunstom/MyShader”使用Shader步骤四选中右侧Select,在里面添加我们的图片使用Shader步骤五在场景中创建一个Cube物体,最后再将我们的“CubeMaterial”材质球拖拽到Cube上自定义Shader自定义ShaderUnity3D支持两种类型的shader:表面着色器,以及顶点/片元着色器。不管是哪种类型的shader。Unity3D中的shader通常使用ShaderLab语言来编写,在shader的代码中可以用多个SubShader部分,Unity将依序执行这些给GPU的指令,直到找到可以兼容你所使用的显卡的代码段。考虑到游戏的跨平台支持性,这一点是非常有用的。为了让开发人员更轻松的开发自定义shader,Unity3D从Unity2018.x版本开始正式支持ShaderGraph,可以通过可视化界面轻松实现着色器的创建和编辑。ShaderGraph还支持LWRP和HDRP,甚至支持自定义的pipeline。
使用地形编辑器创建场景中的地形(实战案例)王寒目录案例描述案例实施案例描述案例描述在很多3D应用和游戏中,除了建筑物之外,我们还需要创建一个模拟的户外数字场景。Unity3D内置了强大的地形编辑器工具,可以轻松创建各种丰富的地形地貌。为了让大家熟悉地形编辑器的使用,我们将一起通过实战学习如何通过地形编辑器来创建简单的地形。案例实施准备工作Step1.创建新项目,MySpaceStep2.下载最新地形编辑器(在Unity3D的编辑器菜单栏中选择Window-PackageManager-TerrainTools)Step3.导入地形资源包和标准资源包(在AssetStore中搜索terraintoolssampleassetpack和standardassets),修复一些简单的bug(删除StandardAssets\Utility\SimpleActivatorMenu.csStep4.下载并导入FreeRealSkies创建地形在编辑器的菜单栏中选中选择GameObject-3DObject-Terrain,就可以在场景中添加一个大的扁平的地形编辑地形在Hierarchy视图中选择Terrain对象,在Inspector视图中单击Terrain组件下的设置按钮将Resolution下的TerrainWidth(地形宽度)和TerrainLength(地形长度)均设置为1200,将TerrainHeight(地形高度)设置为600绘制山脉在工具栏上选择第二个按钮PaintTerrain,然后从下拉列表中选择Raiseorlowerterrain。接下来根据自己的喜好来调整画笔的尺寸或类型,按住鼠标左键不放在地形的特定区域绘制出山脉或凸起的地形添加树木在地形编辑器的工具栏上选择第三个按钮,然后点击EditTrees按钮,选择AddTree,然后选择Broadleaf_Desktop,最后点击Add添加树木接下来按住鼠标左键,在地形中所需要的地方绘制即可添加植被在地形编辑器的工具栏上点击第四个按钮“PaintDetails”,点击下方的EditDetails,点击AddGrassTexture,然后选择某个草地纹理,比如GrassFrond01AlbedoAlpha,最后点击Add确定。添加植被接下来按住鼠标左键不放,在地形中的所需区域添加植被。需要特别注意的是,当我们在场景中添加植被后,如果从比较远的距离去观察,是看不到植被的,只有切换视角到靠近的地方才看得到。这就是所谓的LOD(LevelsofDetail),也就是多细节层次。添加相邻地形有时候我们会觉得当前的地形还不够大,那么需要添加相邻的地形。在Hierarchy视图中选中当前地形对象,在Inspector视图的Terrain工具栏中点击第一个按钮,可以看到在当前地形的周围出现了几个线框,只要点击任何一个线框,就会添加一个相邻的地形。更换天空盒通过菜单打开Window-Rendering-LightingSetting,点击Environment-SkyboxMaterial属性最右侧的小图标,从打开的窗口中选择所需的天空盒素材。创建和使用光源(实战)王寒目录案例描述案例实施案例描述案例描述通过在场景中添加设置不同的光源,可以让场景显得更加丰富多彩,更加贴近真实。为了让大家更直观的了解Unity3D中对不同光源对象的使用,我们将创建一个全新的项目来演示。案例实施案例实施-添加光源Step1.创建一个新项目,命名为MyLightsStep2.添加场景中的物体(通过从菜单栏选择GameObject-3DObject,在场景中添加一些简单的几何体对象)Step3.调整平行光的各项属性(角度,色彩,强度等)Step4.添加点光源,并设置其属性Step5.添加聚光灯,并设置其属性案例实施-设置灯光烘焙1)在Hierarchy视图中选中场景中除了MainCamera和DirectionalLight之外的游戏对象。2)在Inspector视图中,点击Static右侧的下拉箭头,选择ContributeGI。这样就完成了第一步,告诉系统哪些物体需要被烘焙。3)随后选择场景中的DirectionalLight、PointLight和SpotLight,将Mode设置为Baked。现在我们可以开始烘焙了。4)在顶部菜单栏中选择Window-Rendering-LightingSettings,即可打开灯光设置按钮。取消底部AutoGenerate选项的勾选,点击GenerateLighting即可开始烘焙案例实施-设置灯光烘焙稍等片刻烘焙结束后,可以看到场景中的灯光发生了细微变化。接下来运行该场景,在Scene视图中,之前勾选为ContributeGI的对象无法被移动,修改DirectionalLight的角度会发现,对象的阴影并不会改变。修改PointLight的颜色、范围等,同样场景不会有任何改变。 如果场景中的灯光发生了变化,开发者在需要手动再次进行烘焙,场景中的光效才会发生改变。创建雪花飘落的粒子特效王寒目录案例描述案例实施案例描述在有些项目中,我们需要模拟真实世界的环境,比如刮风、下雨、下雪,甚至雷电等等。对于这类环境效果,并不适合使用3d模型的方式来呈现。这个时候,我们需要借助粒子特效来实现自己想要的效果。在这个案例中,我们将一起学习如何使用Unity3D中的粒子系统来创建雪花飘落的特效。在掌握了粒子系统的基本用法之后,开发者还可以尝试创建其它的环境特效。案例描述案例实施开始前的准备Step1.创建一个新项目,命名为SnowFallingStep2.导入所需美术资源(找到snow.png文件并拖动到项目视图中)导入后选中它,在Inspector视图中勾选AlphaIsTransparent,然后点击Apply创建粒子系统Step1.在Hierarchy视图中右键单击,选择Effects-ParticleSystem,从而创建一个新的粒子系统Step2.把新创建的粒子系统更名为SnowFalling,同时需要在Inspector视图中将Transform中Rotation的X值设置为90,从而让粒子效果更改方向创建粒子材质Step1.在Project视图中右键单击,选择Create-Material,并将其命名为SnowMaterialStep2.选中SnowMaterial,在Inspector视图中将Shader的类型默认的Standard更改为Particles-StandardUnlitStep3.此外,还需要把RenderingMode更改为Cutout,从而去掉外轮廓.Step4.将Albedo设置为此前添加的snow.png将粒子材质添加为粒子系统的组件在Hierarchy视图中选中SnowFalling这个粒子对象,然后从Project视图中把SnowMaterial拖到Inspector视图的底部,从而让SnowMaterial成为SnowFalling的粒子材质更改粒子系统的各项属性(1) 将Duration设置为10.00,从而增加雪花的持续显示时间(2) 将GravityModifier更改为1,从而让雪花受到地球重力的影响。(3) 将SimulationSpeed更改为0.5,从而让雪花飘落的速度减慢。(4) 将MaxParticles更改为5000,从而增加雪花的数量。(5) 将Emission中RateoverTime更改为100,从而增加雪花的密度。(6) 将Shape从默认的Cone更改为Box,并将Scale中的X和Y值设置为50,从而增加雪花飘落的覆盖面积。(7) 将Collision中的Type更改为World,从而让雪花跟虚拟世界产生交互。(8) 将Collision中的Bounce更改为0,从而让雪花落到地面时不会反弹设置场景并测试1.在场景中添加一个Plane对象,并设置scale中的x和z为52.选中MainCamera,使用工具栏将视角切换到合适的位置,然后使用主菜单的Gameobject-AlignWithView,从而调整主摄像机的默认视角3.点击工具栏上的播放按钮,就可以查看效果了Canvas简介目录什么是CanvasCanvas的三种渲染模式Canvas中UI元素的显示顺序什么是Canvas什么是CanvasCanvas是画布的意思,在Unity3D的UI系统中,所有UI元素都必须作为Canvas的子对象存在。场景中的Canvas对象都关联着一个Canvas组件,是所有UI元素的容器。不过一个场景中并不是只能存在一个Canvas,所以可以根据应用的设计需求在场景中使用多个Canvas,而不用把所有的UI元素放置于同一个Canvas下。什么是Canvas在Unity3D的场景视图中,Canvas对象以矩形的形态呈现。通过使用Canvas,我们可以在需要的时候才呈现出UI界面。而在不需要的时候,则可以将其隐藏起来。当我们创建任何一个UI元素的时候,如果场景中没有Canvas对象,Unity3D将自动帮我们创建一个Canvas对象,并将新创建的UI元素添加为Canvas的子对象。什么是CanvasCanvas的三种渲染模式Canvas的三种渲染模式ScreenSpace-Overlay1.ScreenSpace–Overlay(屏幕空间-覆盖)Canvas的默认RenderMode为ScreenSpace-Overlay,此时Canvas下的所有UI元素会直接绘制在游戏窗口的平面上。也就是说,此时Canvas中的UI元素会优先显示在游戏场景中,不会被其他任何对象所遮挡。在该模式下我们无法手动修改Canvas的尺寸等信息,因为Canvas的大小由Game视图的大小决定,而Canvas是覆盖在整个Game视图之上的。ScreenSpace-Camera2.在此模式下,Canvas的显示效果和前者基本一致,只是在Scene视图中有较大区别。将Canvas的RenderMode切换为ScreenSpace-Camera后,需要手动指定RenderCamera(渲染用相机)。ScreenSpace-Camera在ScreenSpaceOverlay/Camera两种模式下,Canvas的尺寸和Game视图的尺寸一致,Canvas会将所有UI元素渲染在屏幕最顶端,不会受到场景中其他任何物体的影响。如果屏幕尺寸改变,Canvas会自动重新适应屏幕尺寸。WorldSpace需要注意的是,在VR项目的开发中,所有Canvas必须设置为WorldSpace。在此模式下,整个Canvas将和其他对象一样作为3D对象存在于场景中。Canvas中UI元素的显示顺序UI元素的显示顺序Canvas中UI元素的显示顺序和它们在Hierarchy层级视图中的显示顺序是一致的。第一个子对象将被首先绘制,然后是第二个子对象,以此类推。当两个UI元素重叠的时候,后绘制的对象将显示在之前绘制的对象之上。UI元素的显示顺序当我们需要调整UI元素的显示顺序时,只需要在Hierarchy视图中通过拖曳的方式来调整顺序即可。UI界面的布局王寒目录矩形工具(RectTool)矩形坐标(RectTransform)轴点(Pivot)锚点(Anchors)矩形工具(RectTool)矩形工具使用矩形工具,我们可以拖动、缩放和旋转各种UI元素当我们选中某个UI元素后,就可以使用鼠标将其移动到画布的合适位置。通过点击和拖曳UI元素的边缘,可以调整它的大小。最后,把鼠标光标放到UI元素的周边,可以看到一个旋转的标记,使用鼠标移动,就可以把UI元素旋转到所需的角度。和其它工具类似,矩形工具的使用也受到锚点和空间的限制。通常情况下,我们可以将其设置为Pivot和Local矩形坐标(RectTransform)矩形坐标在Unity3D中,普通的游戏对象(GameObject)都有一个对应的Transform组件。而对于UI元素,则使用RectTransform组件来代替。RectTransform组件同样有多重属性,如位置、旋转、缩放等。除此之外,它还提供了宽度和高度属性,以便调整矩形的大小。轴点(Pivot)轴点所谓的轴点也就是UI元素的参考坐标系原点。对UI元素的旋转和缩放等操作都是基于轴点的位置来进行的。当我们在工具栏中将Pivot按钮设置为Pivot模式时,RectTransform的轴点可以在Scene场景视图中进行移动锚点(Anchors)锚点在RectTransforms中还包含了另外一个布局概念,也就是锚点。锚点在场景视图中以四个小的圆形手柄来显示,在Inspector视图中显示了锚点的信息。锚点虽然锚点的设置比较复杂,但是Unity3D通过锚点预设(AnchorPreset)按钮让这一操作大大简化。点击锚点预设按钮,就可以从弹出的子菜单中选择所需的锚点预设。UI工具中的视觉元素王寒目录文本(Text)图像(Image)面板(Panel)文本(Text)文本Text文本在UI中通常被称为Label(标签),它有一个文本区域,可以在其中输入我们想要显示的文本。我们可以在Inspector视图中可视化的更改其字体和其它显示属性等。除了基本的Text控件,Unity3D还提供了更为实用的TextMeshPro。TextMeshPro除了可以作为UI控件来添加,还可以直接作为3D对象添加到场景之中。在VR等纯3D场景中,通常我们会倾向于选择TextMeshPro。图像(Image)图像Image控件对象有一个RectTransform组件和一个Image组件。我们可以通过RectTransform组件来设置Image对象在场景中的位置,尺寸大小和其它坐标信息。我们可以通过Image组件来指定图像对象的源图片,色彩,材质等属性。图像需要注意的是,当我们将制作好的美术资源导入到Unity3D后,如果要在用户界面的Image控件对象中使用,必须将其TextureType设置为Sprite(2DandUI)。面板(Panel)面板Panel是一种特殊的UI元素,可以把它看做UI元素的容器,我们可以在上面放置各种UI元素。Panel对象有一个Image组件,可以用来设置背景图片。当Canvas上面有比较多的UI元素时,我们可以考虑使用Panel来组织,从而达到更好的视觉呈现效果。UI工具中的交互元素王寒目录什么是UI交互元素按钮(Button)勾选按钮(Toggle)滑动条(Slider)其它什么是UI交互元素UI交互元素顾名思义就是和用户进行交流互动的界面,在Unity中具有许多的交互元素,例如Button(按钮);Toggle(切换);按钮(Button)按钮是各类软件、APP和网站中最常用的交互控件。在Unity3D的UI元素中,按钮同样非常重要。Button元素默认有一个Text元素作为子对象。Button的Inspector视图中能看到,Button由RectTransform组件、Image组件、Button组件构成。其中RectTransform组件和其他UI元素相同,用于控制Button的位置等。Image组件用于显示按钮的背景图,默认为图中的黑色矩形框,而Button组件则用于接收鼠标点击事件等互动。在Button组件的最下方,是一个OnClick()事件,点击右下角的加号可以添加新的按钮事件。我们可以使用它来定义按钮和用户之间的交互时间。勾选按钮(Toggle)Toggle元素的作用就是一个开关,它的视觉呈现是一个勾选框,允许用户开启或关闭某个选项。Toggle元素有两个子对象Background和Label,二者用于控制Toggle的外形,此处就不再赘述。Toggle组件中的参数大部分和Button相同,主要区别在于下方的IsOn属性和事件的改变。当IsOn为勾选状态时,表明此Toggle为开启状态,否则为关闭状态。而最下方的事件不是OnClick(),而是OnValueChanged状态,参数为Boolean。当场景中的Toggle每次被点击时,IsOn的状态都会发生改变,我们可以利用IsOn参数来决定场景中某些组件是否可用。滑动条(Slider)Slider也就是滑动条,可用于控制音量等,比如手机音乐APP的播放进度条就可以用Slider来实现。Slider元素也是由数个Image元素组成的,可拖动的圆环和背景进度条都是一个Image,可通过更换Image中的图片来更改Slider样式。其它交互控件除了以上提到的交互控件,Unity3D中还提供了其它丰富的交互控件,比如Scrollbar(滚动条),Dropdown(下拉列表),InputFiled(文本输入框),ScrollRect(滚动区)等1. 滚动条(Scrollbar)和滚动视图(ScrollView)2.下拉列表3.文本输入框创建项目的UI界面王寒目录案例描述案例实施案例描述在几乎所有的AR/VR应用中,都会有一个UI界面。通过这个UI界面,我们可以跳转到其它界面,输入一些基本信息,或是进行一些基础的设置。在本案例中,我们将一起学习创建一个简单的项目UI界面。完成的界面分别是一个主菜单界面和应用的主界面在主菜单界面点击START按钮,会切换到应用的主场景。在应用主场景点击BACK按钮,会返回菜单界面。最后,在菜单界面中点击QUIT按钮,将退出当前应用返回切换案例实施Step1.创建新项目,命名为MyMenuStep2.安装TextMeshProStep3.导入所需的资源(bg.png,1920x1080)开始前的准备开始前的准备使用快捷键Ctrl+N,创建一个新的场景,使用快捷键Ctrl+S保存,并重命名为GameScene创建主场景在Hierarchy视图中右键单击,选择UI-Image,此时就会在场景中添加一个Image图片元素,同时还会自动添加一个Canvas画布,还有一个EventSystem对象。选中Canvas对象,在Inspector视图中将CanvasScale组件的UIScaleMode设置为ScaleWithScreenSize,这样Canvas对象就会自动覆盖整个界面。然后把ReferenceResolution设置为X:1920,Y:1080,因为这也是图片的大小。选中Image,在Inspector视图中选择SourceImage,将其设置为刚刚添加的bg图片。此外,在RectTransform中将Width和Height属性分别设置为1920和1080。如图5-30所示。添加Image和Canvas对象在Hierarchy视图中右键单击Canvas对象,选择UI-Text-TextMeshPro。此时在Canvas中增加了一个新的子对象Text(TMP)。选中该对象,在Insepctor视图中更改其属性。将RectTransform组件的Width和Height分别设置为600和50.将TextMeshPro-Text(UI)组件中的Text内容更改为“Welcometothisworld!”,将FontSize更改为50。添加文本在Hierarchy视图中选中Canvas对象,右键单击,选择UI-Button-TextMeshPro。此时在场景视图中出现了一个按钮。将其更名为Button_Back使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东肇庆市鼎湖区总工会招聘社会化工会工作者笔试(公共基础知识)综合能力测试题附答案
- 2025年度武汉市市直机关公开遴选公务员111人备考题库附答案
- 2025广东广州花都城投贸易有限公司第二次招聘项目用工人员取消招聘考试题库附答案
- 2025年度成都市教育局所属事业单位公开招聘15名高层次人才考试参考题库附答案
- 2026云南大理州弥渡县人民医院招聘公益性岗位人员3人笔试参考题库及答案解析
- 2025年云南省大数据有限公司第二批招聘(30人)考试模拟卷附答案
- 2025年六安市叶集区人民医院招聘2人(公共基础知识)综合能力测试题附答案
- 2025广东中山市阜沙中学招聘英语非编教师1人(公共基础知识)综合能力测试题附答案
- 2026云南中国人民人寿保险股份有限公司临沧市中心支公司招聘30人笔试备考题库及答案解析
- 2025年广东省人民医院南海医院招聘事业单位聘用制(编制)工作人员1人(第二批)笔试参考题库及答案解析
- 2026年大连职业技术学院单招职业技能笔试参考题库带答案解析
- 河南省开封市2026届高三年级第一次质量检测历史试题卷+答案
- 员工通勤安全培训课件
- (自2026年1月1日起施行)《增值税法实施条例》的重要变化解读
- 2025年游戏陪玩分成协议
- 全国秸秆综合利用重点县秸秆还田监测工作方案
- 2026年内蒙古化工职业学院单招职业适应性考试参考题库及答案解析
- 国家事业单位招聘2024国家水利部小浪底水利枢纽管理中心招聘事业单位人员拟聘用人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 核生化应急救援中心火灾预案
- 25数五上数学人教版期末押题卷5套
- 2026年辽宁金融职业学院单招职业适应性测试题库及参考答案详解
评论
0/150
提交评论