当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 虚拟现实技术探索之三:概念与原理

虚拟现实技术探索之三:概念与原理 时间:2018-09-28      来源:未知

概述: 本文在简略回顾时下流行的几种虚拟现实引擎和Unity引擎的标志性软件发布版本之后,对于本领域的学习者学习中常常遇到的专业术语就Unity引擎的性能瓶颈和功能分工进行概念与原理性的解释,希望能够给学习者带来便利。

 

1 虚拟现实引擎

 

  就字面上讲,虚拟现实这个词汇,虚拟是定语,现实是关键词语。说白了就是“虚拟了的现实”,可见重点是“现实”。也就是说我们要将现实世界中的真实环境通过某种手段模拟出来,达到以假乱真的目的。这里的现实对应的就是“真实世界”。真实世界这个范围很大,比如物理学、医学、地理信息、天体运行等,所涉及的专业知识就是我们整个世界的知识体系。在这个基础上研究虚拟现实才会有更广阔的发展方向和实际意义。 从广义角度来讲,虚拟现实本身也不仅仅局限于计算机技术。举个简单的例子,比如魔术,我们都知道看到的东西其实是假的,但是我们却真真切切的感受到那是真的,这是不是一种虚拟现实呢? 计算机的出现我们本身就可以理解为是以一种虚拟现实技术的发展过程。首先,计算机的出现就是为了模拟人脑的工作流程,替代人工大量而繁琐的计算工作。操作系统本身也是按人类的语言和思维方式设定的输入输出过程:  字符界面的dos、unix、os/2等都是模拟人类的语言方式来操作的。到了桌面操作系统就更明显,windows中的“桌面”、“我的电脑”、“网上邻居”等等都是在通过真实世界的思维方式来管理计算机资源。计算机程序设计发展也是这样,汇编语言是机器语言,非常不适应人类的思维习惯,所以到现在也只有CPU底层研发人员或专业人士才能使用。后来有了面向过程的pascal、c等面向过程的编程语言,这时候就非常符合人类的思维方式了,所以应用软件才开始大发展。现在程序设计的基本思想是“面向对象”,把计算机里面的每个资源、设备或者是数据都归纳为以一个一个的类,我们使用的时候就是创建某个类的一个实例,这就是对象。通过设置对象的属性、调用对象的方法等来实现操作数据的管理。整个计算机软件的发展可以说就是一个越来越完善的虚拟现实应用。这也非常符合人类在对现实世界事物管理、分析的思维方式。计算机系统包括各式各样的外围设备—输入输出设备,这些设备可以被定义成计算机系统中的资源,通过操作系统来管理。这种计算机系统的模型我们可以延伸到虚拟现实领域。可以类推,虚拟现实系统中的核心部分应该是虚拟现实引擎,这个引擎控制管理整个系统中的数据、外围设备等资源。与计算机系统一样,根据不同的应用领域所选择的计算机操作系统、外围设备等也不同。比如专业数据库系统一般用unix和oracle、专业的图形系统诸如苹果等。同样的,虚拟现实系统中也针对不同的应用应该选择不同的引擎(或者说是虚拟现实的操作系统VROS[Virtual Reality Operation System])。比如我们做路面驾驶模拟就要选择能够处理真实世界物理学数据的VROS,同时需要控制管理外围设备的输入输出。在医学方面,就必须要求能够处理数字化人体数据以及想用的医学模拟设备。在数字地球方面、就必须能处理空间信息数据等。这样我们就可以有针对性的选择适合应用的VROS(虚拟现实操作系统或者说是引擎)。

       众所周知,虚拟现实技术具有多感知性(Multi— Sensory)、交互性(Interaction)、沉浸感(Immersion)、自主性(Autonomy)4 个重要特征。沉浸感是指用户有“身临其境”的感觉,而交互感是指用户可以用日常使用的方法对环境内物体进行操作。而所有这些技术的实现离不开虚拟现实引擎的有力支持,准确点说是虚拟现实引擎渲染技术。

       

2 Unity引擎发展

对于计算机虚拟现实技术历经四个阶段的发展,出现了各种虚拟引擎的实现。而Unity引擎的出现极大地方便了开发人员的工作效率。在Unity引擎的发布历史中,从单一的Mac系统发展到现在跨多个平台的支持经历了多个“标志性”版本的进化,小结如下:

 

