新書推薦:

《
《营造法原》解读
》
售價:HK$
184.8

《
舌诊图谱:观舌知健康 全新正版彩图全解舌诊辩证图谱图解中医舌诊基础理论手诊面诊罗大伦书舌诊诊断教程中医看舌苔调理书中医养生
》
售價:HK$
63.8

《
清代生活与政治文化
》
售價:HK$
96.8

《
善战:孙子兵法中的高维博弈 墨子连山 著(只要存在竞争与较量,就有“论战胜负”的思维博弈。)
》
售價:HK$
85.8

《
傅佩荣讲易经
》
售價:HK$
217.8

《
历史的镜子
》
售價:HK$
61.6

《
我们还是香格里拉的囚徒吗:藏学、国学与语文学(二)
》
售價:HK$
107.8

《
人格类型:我们何以不同(荣格人格类型理论——人格类型是一种人们了解自己、了解人际困扰的方法)
》
售價:HK$
64.9
|
編輯推薦: |
本书结合作者在VR开发领域的实际经验,从项目环境设置到VR互动的全过程,系统地讲解了如何构建一个完整的VR项目。通过实际案例的引导,读者将掌握VR开发的基本理论和技术,快速进入实战状态,打下坚实的开发基础。
|
內容簡介: |
本书将带领读者学习如何使用Unity进行虚拟现实开发。从基础知识到实践应用,读者将逐步掌握如何创建引人入胜的VR体验,为自由开发VR应用打下坚实基础。
來源:香港大書城megBookStore,http://www.megbook.com.hk 本书分为两部分共11章。第一部分(第1章和第2章)包含基础知识和环境准备,帮助读者搭建VR开发的环境。第二部分(第3章和第11章)进入实战内容,系统讲解Unity VR开发中的关键技术,包括主体设置、控制接收、主体运动及震动反馈的实现。在每个实战步骤中都会配有详细的知识讲解和配套操作演示视频,帮助读者理论结合实践,循序渐进掌握每个VR细节的实现。
本书适合初学者和有一定编程经验的开发者,并可作为高等院校和培训机构相关专业的教学参考书。通过实际项目经验,帮助读者深入了解VR开发的基本概念与技术。不仅提供完整的学习路径,还让读者快速上手VR开发,踏上挑战与机遇并存的虚拟现实之旅。
|
關於作者: |
徐暘泱,资深软件工程师和企业技术管理者,热衷于终身学习,毕业于北京化工大学。拥有超过15年的金融科技领域开发经验,对VR和相关技术的研究与开发也拥有浓厚的兴趣和长期的实践积累。自Oculus Quest第1代发布以来,便开始深入研究虚拟现实技术,并通过制作上百个VR开发教学视频,解决平台观众的技术问题,积累了大量宝贵的一线教学经验。此外,作者自主研发了平面图批量转360°全景图效率工具,并在Steam平台发布,进一步展示了在VR工具开发方面的实践能力。现阶段,作者依然活跃于VR领域,持续制作具有创意的VR游戏Demo,致力于推动VR技术的普及与发展。
|
目錄:
|
第1章VR游戏开发引擎的选择
1.1主流VR游戏开发引擎简介
1.1.1Unity
1.1.2Unreal Engine
1.1.3CryEngine
1.1.4Cocos Creator
1.2主流VR游戏应用市场简介
1.2.1Oculus Quest
1.2.2Oculus Rift
1.2.3Steam
1.2.4PICO
1.2.5SIDEQUEST
1.3为何选择Unity作为VR开发引擎
1.3.1Unity更适合VR开发入门学习
1.3.2不可忽视的其他VR开发引擎
第2章VR项目环境准备
2.1硬件准备
2.1.1关于计算机
2.1.2关于VR头盔产品
2.2下载Unity
2.2.1安装Unity Hub
2.2.2安装合适版本的Unity编辑器
2.2.3获取Unity编辑器的使用许可证
2.2.4关于Unity编辑器的版本号
2.2.5Unity项目模板
2.2.6新建Unity项目
2.3认识Unity编辑器
2.3.1窗口内常用面板介绍
2.3.2窗口布局
2.4VR基本场景构建
2.4.1新建场景
2.4.2在默认场景中创建地面对象
2.5VR项目设置
2.5.1连接计算机
2.5.2追踪头盔
2.5.3安装Unity XR开发工具包
第3章基本VR场景设置
3.1XR Rig的引入和设置
3.1.1新建XR Rig对象
3.1.2XR Origin对象的属性
3.1.3测试和总结
3.2控制器对象的引入和设置
3.2.1构建控制器对象
3.2.2引入输入映射文件
3.2.3测试和总结
3.3手的基本呈现
3.3.1导入手部模型
3.3.2Material和Shader
3.3.3手部模型的动画组件
3.3.4更换手部模型皮肤
3.3.5测试和总结
第4章输入设置
4.1捕捉控制器输入
4.1.1第1个自定义脚本
4.1.2获得控制器按键输入
4.1.3Debug()方法
4.1.4Oculus控制器按键
4.1.5测试和总结
4.2关联控制器输入与手部动画
4.2.1实现左手的捏合动作
4.2.2实现左手的握拳动作
4.2.3实现右手的捏合和握拳动作
4.2.4总结
第5章主体运动
5.1连续移动
5.1.1连续移动与传送移动的比较
5.1.2配置连续移动
5.1.3避免主体坠落
5.1.4测试和总结
5.2转向运动
5.2.1VR游戏中常见的转向方式
5.2.2配置平滑转向和分段转向
5.2.3测试和总结
5.3使Character Controller跟随XR Rig移动
5.3.1认识角色控制器
5.3.2使Character Controller跟随主体移动
5.3.3测试和总结
5.4传送移动时指示射线的呈现
5.4.1认识指示射线
5.4.2配置指示射线对象
5.4.3测试和总结
5.5实现指定区域内的传送移动
5.5.1配置Teleportation Provider组件
5.5.2两种传送移动
5.5.3配置传送区域
5.5.4消除按键冲突
5.5.5测试和总结
5.6实现指定目标锚点的传送移动
5.6.1创建锚点
5.6.2创建透明材质
5.6.3完善锚点组件配置
5.6.4指定每个锚点的主体移动后朝向
5.6.5测试和总结
5.7自定义Ray的外观
5.7.1设置射线的线性
5.7.2自定义射线落点的样式
5.7.3测试和总结
5.8使传送指示射线只在传送时出现
5.8.1控制传送指示射线的显隐
5.8.2配置自定义脚本组件ActivateTeleportationRay
5.8.3测试和总结
第6章物体互动
6.1基本互动设定
6.1.1实现物体互动的两类组件
6.1.2配置Interactor组件
6.1.3配置可交互对象
6.1.4测试和总结
6.2抓取物体
6.2.1配置可抓取对象
6.2.2Unity常用快捷键
6.2.3GrabInteractable组件属性设置
6.2.4测试和总结
6.3自定义物品抓取位置
6.3.1导入手枪模型资源
6.3.2使手枪模型可交互
6.3.3设定合适的手枪抓握位置
6.3.4测试和总结
6.4抓取手枪时实现发射子弹
6.4.1编写发射子弹的功能脚本
6.4.2创建子弹预制件
6.4.3指定子弹的出现位置
6.4.4关联事件和脚本
6.4.5测试和总结
6.5解决发射子弹与传送移动的按键冲突
6.5.1解决按键冲突的方法
6.5.2细化传送移动指示射线的出现条件
6.5.3测试和总结
6.6如何避免交互器(Interactor)与互动对象的碰撞
6.6.1解决非预期碰撞的方法
6.6.2配置Layer
6.6.3测试和总结
6.7修正左手握枪位置
6.7.1创建继承XR Grab Interactable所有功能的自定义脚本
6.7.2配置Tag
6.7.3追加判断左右手逻辑
6.7.4快速创建手枪的左手抓握点
6.7.5解决首次握枪错位的问题
6.7.6测试和总结
6.8实现动态抓取物体
6.8.1快速实现动态抓握
6.8.2自定义脚本实现动态抓取
6.8.3测试和总结
6.9远距离抓取对象
6.9.1创建Ray Interactor对象
6.9.2配置左右手Ray Interactor的Tag
6.9.3测试和总结
6.10射线的基本美化
6.10.1优化指示射线的显隐
6.10.2优化指示射线的粗细和有效距离
6.10.3测试和总结
6.11解决动态互动与远程抓取的冲突问题
6.11.1细分动态互动与远程抓取的作用场景
6.11.2测试和总结
6.12解决不同Interactor交互时的干涉问题
6.12.1认识交互层属性
6.12.2配置交互层
6.12.3测试和总结
6.13成功抓取可互动对象时不再呈现指示射线
6.13.1新建自定义脚本ActivateGrabRay
6.13.2配置脚本ActivateGrabRay组件的属性
6.13.3测试和总结
第7章UI互动
7.1设置Canvas
7.1.1认识Canvas
7.1.2使Canvas进入VR空间
7.1.3测试和总结
7.2初步实现与UI元素的互动
7.2.1让Canvas具备VR空间内的互动能力
7.2.2修改Event System对象
7.2.3测试和总结
7.3如何消除传送移动与UI互动同时发生的冲突问题
7.3.1修改Activate Teleportation Ray脚本
7.3.2关联公共变量
7.3.3测试和总结
7.4如何阻止传送移动的Ray Interactor与UI元素互动
7.5通过下拉列表实现切换转向模式
7.5.1设置下拉列表
7.5.2编写控制转向模式的自定义脚本
7.5.3测试和总结
7.6通过控制器按钮呼出菜单
7.6.1创建菜单
7.6.2编写呼出菜单的功能脚本
7.6.3测试和总结
7.7优化Menu
7.7.1默认隐藏菜单
7.7.2根据玩家位置计算菜单出现位置
7.7.3测试和总结
7.8动态调整Menu的展现朝向
7.8.1追加调整菜单朝向的逻辑
7.8.2测试和总结
第8章震动反馈
8.1简单设置震动反馈
8.1.1认识震动反馈
8.1.2快速实现简单的震动反馈
8.1.3测试和总结
8.2精细控制震动反馈
8.2.1取消默认的震动反馈设置
8.2.2编写自定义震动反馈脚本
8.2.3测试和总结
8.3震动反馈控制脚本泛用化改造
8.3.1功能通用化的改造思路
8.3.2通用化改造震动反馈脚本
8.3.3测试和总结
第9章自定义手势动画
9.1冻结手势动画
9.1.1创建用于存储手势的脚本
9.1.2关联所有手指关节对象
9.1.3手动调整握枪手势
9.1.4创建冻结手势动画的脚本
9.1.5测试和总结
9.2自定义手部姿势
9.2.1指定动画冻结时的手势
9.2.2测试和总结
9.3解决缩放导致的手部模型位置偏移问题
9.3.1改变Hierarchy结构
9.3.2根据缩放倍数修改GrabHandPose脚本
9.3.3测试和总结
9.4放开物体后如何还原手部姿势
9.4.1在GrabHandPose脚本中补充松手后的逻辑
9.4.2测试和总结
9.5手势的自然过渡
9.5.1补充插值法逻辑
9.5.2认识Lerp函数
9.5.3使插值法函数生效
9.5.4测试和总结
9.6将动画过渡逻辑应用到左手
9.6.1配置左手模型对象
9.6.2在GrabHandPose脚本中补充左手模型对象
9.6.3测试和总结
9.7让左手自动获得合适的位置和方向
9.7.1“单一真相”原则
9.7.2创建自定义Unity编辑器菜单
9.7.3认识增量开发
9.7.4测试和总结
第10章晕动优化
10.1隧道效应
10.1.1隧道效应减缓晕动的原理
10.1.2将隧道效应应用到VR视野
10.1.3设置隧道效应的效果和作用场景
10.1.4测试和总结
10.2自由扩展隧道效应的应用场景
10.2.1设置新场景下的隧道效应
10.2.2测试和总结
10.3传送移动中应用隧道效应
10.3.1设置传送移动场景下的隧道效应
10.3.2使传送移动场景下的隧道效应可见
10.3.3测试和总结
第11章项目打包与发布
11.1将项目打包成APK
11.1.1打包测试的适用场景
11.1.2打包APK的一般项目设置
11.2URP项目打包步骤
11.2.1URP管线的优点
11.2.2URP管线项目的打包设置
11.3主流VR应用市场平台
11.4在Oculus Quest上发布应用
11.5在PICO平台发布应用
|
內容試閱:
|
虚拟现实(Virtual Reality,VR)技术作为一种模拟现实场景的计算机生成技术,自诞生之初便引发了世人的无限遐想。它利用计算机图形技术、人工智能和传感器等多种技术手段,为用户提供身临其境的感官体验。从最初的构想,到如今在各个领域的广泛应用,VR技术经历了一个漫长且充满挑战的发展过程。
早在20世纪60年代,美国空军便开始尝试将简单的VR技术应用于飞行模拟,然而,受限于当时的硬件条件和高昂成本,VR技术的推广步伐缓慢。进入20世纪80年代,随着计算机图形学和图形处理技术的飞速发展,VR技术终于迎来了新的生机。到了20世纪90年代,VR技术开始进入娱乐和游戏领域,但市场尚不成熟,发展仍显艰难。
进入21世纪,随着计算机处理能力的不断提高和硬件成本的降低,VR技术逐渐进入普及期。特别是在娱乐领域,VR技术为游戏、电影、演唱会等文化活动带来了革命性的变革。如今,VR技术已不局限于娱乐领域,还被广泛应用于教育、医疗、工业设计、旅游等行业,展现出巨大的行业潜力。
尤其在娱乐领域,VR技术为用户带来了前所未有的沉浸式体验。VR游戏让玩家仿佛置身于一个全新的虚拟世界,与其他玩家互动,享受更为真实、刺激的游戏体验。同时,VR电影、虚拟演唱会等也为观众提供了身临其境的视听盛宴,打破了传统娱乐方式的界限。
在笔者长达十年的VR开发学习和研究历程中不断探索这一领域的奥秘,亲身经历了VR技术的飞速发展与变革。在如今众多各有侧重的VR开发框架和平台中,本书选择Unity作为主要开发平台,这是基于其对VR开发的高度支持及其强大的跨平台特性做出的判断。
Unity作为一个功能强大、易于上手的开发引擎,为VR开发者提供了丰富的工具和资源。它不仅支持主流的VR设备,例如Oculus Rift、HTC Vive和Gear VR等,还具备高度的可扩展性和灵活性。这使开发者在开发过程中能够更加专注于内容的创造和交互体验的优化,而非烦琐的技术细节。
同时本书尽可能缩短不涉及动手的理论部分,以实战中穿插相关知识点为主的形式向读者介绍详细的开发过程。VR开发应以实战为主,这是因为VR技术的核心在于为用户提供沉浸式体验,而这往往需要通过实际操作和反复试验来实现。实战开发能够让我们更直观地了解用户需求,发现并解决技术难题,进而提升项目的质量和用户体验。
此外,虽然篇幅有限,本书只能选择最适合的引擎介绍VR开发的过程,但是本书涉及的VR开发中的思想和方法具有广泛的适用性。无论是针对哪种平台或设备,优秀的开发思想和方法都是相通的,例如注重用户体验、优化性能、合理设计交互方式等原则,在所有的VR项目中都是至关重要的。这些方法不仅有助于提高开发效率,还能确保项目在不同平台上的表现一致。通过编写本书,笔者总结了大量开发场景的实际经验,也查阅了大量的官方和有参考价值的开源项目文档,这使笔者也在多个维度上有了更深层的提升,收获良多。
本书主要内容
第1章VR游戏开发引擎的选择,主要探讨主流的VR游戏开发引擎,分析各自的优缺点,并提供选择Unity作为VR开发引擎的理由,帮助读者理解为何Unity是当前VR游戏开发的首选平台。
第2章VR项目环境准备,主要介绍如何搭建VR开发环境,包括软件安装、硬件配置及Unity项目的初始化,为后续的开发工作奠定坚实的基础。
第3章基本VR场景设置,主要介绍如何在Unity中创建和设置基本的VR场景,包括XR Rig,以及手柄控制器对象的导入和如何呈现手部模型。
第4章输入设置,主要讲解VR游戏中的输入机制,包括如何捕捉控制器的输入信号并将输入信号与手部动画参数关联以实现控制器控制手部动作。
第5章主体运动,主要介绍角色或玩家在VR环境中的移动方式,包括连续移动、传送移动、转向运动等,确保玩家能够自然地在虚拟空间中移动。
第6章物体互动,主要介绍如何在VR游戏中实现物体的直接抓取、远程抓取、互动射线的修饰等,增强游戏的真实感和互动性。
第7章UI互动,主要介绍VR游戏中的用户界面设计,包括菜单、按钮、滑块等元素的创建和交互,丰富用户体验。
第8章震动反馈,主要介绍如何在VR游戏中添加震动反馈,通过触觉增强玩家的沉浸感。
第9章自定义手势动画,主要介绍如何在Unity中创建和应用自定义的手势动画,丰富玩家的表达方式。
第10章晕动优化,主要针对VR游戏常见的晕动问题,介绍多种优化策略,以减少玩家的不适感,提升游戏体验。
第11章项目打包与发布,主要介绍如何对完成的VR游戏项目进行打包,以及发布到各大VR平台的流程,使游戏能够面向广大用户。
阅读建议
本书是一本基础入门、项目实战及原理剖析三位一体的技术教程。全书以构建一个基本VR项目作为实战主体,在循序渐进的项目实战操作过程中适时地介绍相应的知识点和原理,使读者能够方便地在实践的过程中体会并吸收VR开发知识,并逐步形成对VR开发流程框架的认识,是一种高度知行合一的学习方法。
操作介绍包括详细的项目开发步骤配合图片标示,为了让读者深入了解开发细节,每个代码片段都有详细的注释标注和对应的操作说明。本书的基础知识、项目实战及原理剖析部分均提供了完整可运行的代码示例,将涉及的项目源代码开源到线上,并配有相应的视频教程,这样可以帮助读者更好地自学全方位的技术体系。
建议没有Unity VR实际开发经验的读者从头开始按照顺序详细阅读每章节。章节划分按照由浅入深,由整体概述到细节解析的方式对VR开发的技术发展、环境构建,以及具体的各个主要功能的实现进行介绍,严格按照顺序阅读可以帮助读者不会出现知识断层。
有Unity VR开发经验的读者可以快速地浏览第1章,从第2章开始进入侧重功能实现的实战内容。
第2~4章会介绍从0~1的项目搭建过程,包括环境的搭建、基本VR场景的构建和控制器设置等。由于这部分内容是后续项目操作的基础,并且为了让读者深入理解一个Unity VR项目的各项设定,特意选择了自主构建控制器对象而非“傻瓜式”地直接引用现成对象,这样可以帮助读者深刻理解Unity VR项目构建中的基础部分。
第5~7章介绍如何在VR项目中实现运动和互动,包括XR Rig的传送移动、连续移动,与物体对象的各种形式的互动及UI互动。这一部分内容涉及的操作较多,内容丰富,需要根据操作指导循序渐进
地进行学习,体会每步操作背后的原理和逻辑。对于较为复杂的功能,本书采用增量开发的形式,从基础版本到针对每个问题点的优化,使读者能够在细微处扎实掌握相关效果的实现和优化思路,深化体验,强化吸收。
第8~10章介绍加强沉浸化体验的技术,包括增加VR互动时的震动反馈、自定义手势和针对晕动的优化。由于这部分内容是在互动等效果实现后的增强和优化,所以建议读者在彻底完成第7章之前的操作后再来阅读第8~10章的内容,在进行优化操作的过程中,在大脑中与未作优化时的状态做类比,这样可以快速抓住并理解这些优化技术所针对的问题和原理所在。
第11章为最终项目的打包和发布介绍。本章节涉及的设置项较多,并且这些打包和发布方法伴随平台插件的更新可能有所变化。在学习过程中一定要注意理论结合实际,理解这些设置项背后的意义,不拘泥于完全一致,一旦发现实际的选项与书本上存在偏差,就可以在理解的基础上找到新版的设置方式,或是查阅相应平台的官方资料,获得最新的打包方法。
资源下载提示
素材(源码)等资源: 扫描目录上方的二维码下载。
视频等资源: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。
致谢
感谢我的家人对我抽时间写作本书的理解。我的两个女儿,希望这次写书的经历能够激励你们耐心地追求自己的目标。感谢我的妻子王晓霞女士对我的支持,你照顾好了孩子们的生活,让我可以放心工作到深夜。非常感谢赵佳霓编辑的指导,得以让此书有机会面世,与读者见面。
人生有涯而学海无涯,VR技术发展迅速,内容庞杂,写本书也属于以有涯渡无涯了,书中难免存在不妥之处,请读者提出宝贵意见。
徐暘泱2025年4月
|
|