第一个VR应用    之前我们已经将Oculus的开发包导入到空工程中了,现在我们来构建第一个桌面VR的示例.开发包中已经有一个示例场景,只需要几步就可以让这个场景运行起来.我们将要构建的这个Demo如图3-8所示,这个从我电脑上截的图,这个场景非常简单,里面有几百个漂浮的立方体,仅此而已.当你把Oculus Rift连接到你的电脑上时,你就可以通过头显进入一个沉浸式的场景,你可以来回转动你的头,你将看见到处都是立方体. 图3-8     下面我们就来实际操练一下.在你的Unity中进入Proj…
大众化的游戏引擎--Unity3D     并不是所有VR应用都是游戏,然而现在做VR开发的几乎都会用专业游戏引擎来做,因为游戏引擎既满足了一个引擎的要求又可以方便地制作出高品质的VR应用.一个游戏引擎主要核心包括:高品质图像渲染.物理模拟引擎.实时光照.脚本驱动以及强大的可见即可得编辑器.     目前市面上有许多非常好而且很成熟的游戏引擎,Unity3D是我们制作VR应用的首选解决方案.由于Unity3D不仅功能强大且容易掌握,受到了独立开发人员和学生的强烈拥护.下面是Unity3D一些亮点…
运动追踪设备    第二种可以使人脑相信它真实处于虚拟世界的关键技术就是运动追踪技术,它可以通过追踪头部的运动状态实时更新渲染的场景.这与我们在真实世界中观看周围非常类似.    高速的惯性测量单元(IMU)是Oculus Rift的发明之一,它被用于快速的头动追踪.IMU结合了陀螺仪.加速度计(或者磁力计,类似现在手机中使用的重力感应装置),可以精确测量转动的变化.    头部运动追踪非常重要,有可能比立体显示还重要,因为我们的感觉系统对运动非常敏感,如果在头部移动时图形显示出现延迟,那么就会…
什么是虚拟现实?     虚拟现实的目标:让人们相信真实地处于一个虚拟世界中.要达到这个目标就得让人们的大脑(负责视觉和运动感知部分)欺骗他们.不同技术合在一起才可以创造这种幻觉,包括:     全立体显示:也称为3D显示或者头显(HMD).这种显示方式结合的使用了多图像处理.反畸变技术和凸透镜片来让人眼看到深度信息,如此就形成了立体的图形.     移动追踪硬件:陀螺仪.加速度计以及其它一些组件被用在虚拟现实技术中,这些可以感应我们的身体移动和头部转动,有了这些以后应用程序就可以实时更新需要绘…
 序     初识虚拟现实技术,非常倾心,奋力习之,阅<Learning Virtual Reality>一书之后觉得甚好,但不愿独乐乐,于是翻译之,与大家共同学习.本人学艺不精,难免有翻译不到位的地方,还望大家多多指点,多多包涵.     ----始于2015.12(Michael Liew) 第一章 简介     虚拟现实是一个有着巨大潜力的媒介.它开启了一种不可思议的交互和交流方式,可以让人瞬间转移到另一个地方,可以让你完全沉浸在其中,一切感觉起来都会非常真实.可是时至今日,由于造价和一…