正式发布开始

Unity 1.0版本于2005年的6月份正式发布,Unity作为Mac系统上的游戏开发引擎,在其后的时间内不断快速更新。很快就在2007年10月发布了2.0版本。

跨平台

值得祝贺的是2009年3月18日,同时发布了在Mac系统和Windows系统上的Unity 2.5版本, 开始为游戏开发者,提供跨平台的游戏开发引擎。

iOS支持

Unity的3.0版于2010年3月发布,在该版本中,统一了iPhone和Windows的游戏开发,提供了一致的游戏场景编辑器。

Android支持

Unity的3.3版于2011年3月发布,从该版本开始,全面支持Android开发,从而实现了三种主要平台的游戏开发。

Windows Phone 8支持

2013年7月发布的Unity 4.2版本,则支持Windows Phone 8开发,11月12日发布的Unity 4.3版本,具有内置的2D开发工具。

 

3 Unity引擎功能

3.1 性能分析

Unity引擎运行的过程中,主要需要使用两种计算资源CPU和GPU。他们相互合作,来让我们的应用在预期的帧率和分辨率下工作。其中,CPU主要保证帧率,GPU主要负责分辨率相关的一些处理。GPU的工作量很大,需要渲染(见后面解释)整个流水线。它从处理CPU传递过来的模型数据开始,进行顶点着色器、片元着色器等一系列工作,后输出屏幕上的每个像素。GPU的性能瓶颈和需要处理的顶点数目、屏幕分辨率、显存等因素有关。而相关的优化策略可以从减少处理的数据规模(顶点数目和片元数目)和减少运算复杂度等方面入手。因此对于Unity引擎运行中的瓶颈问题不妨从以下几个方面考量:

 

CPU

- 过多的Draw Call

Draw Call可以理解为CPU调用图像编程接口,用来间接命令GPU进行绘图操作。一个常见的误区是Draw Call造成性能问题的元凶是GPU, 认为GPU的状态切换是耗费时间的,其实并不是这样,真正拖“后腿”的其实是CPU。因为提交大量很小的Draw Call会造成CPU的性能瓶颈,即CPU把时间都花费在准备Draw Call的工作上了。所以优化性能的明显方式就是把很多“小”的Draw Call合并成一个“大”的Draw Call,这个就是批处理的思想。

- 复杂的脚本或者物理模拟

尽量采用Unity引擎中的高性能的物理组件是提高性能的重要考虑。值得庆贺的是Unity 5.5 为了开发者提供了面向所有平台的用户佳体验,支持一些旨在改善性能的新功能。例如为Android和iOS平台添加了GPU Instancing支持,加入新的CPU Usage Profiler时间轴视图,更新物理引擎为PhysX 3.3.3等等。

GPU

- 顶点处理

顶点是硬件GPU绘图的几何图元,相应地Unity引擎包括顶点着色器。性能瓶颈表现为过多的顶点和过多的逐项顶点计算。解决方式可以通过减少需要处理的顶点数目比如优化几何体、使用模型的LOD技术(功能就是减少模型的顶点数)和使用遮挡剔除技术。

- 片元处理

片元操作是对顶点信息插值得到的结果,Unity引擎也包含片元着色器,其瓶颈表现为过多的片元(可能由于分辨率造成,也可能由于画图负载过大即overdraw造成)和过多的逐片元计算。显然解决方式就是减少需要处理的片元数目如控制绘制顺序、警惕透明物体和减少实时光照。另外可以减少计算的复杂度如使用着色器的LOD技术和代码优化。

带宽

表现为带宽使用了尺寸很大且未压缩的纹理(见下面解释)和分辨率过高的帧缓存。通过减少纹理大小和利用分辨率的缩放能够节省内存带宽。

 

3.2 概念与原理

同样,Unity引擎的功能也是历经多个版本逐步丰富起来的。2012年2月发布的Unity 3.5版本,引入了粒子系统; 2012年11月发布的Unity 4.0版本,则引入了新的动画系统; 2013年11月发布的Unity 4.3版本,则支持内置的2D开发工具。经历了后重大更新版Unity 4.6 后,2014 年 3 月 18 日 – 在旧金山举办的游戏开发者大会的开发者日,Unity Technologies 公布了 Unity 5,这是新一代的Unity 多平台引擎和开发工具。Unity 5 含大量更新,如Enlighten(Geomerics 的 Enlighten 是行业内先进的动态光照技术)实时照明系统和基于物理特性的着色器,这些更新能够呈现令人惊艳的高质量角色、环境、照明和效果。另外,由于全新的统一着色器架构、编辑器中实时光照贴图预览和改善的资源捆绑功能,工作流程效率大幅提高;同时音频设计师将开发一个全面改革的音频系统以及新的混音器,用于创造动态音景和音效。

