前言
前 言
我走得很慢,但是我从来不会后退。I am a slow walker, but I never walk backwards.——美国第16任总统 亚伯拉罕?林肯
这本书不应该仅仅是一本讲开发的技术书籍,也应该是一本励志的书,就像林肯的人生一样,从开始的结结巴巴到美国总统。在这样一个艰难的过程中,他走得很慢,大器晚成,成为美国历伟大的总统之一。可能有人会问为什么要这么开篇呢?技术书籍为什么会是励志书?因为VR技术注定是一项大器晚成的技术,虽然我们目前已经取得了非常漂亮的成就,但是离真正的虚拟现实还有很长的路要走。这条路必然是充满坎坷的,开发是一件苦差事,程序员要克服重重困难才能实现想要的功能。VR是什么?笔者期望虚拟现实可以像科幻片《钢铁侠》里面那样,不需要穿戴任何设备,或者仅仅穿戴十分轻薄的设备,拥有非常智能的可视化界面,通过手在空中划拉就可以很自然地操作,并且拥有智能的AI语音系统,使整个系统操作更加自然流畅。要实现这样的虚拟现实,至少要等到2020年,这是一件非常励志的事情!那么,总有人要写这本书,因为很多人需要它。胡某不才,组织了HTC Vive开发者联盟,随着时间的推移,VR越来越火热,VR开发的从业者和学习者也越来越多。由于之前在论坛上发过的几篇HTC Vive开发帖子广受关注,因此很多人慕名来向我请教一些技术问题,我也尽力帮助他们解决。但胡某分身乏术,有时也爱莫能助,毕竟我也需要工作。所幸清华大学出版社的卞诚君编辑找到了胡某,诚邀我来写一部VR游戏开发的书籍,以帮助广大的开发者或学生掌握HTC Vive的开发技能,从而促进整个VR行业发展。我愿意做这件事情,所以毫不犹豫地应承了下来。尽管胡某开发技术并非超群,奈何对HTC Vive情有独钟,以至于在其中投入了大量的精力。如果说能够对其发展带来一些帮助,胡某也定当略尽绵力,在所不辞。我将自己所得倾囊相授于此书,若有疏漏之处希望大家指正,我不希望因为自己的过失误人子弟。这里简单介绍下我的编程生涯。我以前是一个PHP工程师,在IPG旗下的跨国公司Loweprofero公司上班,曾经热衷于网站开发,但因为热爱《黑客帝国》《盗梦空间》《刀剑神域》等科幻作品,所以常常关注一些前沿科技的发展,特别在意的是VR/AR/MR方面的技术革新,一有时间就会对这方面的技术进行研究。曾利用业余时间自学了C、C 和C#,当然并未到精通的地步,那时尽力搜集一切编程相关的学习资料,囫囵吞枣一般吃进去,并不成体系。后来又接触到游戏引擎Unity 3D,更加有动力去学习,因为感觉梦想似乎并不是遥不可及。直到后来,HTC Vive面市,我在一次论坛举办的开发者大会中首次体验到了它。在这之前,我已经体验过市场上各种各样的VR设备,但只有HTC Vive体验,和我的梦想为接近。那一天,我夜不能寐,心中所思所想尽是这一套设备。后来我历经艰难困苦,终于跨行转为VR开发,由网友龙炳全的引见到了现在这家公司精诚机构从业。上司黄菲大哥也是一个对VR充满热情的人,他为我的情怀所感动,并且大力支持我做HTC Vive上的研究。我所在的精诚机构专为房地产销售提供一站式的解决方案,从样板间到沙盘模型,从一体机、IPAD硬件到互动系统、沙盘灯光系统、VR看房系统等软件,满足房地产销售的一切需求。董事长胡治国先生十分看好VR的发展,积极投入到VR游戏开发和体验店实体的布局,致力于建立VR生态系统,打造全新的虚拟现实商业模式。仿佛不知岁月,我沉浸于VR技术的研究,遇到过各种各样的开发难题,也走了不少弯路,但这些困难并不能阻碍我,也必将不能阻碍大家。过去电脑只是个梦想,现在几乎人手一部智能手机,从某种意义上讲,智能手机是人类对于电脑想象的一个超越。它更小更轻、易于携带、更加智能,比艾伦?图灵(计算机之父)想象得要好太多,而且它和图灵所想一样,在某种程度上成了人类的伴侣。过去VR或者虚拟现实也只是个梦想,现在我们还没有完美地实现它,但它已经近在咫尺,你能真切地感受到,而且可以更完美。就好比图灵机和手机的跨越,未来的VR将会变得轻薄,成为隐形眼镜,就贴在视网膜上。它将会和AR混合成为MR,虚拟和现实合二为一,不分彼此。它甚至可以使用人体的生物电,作为能量供给;可以成为人类的第二个大脑;成为人类进化的催化物。总之,VR带给我们无限可能,未来成了无限可能。在此特别感谢公司精诚机构对我的支持,黄菲大哥在此之前就曾经建议我写一部书;同时还要感谢公司的同事们,尤其是引见我到精诚的龙炳全,没有他的话我也许无法从事所热爱的VR事业,也不会有这本书,所以要特别感谢他。特别感谢生我养我的父母,以及我的兄弟姐妹们对我的支持和鼓励,特别是姐姐,伟大的姐姐。还要感谢我的好朋友们,特别是潘寅冬,他总是像兄弟一样给予我帮助。后,感谢我的恩师们,特别要感谢陈群老师和荣春鸿老师,她们对我的教育之恩和超越老师的关怀我从未言表,一直默默铭记在心。原本这部书计划要写12个章节,但是写完前面6章以后发现已经超出了篇幅,所以不得不把后面讲虚幻4引擎的内容独立出来。当然,这里会提供虚幻4引擎的学习资料,UE4学习资料与视频可在百度云盘找到,地址为http://pan.baidu.com/s/1c2a8DnM。虽然本书沁入编者的所有努力,但是由于水平有限,难免有疏漏之处,欢迎大家批评指正,如果遇到问题或者有更好的建议,敬请与我联系,我将全力提供帮助。我的QQ是604746493,如果不在线也可以给我发邮件,我会定时查阅QQ邮箱。参与本书编写的除了封面署名人员以外,还有伍丰、叶静宇、凌东鑫、向春宇、肖攀、钟少华等人,在此要特别感谢他们对本书的支持。路漫漫其修远兮,吾将上下而求索。
胡良云2016年12月28日
导语摘要
本书是目前HTC Vive在VR开发方面解析*为全面的书,也是一本实战教程书籍。如果你不会编程,不会游戏引擎,没关系,本书在附录中为你准备了教学资料和视频分享目录。读者完全可以从零开始,只要坚持学习,就可以开发出VR游戏应用。本书以HTC Vive VR游戏开发实例教学为主线,循序渐进地介绍针对HTC Vive设备在VR游戏开发方面的整套流程。第1章从零开始引导读者了解什么是VR,以及HTC Vive设备简介,对程序员、美工和策划都有帮助。第2章介绍两个被广泛应用的游戏引擎,让读者对游戏开发工具有一个较全面的认识。第3章讲述HTC Vive开发*重要的插件SteamVR——开发VR游戏的左膀右臂。第4章是一个VR游戏实例,逐步实现一个简单的VR打僵尸游戏。第5章重点介绍SteamVR Unity Toolkit在各个功能上的实现,分别详细解析其中的37个案例,让读者学会实现VR游戏中所需要的各种各样的功能。第6章重新回到游戏开发中,将各种功能实践到游戏开发中去,实现从理论到实践的过渡。*后,附录中给出参考文献和学习资料分享。本书还提供了所有实例的源代码与素材文件,供读者上机练习使用,读者可从网上下载本书资源文件。本书适用于广大游戏开发人员、游戏开发爱好者、软件培训机构以及计算机专业的学生等。
作者简介
胡良云,VR公司开发主管,负责HTC Vive开发,也是游戏论坛的专栏作家和译员。工作之余会发布一些专栏文章或者翻译一些国外的教程技术文章,组织成立了HTC Vive开发者联盟,意在促进国内VR行业的技术发展。
目录
目 录
第1章 绪论 1
1.1 什么是VR 2
1.2
HTC Vive简介 5
1.3
HTC Vive 诞生记 6
1.3.1
与HTC合作之前的Valve 7
1.3.2
与Valve合作之前的HTC 9
1.3.3
The Oculus Rift 10
1.3.4
HTC和Valve终走到了一起 10
1.3.5
研发手柄控制器 11
1.3.6
Vive背后的开发者 12
1.3.7
Vive惊艳亮相 13
1.3.8
Vive发售后的复盘 14
第2章 游戏引擎 16
2.1
Unity 3D引擎简介 17
2.2 虚幻4引擎简介 18
2.3 选择适合的引擎 19
第3章 SteamVR 21
3.1
SteamVR简介 22
3.2
SteamVR Plugin解析 25
3.2.1
SteamVR_Render渲染脚本 29
3.2.2
[CameraRig]玩家预设 39
3.2.3
SteamVR_Tracked Object 51
3.2.4
Main Camera(eye) 53
3.3 手柄控制器 59
3.4
SteamVR脚本功能简介 66
第4章 VR打僵尸游戏 68
4.1
Unity 3D游戏资源准备 69
4.2 场景优化和配置枪械 72
4.3 基本武器系统 77
4.4 僵尸 83
4.5 小结 96
第5章 SteamVR Unity Toolkit 97
5.1
Toolkit简介 98
5.1.1
欢迎来到VRTK 99
5.1.2
VRTK里面有什么 99
5.1.3
VRTK快速开始 100
5.2
Examples案例001~010 100
5.2.1
案例解析001_CameraRig_VR_PlayArea 100
5.2.2
案例解析002_Controller_Events 101
5.2.3
案例解析003_Controller_SimplePointer 105
5.2.4
案例解析004_CameraRig_BasicTeleport 124
5.2.5
案例解析005_Controller_BasicObjectGrabbing 132
5.2.6
案例解析006_Controller_UsingADoor 142
5.2.7
案例解析007_CameraRig_HeightAdjustTeleport 152
5.2.8
案例解析008_Controller_UsingAGrabbedObject 160
5.2.9
案例解析009_Controller_BezierPointer 162
5.2.10
案例解析010_CameraRig_TerrainTeleporting 163
5.3 Examples案例011~020 164
5.3.1
案例解析011_Camera_HeadSetCollisionFading 164
5.3.2
案例解析012_Controller_PointerWithAreaCollision 168
5.3.3
案例解析013_UsingAndGrabbingMultipleObjects 168
5.3.4
案例解析014_Controller_SnappingObjectsOnGrab 169
5.3.5
案例解析015_Controller_TouchpadAxisControl 170
5.3.6
案例解析016_Controller_HapticRumble 175
5.3.7
案例解析017_CameraRig_TouchpadWalking 177
5.3.8
案例解析018_CameraRig_FramesPerSecondCounter 183
5.3.9
案例解析019_Controller_InteractingWithPointer 185
5.3.10
案例解析020_CameraRig_MeshTeleporting 186
5.4
Examples案例021~030 186
5.4.1
案例解析021_Controller_GrabbingObjectsWithJoints 186
5.4.2
案例解析022_Controller_CustomBezierPointer 187
5.4.3
案例解析023_Controller_ChildOfControllerOnGrab 188
5.4.4
案例解析024_CameraRig_ExcludeTeleportLocation 188
5.4.5
案例解析025_Controls_Overview 189
5.4.6
案例解析026_Controller_ForceHoldObject 197
5.4.7
案例解析027_CameraRig_TeleportByModelVillage 199
5.4.8
案例解析028_CameraRig_RoomExtender 200
5.4.9
案例解析029_Controller_Tooltip 204
5.4.10
案例解析030_Controls_RadialTouchpadMenu 211
5.5
Examples案例031~037 214
5.5.1
案例解析031_HeadsetGazePointer 214
5.5.2
案例解析032_Controller_CustomControllerModel 215
5.5.3
案例解析033_CameraRig_TeleportInNavMesh 217
5.5.4
案例解析034_Controls_InteractingWithUnityUI 218
5.5.5
案例解析035_Controller_OpacityAndHighlighting 224
5.5.6
案例解析036_Controller_CustomCompoundPointer 228
5.5.7
案例解析037_CameraRig_ClimbingFalling 228
5.6 总结 229
第6章 VR游戏开发实战 230
6.1
Lab渲染器 231
6.1.1
简介 231
6.1.2
快速开始指引 232
6.1.3
元素 233
6.1.4
摄像机组件 234
6.1.5
实时光照组件 236
6.1.6
VR标准着色器 237
6.1.7
工具和帮助元素 239
6.1.8
命令行参数 240
6.1.9
快捷键 241
6.2 完善VR僵尸游戏 241
6.2.1
场景优化 241
6.2.2
编辑场景和可交互对象 243
6.2.3
优化怪物 250
6.2.4
玩家UI界面 252
6.3
VR手势识别 258
6.3.1
插件简介 258
6.3.2
新手教学 259
6.3.3
使用案例 263
6.4
VR网络游戏 265
6.4.1
SteamVR Network简介 265
6.4.2
案例教学 266
6.4.3
VR网络的准则 267
6.4.4
如何使用包含的预设 268
6.4.5
如何使用包含的脚本 268
6.4.6
如何扩展案例 269
6.5 语音识别与VR 270
6.5.1
简介 270
6.5.2
语音识别和语义分析是如何工作的 270
6.5.3
市面上的语音转换文本工具 272
6.5.4
困惑和未来的工作 274
6.6
VR中国象棋 275
6.6.1
游戏简介 275
6.6.2
游戏架构 275
6.6.3
游戏生态 278
6.6.4
游戏未来 278
6.6.5
游戏现状 279
6.7
HTC Vive开发者联盟 279
附录 284
附录1 参考文献 285
附录2 SIKI老师的教程与资源分享
285
附录3 Unity游戏开发视频教程目录
286
内容摘要
本书是目前HTC Vive在VR开发方面解析*为全面的书,也是一本实战教程书籍。如果你不会编程,不会游戏引擎,没关系,本书在附录中为你准备了教学资料和视频分享目录。读者完全可以从零开始,只要坚持学习,就可以开发出VR游戏应用。
本书以HTC Vive VR游戏开发实例教学为主线,循序渐进地介绍针对HTC Vive设备在VR游戏开发方面的整套流程。第1章从零开始引导读者了解什么是VR,以及HTC Vive设备简介,对程序员、美工和策划都有帮助。第2章介绍两个被广泛应用的游戏引擎,让读者对游戏开发工具有一个较全面的认识。第3章讲述HTC Vive开发*重要的插件SteamVR——开发VR游戏的左膀右臂。第4章是一个VR游戏实例,逐步实现一个简单的VR打僵尸游戏。第5章重点介绍SteamVR Unity Toolkit在各个功能上的实现,分别详细解析其中的37个案例,让读者学会实现VR游戏中所需要的各种各样的功能。第6章重新回到游戏开发中,将各种功能实践到游戏开发中去,实现从理论到实践的过渡。*后,附录中给出参考文献和学习资料分享。
本书还提供了所有实例的源代码与素材文件,供读者上机练习使用,读者可从网上下载本书资源文件。
本书适用于广大游戏开发人员、游戏开发爱好者、软件培训机构以及计算机专业的学生等。
主编推荐
胡良云,VR公司开发主管,负责HTC Vive开发,也是游戏论坛的专栏作家和译员。工作之余会发布一些专栏文章或者翻译一些国外的教程技术文章,组织成立了HTC Vive开发者联盟,意在促进国内VR行业的技术发展。
精彩内容
第1章 绪 论万事开头难。
本章主要介绍VR是什么以及HTC Vive简介。只有从理论上认识VR,才能更快地应用到实践中,所以本章从理论入手,深入浅出地讲解什么是VR、其科学原理又是什么。同时也简要地介绍VR的兄弟AR和MR,通过对比让大家明白VR的重要性。HTC Vive是本书的核心,知道了VR是什么,就不难理解Vive了,它在本质上是我们实现VR的硬件,而本书的目的就是开发与之匹配的软件和内容。
1.1 什么是VR现实即幻象,只是非常稳定罢了。——阿尔伯特?爱因斯坦
VR是英文Virtual Reality的首字母缩写,直译为中文就是虚拟现实,含义是虚拟和现实前所未有的接近,几乎难以分辨
以下为对购买帮助不大的评价