使用Oculus移动端SDK     在基于安卓系统的GearVR上开发应用需要用到Oculus的移动端SDK,下面的网址可以下载SDK:http://developer.oculus.com     如果你没有账户,免费注册一个.然后进行下面几步:     1.在顶部导航栏选择Downloads页面.     2.在SDK下拉选项中选择SDK:MOBILE.     3.点击最新移动端SDK链接.     4.同意使用许可协议.     5.下载SDK的压缩包至任何位置. 配置安卓SDK  …
本章我们来介绍一下如何在移动VR设备的佼佼者GearVR上进行开发,之前我们在桌面端的VR开发想法可以直接应用在移动端,但是仍然会有些不一样的技术需要注意.这次,我们仍然采用Unity3D引擎构建示例,在开始编码之前,我们来了解一下这个跨时代的新设备.     三星与Oculus合作创建了移动端VR的解决方案,它采用Oculus的图形畸变算法和新一代头动追踪技术,将一个高分辨率三星的智能手机放在头显设备中作为显示器.2014年底三星发布了基于Note4手机的革新版GearVR,又于2015年初发…
代码剖析 原文作者:Tony Parisi     那么,Unity究竟是如何支持Oculus VR运行的?首先,我们来看看Unity场景是如何构建的.在Unity集成开发包中有一个相机预设体,这个预设体提供了最基本的VR技术,包括:Oculus的立体渲染和头动追踪,下面我们来具体操作一下.     在Hierarchy面板中定位到OVRCameraRig物体,然后我们点击它左边的向下箭头展开它的子物体,Camera Rig中包含一个叫TrackingSpace的子物体,TrackingSpac…
发布运行     Unity可以支持多种目标平台的发布,包括:桌面端.Web端.移动端.游戏主机端.     发布运行之前的Cubes场景至桌面端,我们先选择File->Build Settings...,然后会出现一个对话框,如图3-11所示.   图3-11     接下来,我们需要做这件事才能正常发布:     1.在列表中选择"PC, Mac & Linux Standalone",然后点击列表下面的"Switch Platform"按钮,这样…
相机.透视图.视口.投影     渲染好的场景都需要一个可以供用户查看的视图,我们通常在3D场景中用相机来提供这种需求.相机相对场景有位置和方向,就像我们生活中的相机一样,它也提供透视图查看方式,这种方式可以有近大远小的效果.相机最终会将三维的场景渲染成一幅幅二维的图片,我们就可以通过它的视口进行观察.     相机处理计算时主要涉及到两个矩阵,第一个是线性变换矩阵(之前章节我们称为转换矩阵),它负责定义场景物体的位置和朝向,第二个是投影矩阵,它负责将三维场景物体投影到二维视口中.当然具体的细节…
转换矩阵     模型网格的三维空间位置都是由它们的顶点坐标决定的,如果每次想要移动一下模型位置都要依次改变每个网格的顶点坐标,这将一件非常头疼的事,要是遇上需要显示动画效果那就更糟了.为了解决这个问题,大部分的三维系统都会提供转换操作,这个操作原理是整体移动网格,这样网格与世界坐标就有一个相对转换,而不需要去改变每一个顶点的坐标值.其中,转换操作包括:移动.旋转.缩放,这些操作都是针对网格整体相对世界坐标系的,而不是特定的每一个顶点.     图3-3中展示了转换操作,图中有三个立方体,每一个…
第三章 基于Oculus Rift开发桌面端VR应用     接下来的几个章节中我们会进行VR开发的实际操练,本章就从Oculus Rift开发开始,我们会介绍如何开发一个桌面端的VR应用.虽然只是介绍了Rift的开发技术,但是这些技术同样适合于HTC Vive以及其它头显设备.     在进行第一个VR应用开发之前,我们来看看几个重要的概念:     搭建场景:创建一个可视化.可交互.脚本驱动的虚拟现实环境.     立体渲染:用两个相机渲染场景分别表示用户的左右眼,然后通过Oculus Ri…
谷歌纸盒---基于智能手机的廉价VR眼镜     如果用汽车来做类比,Oculus Rift和GearVR就是特斯拉和兰博基尼,它们物美但是价不廉.要是主机性能不好,那么几百美元的Oculus眼镜就是一个鸡肋.GearVR的体验效果非常出色,但是同样价格很贵,只有那些狂热粉和前期开发者才会购买.希望以后这种高端VR设备价格降低,这样才能推向大众市场.     同时,除了高端设备,还有谷歌的纸盒VR眼镜,它非常简陋.廉价,它能简单的将你的智能手机变成VR设备.2014年谷歌推出了这款纸盒眼镜,可以…
高端移动虚拟现实设备---三星GearVR     Oculus Rift也许是虚拟现实头显的典范,但是它还是存在许多问题.首先,它需要基于一个具有强大图形计算能力的计算机,而使用一般的笔记本.苹果Air.旧款台式机就不会有很好的效果(画面的帧率上不去,而且还容易眩晕).第二,Rift需要用数据线连接到电脑上,如果你使用DK2的位置追踪器,你还必须得坐在追踪器前方,这点很不爽.最后,就是它非常不便捷,你可以在做测试的时候搬着你的大电脑和Rift头显,但是你不可能将它带到其它地方去(比如星巴克).…
The DK2     于2014年春,Oculus发布了第二代开发版头显设备,代号为DK2.与DK1相比,Oculus Rift DK2的外观有很大改进,并且轻了许多,体积仍然比较大,可以罩住大部分脸部.同样有一条数据线连接在头显上,用来连接电脑的HDMI和USB接口.     DK2的分辨率比上一代设备提高了不少,像素达到了1920*1080(每只眼睛有960*1080).除了分辨率的提升,DK2另一个大的变化是支持了头显位置追踪技术,这样使用者不仅可以环顾四周,还可以通过头显在虚拟场景中前…
第二章 VR硬件介绍     本章主要介绍当前比较流行的消费版VR设备,包括VR头显以及应用运行的PC和手机平台.     即使是在这工业高速发展的时代,一些大厂(比如Facebook的Oculus Rift)已经建立的领导地位,然而,还是会有许多其他头显设备可以选择.一些头显应用需要在PC上运行,一些则需要在手机上运行,还有一些需要在游戏主机上运行.头显市场还不明朗,许多新的头显如雨后春笋般出现.     本章接下来的内容主要介绍三个头显设备,这三个设备是目前市场上的三个典范:桌面端的Ocul…
VR应用方向     面向消费者的虚拟现实才发展了几年,就出现了大量应用程序,虚拟现实抓住了人们对未来的渴望.开发者甚至想要把整个现实世界都做成虚拟现实,这些都是可以理解的.     但是,现在仍然没有一个"杀手级"的虚拟现实应用,有许多领域都有可能出现杀手级应用,包括:     游戏:一谈到虚拟现实,第一就会想到游戏.VR游戏具有深度沉浸.高产值.强粘性的潜力,这些都是开发者.主机制造商和外设制造商所期待的.目前大多数有技术的.独立的大厂都是以游戏作为VR应用的切入点.     社交…
运行平台     大多数的VR应用都可以在目前多数的PC和手机上运行,基本上一个不太旧的PC或者配置好点的笔记本电脑都可以正常运行Oculus Rift,如果手机的CPU和显卡不错的话也可以有很好的VR体验.对于大众来讲,现有的电脑或者手机再加上VR的眼睛就可以很方便的体验VR,但是对于那种想要体验极致效果的人来讲,估计这次圣诞节礼物清单上就得写上最好的PC.最强大的CPU和显卡了.     随着VR技术的成熟和普及,VR专业的电脑.手机和游戏主机也开始受到关注,这些专业的VR设备可以展现非常惊…
GearVR SDK代码剖析     接下来我们来了解一下GearVR开发包的底层代码,它底层的代码和之前在第三章中讲的桌面SDK代码非常类似,当然,也有许多不同的地方.     首先,我们看看如何构建Unity场景.在开发包中有一个具有camera Rig的预设体,这个预设体提供了Oculus的立体渲染技术和GearVR配套的头动追踪技术.     将Hierarchy中的OVRCameraRig物体展开,它下面包含有一个TrackingSpace的子物体,TrackingSpace下面包含四…
使用Unity开发GearVR应用     上一章我们介绍了如何运用Unity3D开发Oculus Rift应用,当然,这个便宜且强大的游戏引擎也可以用于GearVR的应用开发,这时我们需要用到Oculus Mobile SDK(移动端SDK). 配置Unity开发环境     之间我们以及下载好了Oculus Mobile SDK,并且配置好了安卓环境,同时,我们生成了一个签名文件,现在我们可以利用Oculus Mobile SDK中的Unity开发包进行开发了.我们先来建立一个空项目,启动U…
安装Oculus SDK     在使用类似Unity3D之类的引擎开发Oculus Rift应用之前,你必须先安装Oculus的SDK,在Oculus的官网上可以下载:http://developer.oculus.com     你可以免费注册一个账号,登录之后进行下面几步:     1.在网站菜单中选择"Downloads".     2.在下拉菜单中选择"Platform:PC".     3.在"SDK&RUNTIME"页面点击…
网格.多边形.顶点     绘制3D图形有许多方法,用的最多的是用网格绘制.一个网格由一个或多个多边形组成,这些多边形的顶点都是三维空间中的点,它们具有x.y.z三个坐标值.网格中通常采用三角形和四边形,这些基本面片可以围成网格,从而形成了模型.     图3-2中就是一个三维网格,黑色的线条就是四边形的边,这些四边形围出了一个人脸的形状.当然,这些黑色的线条在最终渲染的图形中是不可见的.网格的节点坐标仅仅表示了模型的外形,网格表面的颜色.光照用另外的属性表示,这些我们在后面会介绍.   图3-…
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web api来提供调用:好在Angular2提供了本地模拟的api,可以供我们编写方便:但是,真实使用的情况往往与本地模拟有一些差别,会存在跨域等一系列问题:这些不在本篇文章的讲解范围之内,如果在.net下遇到跨域问题可以直接私信我. Angular的http模块并不是Angular2的核心模块,你并不一…
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们的程序更好的工作. 假设你已经跟上了我们的进度. 我们来为我们的文章明细新增一个评论框:当我们在明细中点击评论的时候,在我们的明细页面显示评论,这里,我们就可以完全把明细页面看成一个独立的路由,可以建立自己的子路由页面,做一些评论,分享等操作. 那,首先在data目录下建立我们的评论实体Commen…
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇文章开始引入第三方的css库materializecss,引入方法直接在index.html中普通引用就可以了 众所周知,Angular出现的目的就是解决web编程的一些限制,让我们编写的网页能像App一样运作,我们现在称之为单页面应用(SPA),单页面应用程序有诸多好处,譬如页面响应快,良好的前后…
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得我们可以很优雅得做到这一点.这里简单描述下,依赖注入可以使我们在编写代码的时候不用使用new 去生成一个类,这样就达到了解耦的目的,更多关于依赖注入的知识我觉得不应该在这里讲解 和其他方式类似,Angular2使用的是装饰器@Injectable()来描述以一个类是否可注入,我们本篇文章的目的,就是…
ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友提议说写一个示例程序来同步讲解,那样更加容易学习.所以就写选择了写一个Blog程序来作为示例程序.(原来是居于ASP.NET MVC Preview5 的,现在基本修改为ASP.NET MVC Beta的了) 本系列文章可能会是几位朋友来共同完成的.本示例Blog系统同步更新的测试站点:http:/…
数据挖掘入门系列教程(二)之分类问题OneR算法 数据挖掘入门系列博客:https://www.cnblogs.com/xiaohuiduan/category/1661541.html 项目地址:GitHub 在上一篇博客中,我们通过分析亲和性来寻找数据集中数据与数据之间的相关关系.这篇博客我们会讨论简单的分类问题. 分类简介 分类问题,顾名思义我么就是去关注类别(也就是目标)这个变量.分类应用的目的是根据已知类别的数据集得到一个分类模型,然后通过这个分类模型去对类别未知的数据进行分类.这里有…
数据挖掘入门系列教程(三)之scikit-learn框架基本使用(以K近邻算法为例) 简介 scikit-learn 估计器 加载数据集 进行fit训练 设置参数 预处理 流水线 结尾 数据挖掘入门系列教程(三)之scikit-learn框架基本使用(以K近邻算法为例) 数据挖掘入门系列博客:https://www.cnblogs.com/xiaohuiduan/category/1661541.html 项目地址:GitHub 在上一篇博客中,我们使用了简单的OneR算法对Iris进行分类,在…
目录 数据挖掘入门系列教程(四点五)之Apriori算法 频繁(项集)数据的评判标准 Apriori 算法流程 结尾 数据挖掘入门系列教程(四点五)之Apriori算法 Apriori(先验)算法关联规则学习的经典算法之一,用来寻找出数据集中频繁出现的数据集合.如果看过以前的博客,是不是想到了这个跟数据挖掘入门系列教程(一)之亲和性分析这篇博客很相似?Yes,的确很相似,只不过在这篇博客中,我们会更加深入的分析如何寻找可靠有效的亲和性.并在下一篇博客中使用Apriori算法去分析电影中的亲和性.…