渲染功能

相比于CPU,GPU存在两大优势:一是响应速度快,据人工智能硬件研究项目“寒武纪”。GPU能够提供平均 58.82X 倍于CPU速度;二是GPU对能源的需求远远低于CPU。因为GPU可以平行处理大量琐碎信息,并能在高速状态下分析海量数据。

1>.  GUI系统

跟早期计算机使用的命令行界面或图形界面相比,Unity的GUI系统3D界面体现了时代感。在很多三维交互的界面中,一定会有一部分图形和文字信息不随3D视觉的改变而改变,比如生命值、聊天窗口、文字提示,显示皮肤等等,这些不被改变的界面元素和相应用户交互行为的事件消息机制一起构成了GUI系统,包括GUI层、GUI纹理、GUI文本等等。

2>.  摄像机

摄像机(Camera)是为玩家捕捉并展示世界的一种设备。场景中至少需要有一台摄像机,也可以在一个场景中使用多台摄像机。 要将游戏呈现给玩家,相机是必不可少的。可以对相机进行自定义、脚本化或父子化,从而实现可以想到的任何效果。在拼图游戏中,可以让相机 (Camera) 处于静止状态,以看到拼图的全视图。在第一人称射击游戏中,可以将相机 (Camera) 父子化至玩家角色,并将其放置在与角色眼睛等高的位置。在竞速游戏中,您可能希望让相机追随玩家的车辆。

3>.  天空盒

Unity中的天空盒实际上是一种使用了特殊类型Shader的材质,这种类型的材质可以笼罩在整个游戏场景之外,并根据材质中指定的纹理模拟出类似远景、天空等效果,使游戏场景看起来更完整。

4>.  耀斑层

耀斑或光晕层组件可以贴在相机(Cameras)上让镜头光晕(Lens Flares) 出现在图像中。默认情况下,相机已经贴上光晕层(Flare Layer)。

5>.  灯光

Unity中灯光为一个场景提供光照支持,并决定一个场景的颜色和氛围。Unity一共给我们提供了四种灯光可供选择: 平行光(Directional lights)、点光源(Point Light)、射线光源(Spot Light)和面光源(Area Light)。

6>.  遮挡剔除

当一个物体被其他物体遮挡住而不在摄像机的可视范围内时不对其进行渲染。遮挡剔除在3D图形计算中并不是自动进行的。因为在绝大多数情况下离摄像机远的物体首先被渲染,靠近摄像机的物体后渲染并覆盖先前渲染的物体(这被称为重复渲染"overdraw")。

7>.  LOD

LOD(Level Of Detail)是Unity采用的性能优化技术,该技术会减少硬件负载和提高渲染的性能。

网络视图

网络视图是在Unity中创建网络多人游戏的重要一步。易于使用,而且非常强大。在你开始练习使用网络视图之前你应该更多了解网络背后的基本概念。网络视图是通过网络共享数据的传输工具。通过网络视图可以发起两种类型的网络通信:状态同步和远程过程调用。

网格功能

网格也是Unity很重要的组件,也称网格组件。网格在三维世界坐标中占很大比例,除了一些资源商店插件之外,Unity 不包括建模工具。不过 Unity 与大多数三维建模包之间具有很强交互性。Unity 支持三角形或四边形网格。网格组件主要用于设置外形和外表。网格组件涉及的对象包括网格过滤器(Mesh Filter)、文本网格(Text Mesh)和网格渲染器(Mesh Renderer)。网格过滤器就是为游戏对象添加一个外形,它规定了几何体的表面信息,负责改变该物体的形体样貌;文本网格用于显示3D文字;网格渲染器用于渲染网格显示游戏对象,它主要告诉计算机该物体的表面应如何去进行渲染 。需要注意的是同网格过滤器一样,在使用文本网格的时候必须同时提供一个网格渲染器组件,因为需要将其渲染出来,否则不可见。如果获取的网格拥有蒙皮信息, Unity将自动创建一个有皮肤的网格渲染器(skinned Mesh Renderer)。

