资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,1,章 虚拟现实技术概述,1,、虚拟现实的概念,2,、虚拟现实利用的技术,3,、虚拟现实技术的特点,1.1,什么是虚拟现实,1,、虚拟现实萌芽。,1929,年,2,、虚拟现实雏形。,20,世纪,60,年代,3,、虚拟现实快速发展。,20,世纪,80-90,年代,4,、虚拟现实高速发展。,21,世纪,1.2,虚拟现实的发展,1,、虚拟现实萌芽。,1929,年,2,、虚拟现实雏形。,20,世纪,60,年代,3,、虚拟现实快速发展。,20,世纪,80-90,年代,4,、虚拟现实高速发展。,21,世纪,1.2,虚拟现实的发展,1,、,影视娱乐,2,、教育领域,3,、,设计领域,4,、医学领域,5,、军事领域,6,、航空航天领域,1.3,虚拟现实的应用领域,1,、国家,对虚拟现实技术的重视,2,、虚拟现实的学科综合性和不可替代性,1.4,虚拟现实技术的发展前景,谢 谢,第,2,章 虚拟现实技术的设备,Ocolus Rift是一款为电子游戏设计的头戴显示器。同时使用了三种追踪手段,在头显和控制器都内置了加速计和陀螺仪,快速捕捉位置和方向上产生的变化。,2.1 Ocolus Rift,HTC VIVE是和Valve共同开发的一款虚拟现实头盔产品,HTC VIVE产品配件是由一个头戴显示器、两个单手持控制器、一个能用于空间内同时追踪显示器与控制器的定位系统组成,在这三部分上可以给使用者提供一个不错的沉浸式体验。,2.2 HTC VIVE,这款虚拟现实头戴式显示器产品配件包括头盔、体感手柄、Camera、视频处理模块、电源线、电源供应模块、USB 连接线、PlayStation VR 视频信号线、以及一个立体声耳机。,PlayStation提供100度的视野,120Hz的刷新率和低于18ms的延迟,这将意味着它比具有更号延迟和更慢刷新率的其他虚拟现实设备更少引起佩戴者的不良反应。,2.3,PlayStation VR,移动VR一体机一种全新的VR设备。移动VR一体机使用,方便,性能强大,可以让用户随时随地享受VR,深受人们,的喜爱。高端的VR一体机正在成为新型游戏设备,配备红,外发射器,使它能够准确的跟踪头部运动,并配有带传感,器的手柄来追踪手部动作。,VR一体机对于市场来说,是一种较为新颖具有优势的产品,他对于手机VR眼镜,由于他拥有完整的VR系统,所以更容易受到使用者的接受,而对于PC VR头显,他的便携式,它的价格有着巨大优势,更适合于普通的游戏爱好者,科技宅,和入门级开发者的使用。,2.4 VR,一体机,VR手机盒子成本低廉,易于携带,发开应用的流程也是手游开发者所熟悉的。随着智能手机性能的快速提升,移动开发环境非常成熟和活跃,VR眼镜的成本相对较低,拥有一定价格优势。但是由于并没有独立的操作系统,只是附着于手机操作系统,严格意义上来说,根本无法算是VR产品,一般的作用也是看看手机视频,通过手柄玩手机上的游戏。,2.5,VR,手机盒子,HoloLens是微软公司开发的一种MR头显(混合现实头戴式显示器),HoloLens不会像星际迷航那样生成每个人都可见的3D世界,只有佩戴者能够看见,其他人只会看到您正佩戴一副滑稽古怪的眼镜和一系列离奇古怪的动作。HoloLens的另一个关键之处在于:微软没有打算为用户呈现一个完全不同的世界,而是将某些计算机生成的效果叠加于现实世界之上。用户仍然可以行走自如,随意与人交谈,全然不必担心撞到墙。,2.6,微软,Hololens,M,R的意思是Mixed Reality混合现实,与,Google Glass的AR增强现实技术不同的是,,HoloLens运用的MR技术具备环境学习能力,能,够实现全息影像和真实环境的融合。比如,HoloLens能把整个银河塞在您的房间里,又或,者是让外星人把您家墙壁凿出一个大洞。,与VR技术不同,HoloLens运用的MR技术并不没有为用户带来沉浸感,其真实感觉完全来自全息影像和真实环境的完美契合,因此说MR技术比AR、VR技术更高级也是可以理解的。,2.6.1 MR,技术简析,CAVE,英文全称Cave Automatic Virtual Environment,,中文译为,“,洞穴状自动虚拟系统,”,,CAVE是一种基于投影的,沉浸式虚拟现实设备,其特点是分辨率高,沉浸感强,交互,性好。,CAVE沉浸式系统是世界上一种成熟的高度沉浸式虚拟现,实系统,它把高分辨率的立体投影技术、三维计算机图形技,术和音响技术等有机地结合在一起,产生一个完全沉浸式的,虚拟环境。在该系统中,3D环境中的任何物体,都可以感受,参与者操作,并实施产生相应变化。,2.7,虚拟现实设备CAVE,CAVE是一种基于投影的系统,它由围绕观察者的四个投影面组成。四个投影面组成一个立方体结构,其中三个墙面采用背投方式,地面采用正投方式。,观察者戴上液晶立体眼镜和一种六个自由度的头部跟踪设备,以便将观察者的视点位置实时反馈到计算机系统和体验身临其境的感觉。当观察者在CAVE中走动时,系统自动计算每个投影面正确的立体透视图象。同时,观察者手握一种称为Wand的传感器,与虚拟环境进行交互。,2.7.1,CAVE技术原理,Leap Motion,中文名为,“,厉动,”,,它通过传感器检测双手,虽然使用简单,但功能强大且快速。Leap Motion真正的魔力之处在于骨骼追踪,不仅为手掌或指尖建模,还为您的手部关节和骨骼建模。这意味着Leap Motion可以准确地猜测手指或拇指的位置,即使它们不可见。通过交互引擎提供了统一的物理交互范例。抓,挥,推,它们变得像在现实世界中-样毫不费力。,2.8,Leap Motion,谢 谢,第,3,章 虚拟现实开发工具,综述,Multigen VEGA是MultiGen-Paradigm公司最主要的工业软件环境,用于实时视觉模拟、虚拟现实和普通视觉应用。Vega将先进的模拟功能和易用工具相结合,对于复杂的应用,能够提供便捷的创建、编辑和驱动工具。,3.1 Multigen VEGA,Quest3D是一个容易且有效的实时3D建构工具。能在实时编辑环境中与对象互动。其特点是:,1、图形化编程。2、高超的性能。,3、强大的图形效果。4、拥有真实的物理引擎。,5、人工智能,数据库操作等附加功能。,6、支持力反馈的设备。,7、强大的网络模块支撑。,8、漂亮的粒子特效系统。,3.2 Quest3D,虚拟现实平台,简称VR-Platform或VRP。是一款由中视典数字科技有限公司独立开发的直接面向三维美工的一款虚拟现实软件。该软件适用性强、操作简单、功能强大、高度可视化、所见即所得。所有的操作都是以美工可以理解的方式进行,不需要程序员参与。,3.3,Virtual Reality Plaftorm,虚拟现实平台,包含九大子产品。,虚拟现实平台,包括五大高级模块。,虚拟现实平台,由中视典数字科技有限公司独立研发,具有完全独立的自主知识产权。是中国第一款自主研发的虚拟现实软件,也是中国国内市场占有率最高的一款国产虚拟现实软件。,VRP可广泛的应用于城市规划、室内设计、工业仿真、古迹复原、桥梁道路设计、房地产销售、旅游教学、水利电力、地质灾害等众多领域,为其提供切实可行的解决方案。,3.3,Virtual Reality Plaftorm,Unity3D,又名Unity、U3D,是由Unity Technologies开发的一个具有三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎及虚拟现实开发引擎。,是目前市面上最流行的,VR,开发工具,本书采用的开发工具就是,Unity3D,。,3.4,Unity3D,Unity3D开发引擎的产品特点:,1.支持多种格式导入。,2.AAA级图像渲染引擎。,3.高性能的灯光照明系统。,4.NVIDIA专业的物理引擎。,5.高效率的寻路系统。,6.友善的专业开发工具。,7.逼真的粒子系统。,3.4,Unity3D,Unity3D开发引擎的产品特点:,8.强大的地形编辑器。,9.智能图形化界面设计。,10.多平台发布。,11.单机及在线游戏发布功能。,12.TeamLicense协同开发系统。,13.可视化脚本语言。,14.高写真动态材质模块。,3.4,Unity3D,3.4,Unity3D,虚幻引擎4(Unreal Engine 4简称 UE4)是一,款极为出色和流行的 3D 游戏引擎和开发工具,UE4,是由Epic公司开发的一款游戏开发引擎,之前的版本,是虚幻3。而虚幻4比之前版本有了很大的改进,使之,成为一款风靡全球的游戏开发引擎。相较,Unity,而言,,UE,最大的特点就是渲染效果,,UE,可以在使用默认渲染,的情况下,打造出精美的影视级效果。,UE,和,Unity3D,可是说在游戏开发及虚拟现实开发上的两大巨头,是应用最广的开发工具。,3.5 Unreal Engine,虚幻4的功能特点如下:,1.实时逼真渲染。,2.可视化脚本(蓝图)开发。,3.专业动画与过场。,4.健壮的游戏框架。,5.灵活的材质编辑器。,6.先进的人工智能。,7.源代码开源。,3.5 Unreal Engine,Egret Engine(白鹭引擎)是白鹭时代推出的一款使用TypeScript语言构建的开源免费的移动游戏引擎。包含渲染、声音、用户交互、资源管理等诸多功能,解决了 HTML5 性能、碎片化问题,应用于 2D 游戏、3D 游戏开发,及移动端交互式应用构建,拥有完善的跨平台运行能力。通过白鹭引擎,开发者可以快速地创建可以运行在手机App的WebView或者浏览器中的HTML5移动游戏,也可以编译输出成基于Android、iOS、Windows Phone的跨平台原生移动游戏。,3.6,白鹭,白鹭相较,UE,和,Unity,最大的特定是对,H5,平台的支持,,是一站式 HTML5 游戏开发工具。通过组件实体系统的架构与数据驱动开发的设计思想,EgretPro被设计成一款可视化的开发工具,这使得游戏开发这一过程从游戏研发直接开发转移到了游戏设计师直接可视化配置,通过这种方式,游戏开发效率得到了很大的提升。,3.6,白鹭引擎,LayaBox是2000年可乐吧打造的HTML5游戏引擎品牌,旗下产品为PC页游、APP手游、HTML5游戏提供了三端融合的技术解决方案。LayaBox核心产品包括:全能型游戏引擎(LayaAir)、集成开发环境(LayaAirIDE)、H5游戏的原生服务(LayaNative)、发行对接服务(LayaOpen)、游戏商城服务(LayaStore)。,支持语言:ActionScript3、TypeScript、JavaScript,3.7,Layabox,3.7,Layabox,谢 谢,第四章 开发语音,在进行虚拟现实开发时,我们首先要选择开发语言,前文中对于虚拟现实开发工具进行了介绍,而每种不同的开发工具所使用的语言也不尽相同。选择那种工具选择哪种语言,是我们做虚拟现实开发首先面临的选择。,本文应用的软件是Unity3D,Unity3D支持的三种开发语言,分别是C#、Boo、JaveScript,在国内应用最广的就是C#。,4.1.1,开发语音,C#是微软公司发布的一种由C和C+衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。,C#是由C和C+衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言,因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。,4.1.2,什么是,C#,1,、寻找规律;,理解编程语句,为什么这么写?掌握程序语言中的,“,主、谓、宾,”,。,2,、对标规律;,理解什么是程序思想,尤其是面向对象思想,对标现实生活的理念,加深对思想的理解。,3,、掌握规律;,程序语言也是语言,也是一种说话方式,要去理解这种说话方式,掌握这种说话方式。,4.1.3,怎么学C#,Visual Studio简称VS是微软为了配合.NET推出的一款免费开发工具,用户只要注册一个微软的账号即可使用,否则会有30天的试用期限。VS的下载和安装会在之后Unity的安装章节中讲解,新版本的Unity在安装的同时会询问用户是否安装VS,同学们可以在安装Unity的同时将VS一起安装完成。,4.1.4 Visual Studio,Visual Studio简称VS是微软为了配合.NET推出的一款免费开发工具,用户只要注册一个微软的账号即可使用,否则会有30天的试用期限。VS的下载和安装会在之后Unity的安装章节中讲解,新版本的Unity在安装的同时会询问用户是否安装VS,同学们可以在安装Unity的同时将VS一起安装完成。,4.1.4 Visual Studio,1,、,关键字:,C#语言中已经被赋予了特定意义的一些单词,例如,Class,、,Struct,2,、,变量,是程序代码的最小单元,用来存放指定类型的值或实例的存储单元,3,、变量的类型,值类型、引用类型,,二者的区别(重点、难点),4.2 C#程序结构,4,、枚举,:,定义一组可以赋给变量的命名整数常量提供了一种有效的方法。,5,、常量:,使用过程中不会发生变化的变量。,4.,2,C#程序结构,(,1,)算术运算符,4.,2.3,运算符,运算符,名称,-,减法,*,乘法,/,除法,%,取余,+,自加,-,自减,(,2,)比较运算符,4.,2.3,运算符,运算符,名称,大于,=,大于等于,4,,其结果是正确的,是,true,,也可以是一个返回值为,bool,方法。将方法调用放入小括号中也是可以的。,大括号中的代码是由多个case子句组成的多个分支。每个case关键字后面都有对应语句块,switch所执行的功能是通过对条件表达式的判读,根据得出的值到下面的case语句中找到相同的值,然后执行该值对应的语句,语句执行结束后,执行break语句,break直接结束switch。default的意义是其他,如果条件表示式的值在case块中没有找到匹配的值,那么执行default后面的语句。,4.3.1 流程控制语句,1.while语句,while(条件表达式),语句1;,while在英文的意思,“,当.时,”,,在程序语句中的表示的意思就是,当条件表达式的值为true时,就一直执行语句1,直到条件表达式值为false才结束。从语句格式上我们发现while的语法结构和if的结构很像,但是表示意思略有区别,if是条件表达式为true,则执行一次语句1,while则是一直执行语句1。在这里我们横向比较一下能加深对语句的记忆。,4.3.2 循环语句,2.do.while循环,do,语句1;,while(条件表达式);,do.while语句的执行顺序是先执行一次语句1,然后之后判断while中的条件表达式,如果是true,则反复执行语句1,如果是false,不再执行语句1,结束循环。do.while语句与while语句的最大的区别是,while是判读再执行,如果为false,则语句一次也不执行。而do.while是先执行一次,再判断为false,则不执行,也就是说,while可能一次也不执行语句,而do.while至少会执行一次语句,。,4.3.2 循环语句,3.for循环,for循环是程序语言中最有用的循环语句之一,for循环用于对一个有序的数据序列进行遍历,其中有一个初始值,有一个条件值,有一个变化规律,这三个中用;分隔,各有各的用途,下面是for循环的语法结构,for(初始值;条件表达式;变化规律),语句1;,for的使用都针对一个数据序列的,初始值用来确定序列索引值,表明从序列的那个位置起始循环。条件表达式是一个bool表达式,用来判断序列索引是否符合条件,如果索引不符合条件则结束循环。变化规律是指序列索引每次执行后对索引值做怎样的变化。值做怎样的变化。,4.3.2 循环语句,for(int i=0;i,3,;i+),语句;,for语句的运行顺序如下:,第一遍运行的时候以索引初始值i=0,判读条件,i=0,i,3,,执行语句1。执行变化语句i+;也就是i自加1,此时i=1。,第二遍i=1,判断条件,i=1,i,3,,执行语句。i+,i=2。,第三遍i=2,判断条件,i=2,i0&valueAI-Navigation打开。,Navigation面板找到Bake,鼠标单击Bake,进行场景烘培。烘焙后的场景会生成一个蓝色网格面,这个面的范围就是物体所能寻路的区域。,注意,寻路网格是一个单独的个体,不随着模型而移动,生成网格后,如果对场景进行了修改或移动,则需要重新烘焙场景。,5.4.5 Navigation Mesh,Agent Radius 物体空间半径,Agent Height 物体空间高度,Max Slope 可行走的最大的坡度,Step Height 可走上的最大台阶高,Drop height 可跳下的高度,Jump Distance 可跳跃的距离,5.4.5 Navigation Mesh,Cost,:,用来设置路径价值,比如走楼梯,消耗体能20,而坐电梯,消耗体能5,自然会选择后者方式。,1.,NavMesh Area,它是一个组件可以控制我们的npc绕过场景中的障碍物,避开其他npc挡路到达目标点。之所以使用它就是因为它可以避开其他npc,甚至绕过一些移动的障碍物。,2.NavMeshAgent,Agent Type:代理的类型。Base offset:偏移,修改代理的高低。,Speed:寻路时移动的最大速度。Agular Speed:寻路时是旋转的速度。,Acceleration:旋转加速度。Auto Braking:是否自动停止。,Stopping Distance:寻路时,距离目标多远停止。,Radius:代理的半径(指宽度)。Height:代理的高度。,Auto Repath:自动重新规划路径。,Area Mask:选择进入什么区域。,2.NavMeshAgent,我们游戏中通常在寻路时会遇见一些障碍物(动态,静态障碍物),对于这些障碍物的控制我们使用NavMesh Obstacle组件。,Shape:障碍形状(盒子形、胶囊形),Center:位置中心,Size:缩放大小,Carve:选中会自动绕路。否则会碰到,障碍物就会卡主,不会找新路线(如没有打勾则没有下几列),3.NavMesh Obstacle,用于手动指定路线来生成分离的网格连接。例如,游戏中让行进对象上下爬梯子到达另一块网格的情景就是利用生成分离的网格连接来实现。,S,tart,:开始端的物体;,End,:结束端物体;,Cost Override,:是否计算价值。,Bi-Directional,是否双向移动,。,Activated 是否在寻路的时候使用该组件。,Auto Update Positions 如果打勾两个端点如果移动了会自动调整导航位置,;,Navigation Area,路径区域,4.OffMeshLink,自动寻路中除了下面要讲到的方法,还有很多属性变量,这些变量在上面提到的面板中都有讲过,可以通过调取实例属性的方式调取,此处不再赘述。,(1)NavMesh类,以下的方法都所属于NavMesh类,GetAreaCost:获取在本导航网格的价值。,语法结构:public static float GetAreaCost(int areaIndex);,方法解析:静态方法,需要用类名.的形式调用该方法。实现是通过查询导航网格索引 参数是areaIndex,来查看本导航网格的成本。有返回值。返回类型为float类型。,5,.Navigation Mesh常用代码,SetAreaCost:设置相应导航网格区域的成本。,语法结构:public static void SetAreaCost(int areaIndex,float cost);,方法解析:静态方法,需要用类名.的形式调用该方法。实现是通过想修改成本的导航网格索引 参数areaIndex,让它的成本修改成cost参数。,5,.Navigation Mesh常用代码,GetAreaFromName:通过名字获取区域索引,语法结构:public static int GetAreaFromName(string areaName);,方法解析:静态方法,需要用类名.的形式调用该方法。实现是通过参数areaName名字来查询是否有这个区域,如果有返回的值为正数,则为索引;如果找不到区域,则为-1。,5,.Navigation Mesh常用代码,AllAreas:包括所有NavMesh区域的区域蒙版的常数。,语法结构:public const int AllAreas=-1;,Raycast;检测区域,语法结构:public static bool Raycast(Vector3 sourcePosition,Vector3 targetPosition,out NavMeshHit hit,int areaMask);,方法解析:静态方法,需要用类名.的形式调用该方法。该方法用来检测以参数sourcePosition为起点,到参数targetPosition终点。该方法有返回值,由生成点到目标点方向生成一条射线,如果碰到区域(参数areaMask)边缘则返回true,到达目标点且没有碰到区域则返回false该方法中有一个out NavMeshHit hit参数,hit是一个射线NavMeshHit类,用来保存射线碰撞物体所产生的信息,里面包含所碰到的物体的坐标等。,5,.Navigation Mesh常用代码,CalculatePath:计算两点间路径并保存,语法结构:public static bool CalculatePath(Vector3 sourcePosition,Vector3 targetPosition,int areaMask,NavMeshPath path);,方法解析:静态方法,需要用类名.的形式调用该方法。此功能可用于提前计划路径,以避免在需要该路径时游戏延迟。另一个用途是在移动代理程序之前检查目标位置是否可达。该方法有返回值,如果找到完整或部分路径,则为true,否则为false。,5,.Navigation Mesh常用代码,(2)NavMeshHit 类,position:物体的位置,语法结构:public Vector3 position get;set;,normal:标准化,语法结构:public Vector3 normal get;set;,distance:到射线击中点的距离。,语法结构:public float distance get;set;,mask:设置或获取NavMesh区域的值。,语法结构:public int mask get;set;,hit:射线是否命中,语法结构:public bool hit get;set;,5,.Navigation Mesh常用代码,(3)NavMeshAgent类,destination:赋值让寻路组件的物体去哪,语法结构:public Vector3 destination get;set;,SetDestination:传参的形式让寻路组件的物体去哪,语法结构:public bool SetDestination(Vector3 target);,方法解析:实例方法,需要实例.的形式调用该方法。此方法需要把要去的点以参数的形式传入进去即可寻路。,5,.Navigation Mesh常用代码,isOnNavMesh:该代理物体是否在导航网格上,语法结构:public bool isOnNavMesh get;,nextPosition:获取或设置navmesh代理的模拟位置。,语法结构:public Vector3 nextPosition get;set;,path:获取或设置当前路径的属性。,语法结构:public NavMeshPath path get;set;,5,.Navigation Mesh常用代码,SetPath:设置新路径,语法结构:public bool SetPath(NavMeshPath path);,方法分析:实例方法,需要实例.的形式调用该方法。此方法为该代理分配新路径参数为path。该方法有返回值,如果成功分配了路径,代理将恢复向新目标的移动。则为true。如果无法分配路径,则将清除该路径返回false。,5,.Navigation Mesh常用代码,SamplePathPosition:向前查找指定的距离,和NavMesh里面的RayCast相似。,语法结构:public bool SamplePathPosition(int areaMask,float maxDistance,out NavMeshHit hit);,方法解析:实例方法,需要实例.的形式调用该方法。该方法是以实例的物体自身前方向开始到参数maxDistance的之间生成一条射线,该方法有返回值,如果碰到区域(参数areaMask)边缘则返回true,到达目标点且没有碰到区域则返回false该方法中有一个out NavMeshHit hit参数,hit是一个射线NavMeshHit类,用来保存射线碰撞物体所产生的信息,里面包含所碰到的物体,碰撞点的坐标等。,5,.Navigation Mesh常用代码,isOnOffMeshLink:当前代理是否位于OffMeshLink上,语法结构:public bool isOnOffMeshLink get;,currentOffMeshLinkData:当前的OffMeshLinkData。如果此代理不在OffMeshLink上,则将OffMeshLinkData标记为无,语法结构:public OffMeshLinkData currentOffMeshLinkData get;,nextOffMeshLinkData:当前路径上的下一个OffMeshLinkData。如果当前路径不包含OffMeshLink,则将OffMeshLinkData标记为无效。,语法结构:public OffMeshLinkData nextOffMeshLinkData get;,CompleteOffMeshLink:在当前分离网格链接上完成运动。,语法结构:public void CompleteOffMeshLink();,5,.Navigation Mesh常用代码,(4)OffMeshLink类,activated:分离网格链接激活,语法结构:public bool activated get;set;,occupied:是否占用,语法结构:public bool occupied get;,startTransform:开始端的物体,语法结构:public Transform startTransform get;set;,5,.Navigation Mesh常用代码,(4)OffMeshLink类,endTransform:结束端的物体,语法结构:public Transform endTransform get;set;,biDirectional:可以双向遍历链接。,语法结构:public bool biDirectional get;set;,area:此OffMeshLink组件的NavMesh区域索引。,语法结构:public int area get;set;,5,.Navigation Mesh常用代码,(5)OffMeshLinkData类,valid:链接有是否效,语法结构:public bool valid get;,activated:获取链接是否处于激活状态,语法结构:public bool activated get;,startPos:获取链接开始的位置,语法结构:public Vector3 startPos get;,endPos:获取链接结束的位置,语法结构:public Vector3 endPos get;,5,.Navigation Mesh常用代码,谢 谢,第五章 虚拟现实开发工具,7,Unity中的粒子系统可用于制作特效,例如爆炸,技能,碰撞等。通过该组件能做出很多漂亮的效果。通过菜单栏的GameObject-Effects-Particle System即可在场景中添加一个名为Particle System粒子系统物体。,5.4.6 Shuriken(粒子特效),是粒子系统的主面板。,Duration:粒子发射周期;,Looping:粒子按照周期循环发射。,Prewarm:预热系统;,StartDelay:粒子延时发射;,StartLife Time:生命起始时间;,StartSpeed:粒子初始发生时候的速度。,3DStartSize:粒子单个缩放;,5.4.6.1 Particle System,StartSize:整体缩放。粒子初始的大小。,3DStartRotation:粒子单个旋转。,Start Rotation:整体旋转。粒子初始旋转。,Flip Rotation:随机旋转粒子方向。,Start Color:粒子初始颜色,,Gravity Modifier:为粒子添加重力。,Simulation Space:空间位置。,Local 此时粒子会跟随父级物体移动。,5.4.6.1 Particle System,World 此时粒子不会跟随父级移动。,Custom 粒子会跟着指定的物体移动。,Simulation Speed:根据Update模拟的速度。,Max Particles:同时存在的最大粒子数量。,Auto Random Seed:随机速度。,Stop Action:当属于系统的所有粒子都已,完成时,可以使系统执行动作。,5.4.6.1 Particle System,此模块主要定义粒子发射器,以及开始粒子速度的方向。以下部分详细介绍了每个Shape和Hemisphere的属性。,5.4.6.2 shape 形状模块,(2)Cone(圆锥),以下部分详细介绍了Cone发射器的属性。,5.4.6.2 shape 形状模块,(3)Donut(椭圆),以下部分详细介绍了Donut发射器的属性。,5.4.6.2 shape 形状模块,(,4,)立方体(Box),以下部分详细介绍了Box发射器的属性。,5.4.6.2 shape 形状模块,(,5,)网格(,Mesh,),网格发射器。,5.4.6.2 shape 形状模块,(,6,)图片精灵(,Sprite,),Sprite Renderer精灵发射器属性。,5.4.6.2 shape 形状模块,(,7,)圆形(,Circle,),Radius:半径。,Radius Thickness:粒子反射位置。0从表面发射。值1从中心发射粒子。,Circle,发射器属性。,5.4.6.2 shape 形状模块,(,8,)边(,Edge,),Edge发射器属性,。,Radius:边长。,5.4.6.2 shape 形状模块,(,9,)矩形(,Rectangle,),矩形发射器内容和前几种发射器内容相同,不再赘述。,5.4.6.2 shape 形状模块,Emission粒子发射模块,用来设置粒子的生成数量和方式。,Rate Over Time:单位时间内生成粒子的数量。,Rate Over Distance:单位移动距离内生成的粒子数量。,Time:从第几秒开始。,Count:设置可能发射的粒子数量。,Cycles:在一个周期中循环次数。,Interval:设置发射周期之间的时间(以秒为单位)。,Probability:控制每个突发事件产生粒子的可能性,1保证系统产生粒子。,5.4.6.3 Emission(粒子发射),随着生命周期更改速度,Linear X,Y,Z:分别是X,Y和Z轴上的粒子方向。,Space:指定Linear X,Y,Z轴是指本地空间还是世界空间。,Orbital X,Y,Z:X,Y和Z轴周围的粒子轨道速度。,Offset X,Y,Z:轨道中心的位置,用于轨道运行的粒子。,Radial:粒子的径向速度远离/朝向中心位置。,Speed Modifier:沿着当前行进方,向/围绕粒子的速度的比例,5.4.6.4 Velocity over Lifetime,随着生命周期更改极限速度,Speed:设置粒子的速度极限。,Space:设定粒子空间运动速度是世界坐标系还是自身坐标系。,Dampen:当粒子速度超过速度限制时,粒子速度衰减值。,Drag:对粒子速度应用拖动效果,看起来像拖尾。,Multiply by Size:根据大小设置阻力,;,Multiply by Velocity:根据速度设置阻力,;,5.4.6.5 Limit Velocity Over Lifetime,此模块设置粒子对发射器物体的速度继承。,Mode:继承模式,Current:粒子始终继承发射器的速度。例如,发射器减速,则所有粒子也将减速。,Initial:当每个粒子诞生时,继承发射器的速度,不再随发射器的变化而变化。,Multiplier:粒子继承发射器速度的比例。,5.4.6.6 Inherit Velocity,此模块指定粒子的颜色和透明度在其生命周期内如何变化。,Color:粒子在其生命周期内的颜色变化。色条左侧点表示粒子寿命的开始,右侧表示粒子寿命的结束。,5.4.6.8 Color Over Lifetime,设置粒子的颜色随着速度的变化而改变。,Color:粒子的速度变化色条。,Speed Range:色条对应到的速度范围。,5.4.6.9 Color By Speed,设置粒子的大小根据生命变化。,Separate Axes:在每个轴上独立控制粒子。,Size:粒子随着在其生命周期的变化按曲线的值变化。,5.4.6.10 Size over Lifetime,粒子随着生命周期旋转。,Separate Axes:允许每轴指定旋转。勾选后,分三个轴向显示。,Angula
展开阅读全文