导航功能

导航功能仍然为Unity重要的组件,分为导航网格代理(Nav Mesh Agent)、分离网格链接(Off Mesh Link)和导航网格障碍物(Nav Mesh Obstacle)。导航功能往往和寻路一起结合使用,导航系统允许您创建可以在游戏世界中智能移动的角色,使用从场景几何自动创建的导航网格。Unity提供了自动寻路系统能够解决大多数的异常复杂的AI寻路算法。导航网格决定我们的导航网格代理活动的范围;导航网格代理组件(为Unity 3D提供的寻路系统核心组件)需要附着寻路的角色身上,比如怪物;而分离网格链接这个组件主要是用来构造寻路角色的寻路路径的某个部分,比如我们有时需要怪物在寻路过程中从一个固定的地方移动到另一个固定的地方。分离网格链接可以构建运行时人物的特定行为如开门或从窗台跳下。在导航网格上的固定障碍物,可以作为烘焙(导航网格构建中用到的技术)过程中的一部分设置。但是,也可能在场景具有动态阻挡物,这将通过Agent移动来避开。这种动态障碍物,可以指定Navmesh Obstacle组件设置,可以被添加任何游戏物体上并随该对象移动。

 

风力区域

通过加入带有风区组件的一个或多个游戏对象,可以创建带有风效果的地形。风区的树木会在现实的动画时尚中弯曲并且风本身会以脉冲的形式移动从而创建出在树木间的自然移动模式。

动画功能

Unity的动画系统允许你创建优美的动画角色。动画系统支持动画合成、混合、添加动画、步调周期时间同步、动画层、控制动画回放的所有方面(时间、速度、混合权重)、每个顶点有1、2、4个骨骼的网格蒙皮、以及终基于物理的布娃娃系统。

音频功能

Unity的动画系统允许你创建优美的动画角色。游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放还可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种试用与比较短的游戏音乐,如开枪,打怪 时“砰砰”一瞬间播放的游戏音效。关于音频的技术术语主要是音频源和音频侦听器。音频源(Audio Source)在场景中播放音频剪辑(Audio Clip)。如果音频剪辑(Audio Clip)是一个3D剪辑,音频源是在一个给定的位置,并会随距离衰减这样的方式进行播放。音频可以在扬声器之间传播(立体声至7.1)(扩散Spread)和可以在3D和2D(平衡调整级别PanLevel)之间进行转换。这是可以控制的随距离衰减曲线。音频监听器扮演着像麦克风这样的设备。它接收任何在场景输入的音频源(Audio Source),并通过计算机的扬声器播放声音。对于大多数应用程序,经常会把侦听器贴在主摄像头(Main Camera)。

特效功能

1>.  粒子系统

模拟计算机图形学中一些特定的模糊现象,比如烟雾、尘土、火焰、爆炸、水流、电火花、云、雪、流星尾迹或发光轨迹等由大量微小颗粒构成的团体,带有一定的物理属性。粒子系统的使用在三维软件和模拟引擎中十分普及。

2>.  拖尾渲染器

拖尾渲染器(Trail Renderer)用于制作跟在场景中的物体后面的拖尾效果来代表它们在到处移动。比如拖尾渲染器(Trail Renderer)用于炮弹后面的拖尾,或是飞机机翼尖端产生的凝结尾的效果非常棒。当尝试添加一个速度的通用感觉时也很好。

3>. 线渲染器

线渲染器(Line Renderer)有一个包含两个或更多3D空间中点的数组并在每两个点之间绘制平直的线。一个单独的线渲染器(Line Renderer)组件因此可以用来绘制任何东西,从一条简单的平直线到一条复杂的螺旋线。这些线一直是连续的;如果你需要绘制两条或更多完全间断的线,你需要使用多个游戏物体(GameObject),每一个都带有它们自己的线渲染器(Line Renderer)。

4>.镜头光晕

模拟相机镜头内的折射光线的效果。它们被用来代表真正的明亮的灯光,更微妙的是,可以在你的场景添加多一点的气氛。

5>.光晕

光晕(Halos)是光源周围的光线区域,常常用来表现在空气中的细小的灰尘颗粒的效果。

6>. 投影器

投影器(Projector)可以将任意与它的平截头体相交的材质投影到场景上。该材质必须 使用特殊类型的着色器的才能正常工作。

模拟对象功能

游戏对象(Game Object)用来模拟现实世界中的各种物体,简单列举如下:

1>.  物理

Unity内置物理引擎,用来做独特的突发行为,通常非常酷。要使一个物体在物理控制下,简单添加一个刚体给它。这时,物体将受重力影响,并可以与其他物体碰撞。

2>.  刚体

刚体是物理模拟物体,刚体使物体能在物理控制下运动。刚体可通过接受力与扭矩,使物体像现实方式一样运动。任何物体想要受重力影响,受脚本施加的力的作用,或通过NVIDIA PhysX物理引擎来与其他物体交互,都必须包含一个刚体组件。

3>.  角色控制器

角色控制器主要用于第三人称或第一人称游戏主角控制,并不使用刚体物理效果。Unity已经帮我们实现了“上,下,左,右,跳跃”等相对复杂的逻辑操作,并且将他们封装成了角色控制器组件。角色控制器组件和刚体组件均具备物理引擎功能,只是角色控制器组件的物理效果没有刚体组件精确。

4>.  碰撞器

Unity中常用的碰撞器通常Colliders会与刚体(Rigidbody)一起使用,没有添加碰撞体的刚体会彼此相互穿过。

5>.  布料

布料是特殊的组件,它可以变化成任意形状,比如说:随风飘的旗子,窗帘等。Unity提供了两种布料组件:交互布料(Interactive Cloth)、蒙皮布料(Skinned Cloth)。具体的细节分析见后续相关的技术博客分析。

6>.  关节

关节组件可添加至多个游戏对象当中,而添加了关节的游戏对象将通过关节连接在一起并且感应连带的物理效果,但是关节必须依赖于刚体组件。Unity提供了下面的关节组件:铰链关节(Hinge Joint)、固定关节(Fixed Joint)、弹簧关节(Spring Joint)、角色关节(Character Joint)、可配置关节(Configuration Joint)。具体的关节详细使用功能可以见后续的相关技术博客分析。

7>.  恒力

恒力是一种快速有效地给刚体添加恒定外力的方法。如果你不希望其初速度很大而是不断加速的话, 适用于类似于火箭等射出的对象。

地形引擎

Unity的地形引擎会按照默认的宽度、高度和长度的图形分辨率,纹理分辨率等创建一个地形,并根据用户要求的地理参数进行修改(编辑特定高度、设置平滑、纹理贴图、画树模型、画草模型和其它设置等)。

着色器引擎

Unity包括超过40种内置(built-in)的着色器,也可以你自己编写更多属于自己的着色器比如透明着色器系列、镂空着色器系列、自发光着色器系列、反射着色器系列等等。

4 虚拟现实引擎的应用案例

从软件开发和发布模式来讲,很多雄心勃勃的外虚拟现实厂商倾向于发布供开发人员使用的SDK或者开发平台(platform)的概念,很多虚拟现实引擎设计的技术蕴含其中。下面列举几个时下典型的商业案例以飨读者。

1.   虚拟现实引擎UNIGINE

               UNIGINE引擎是一款应用于虚拟仿真、虚拟现实、视觉化领域的实时3D引擎。区别于游戏引擎,UNIGINE的定位是尖端的、严肃的、专业的应用开发工具,在特大场景塑造和画面渲染表现方面尤为突出,彰显强大的市场竞争力。因此,UNIGINE可胜任航空航天、军事、海事、教育科研、城市规划、室内设计、工业制造等行业的虚拟技术实现,搭建逼真震撼的虚拟内容场景、设置实时的模拟交互,对演练实训、研究培训、宣传体验都有着颇为显著的实用效果。

   UNIGINE SDK软件包被设计成不局限于娱乐领域,而是跨所有行业提供照片般逼真的高品质图形能力。由此我们能够看出,这个是虚拟现实技术向各个行业渗透的典型商业案例。目前,UNIGINE实时3D引擎目前拥有Starter、Professional、SIM三个版本,支持Windows、Linux、Mac OS系统平台。

2.   增强现实EasyAR

增强现实是虚拟现实产品的一个很重要的分支(见技术探索一),EasyAR是一款免费好用的全平台增强现实(AR)引擎。EasyAR旨在降低AR开发的技术门槛,为广大AR开发者提供稳定、高效、便捷、易用的开发工具。作为免费的增强现实(Augmented Reality)引擎,EasyAR提供给AR开发者开放的AR SDK。EasyAR为Unity开发和本地开发提供了大量可直接运行的样例。这些样例演示了各种target的创建方式和包含流媒体和透明视频在内的视频播放,以及更加高级的实时target创建和AR涂涂乐。

3.   HiAR SDK

HiAR 是亮风台信息科技公司的品牌名称,推出了以HiAR 基础技术平台、AR云服务、内容平台智能终端为一体的完整AR产品与服务体系。该公司打造的新一代移动增强现实(AR)开发平台,提供一整套世界的增强现实(AR)技术服务,让广大开发者可以轻松使用前沿的计算机视觉技术、计算机图形学技术,快速搭建个性化的 AR 应用。HiAR 同时提供 Native SDK、Unity SDK、REST API(HiAR Cloud API)、管理后台和 AR 浏览器(幻镜),并且提供产品定制及 AR 制作服务。HiAR 专注于增强现实开发包,旨在让各平台的开发者更方便地开发 AR 应用和游戏,以及快速集成 HiAR 云识别服务。 HiAR SDK 目前支持Unity、Android和iOS。

4.   Vuforia SDK

Vuforia是一款能将现实世界物体转变为互动体验的扩增实境平台,旨在帮助开发者打造全新级别的真实世界物品与虚拟物品的互动。它使用机算计视觉技术来实时地识别和跟踪平面图像以及简单的3D图像,使开发者能够在现实世界和数字体验之间架起桥梁。 Vuforia通过Unity游戏引擎扩展提供了C、Java、Objective-C和.Net语言的应用程序编程接口。从而Vuforia SDK能够同时支持iOS和Android的原生开发,这也使开发者在Unity引擎中开发AR应用程序时很容易将其移植到iOS和Android平台上。

5.   Daydream SDK

        在2016年的Google I/O大会上,Google正式发布了全新的移动VR平台——Daydream,还公布了官方的VR头盔和手柄设计参考。我们可以从Google Daydream开发者官网上看到目前Daydream对三大开发平台的支持:Android平台(Android Studio),Unity3D和UE4(虚幻引擎)。此外Google也发布了Google VR SDK软件包, 支持自家的Daydream和Cardboard,其中包括用于创建插入到Cardboard查看器中的应用程序的简单API以及用于支持具有Daydream功能的手机和Daydream控制器的更复杂的API。Google VR NDK for Android为开发人员编写本机代码提供了C / C ++ API。

6.   Hololens SDK

鼎鼎有名的虚拟现实全息透镜Hololens是微软公司在开发者大会发布的混合现实设备产品。为了便于开发者,微软公司的SDK中也包括全息透镜的模拟器。全息透镜的模拟器可以让开发者在您的PC上在没有HoloLens设备的情况下,使用带有透镜的开发工具集测试您的应用程序。模拟器使用Hyper-V虚拟机。人类与环境的输入,通常是通过传感器读取全息透镜代替模拟使用你的键盘,鼠标,或Xbox控制器。应用程序不需要修改,在模拟器上运行,不知道他们不是一个真正的全息透镜运行。

5 结论

本文试图从基本的原理和技术概念入手,重点对Unity引擎设计和开发中会用到的技术术语进行解释以帮助读者扫清概念。罗列了几种游戏开发中用到的著名虚拟现实引擎,而后对于有潜在商业开发价值的虚拟现实开发套件或者平台进行介绍,为读者将理论应用于开发实践具有重要的参考意义。

 

          供读者参考资料:

 

[1]  //www.hiar.com.cn/doc-v1/main/overview

[2]  https://blogs.unity3d.com/cn/2016/09/22/daydream-technical-preview-available-now

[3]  https://www.cryengine.com/get-cryengine/memberships

[4]  //www.woshipm.com/evaluating/435314.html

[5] https://www.unrealengine.com/zh-CN

[6]  https://developers.google.com/vr/concepts/overview-daydream

[7]  https://developer.vuforia.com

[8]  //www.easyar.cn/index.html

[9]  //unigine.com

上一篇:异步式IO与事件式编程

下一篇:Linux 块设备

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部