首页>参考读物>计算机科学与技术>数码/设计

增强现实:必知必会的工具与方法
作者 : (美)Tony Mullen 著
译者 : 徐学磊 译
丛书名 : 华章程序员书库
出版日期 : 2013-08-29
ISBN : 978-7-111-43298-2
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 224
开本 : 16
原书名 : Prototyping Augmented Reality
原出版社: John Wiley & Sons(USA)
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

走进增强现实开发的艺术和技术之旅!

增强现实(Augmented Reality,简称AR,即在实时视频中融入虚拟内容)已经从一个新兴技术发展为今天最热门的交互设计趋势之一。利用Processing编程语言、Blender动画制作软件、Arduino、Flash等各种开源、专用的工具,即便只有很少编程经验或者没有编程经验的艺术家或者设计师也可以快速学会怎么创建增强现实应用。
本书内容丰富,主题全面,囊括了智能软件技术、可用代码、硬件指示器、建模和原型设计的基础知识,还讲解了智能手机、Mac、PC和网络平台上的增强现实应用开发。本着“既是编程也是艺术”的原则,计算机图形和编程专家Tony Mullen无缝地结合增强现实的“技术”和“艺术”,来教你创建有趣的、令人印象深刻的增强现实应用。

学习本书,你可以做到:
踏入增强现实的世界,即使你只有有限的编程经验;
了解你所需的增强现实术语和工具;
探索Processing 和3D编程的本质;
学习Blender基础知识并设计低多边形动画角色;
为一个增强现实库创建对象并组建和导出3D模型;
增强现实应用与物理环境、虚拟环境和流媒体环境的交互;
使用ActionScript来创建基于浏览器的增强现实应用;
为安卓和其他智能手机平台创建增强现实应用。

图书前言

增强现实(Augmented Reality,AR)这个术语描述的是向实时媒体中融入虚拟内容和数据所需的各种技术。增强现实的理念就是在实时媒体中尽可能无缝地融入并不真实存在的东西,以此来增强显示用户周围的世界。这个增强可以是任意形式的,可以在实时场景上覆盖一条文本数据,也可以把完整的、交互性的3D图形场景融入真实世界。
  增强现实的实现主要依靠两种硬件。一种是能够采集真实世界的信息的硬件,采集的信息包括影像数据、位置数据、方向数据,以及可能的其他形式的数据。另一种是在重现实时媒体时能够融入虚拟内容的硬件,并且要能够以一种有意义的、有用的方式来融入虚拟内容。
  随着近年来智能手机的普及,现在几乎每个人的手机上都有令人激动的增强现实功能。这导致人们对于移动平台和一般平台上的增强现实开发的兴趣呈爆炸式增长。随着笔记本电脑和台式机上的网络摄像头的广泛使用,用于营销和创造性用途的基于浏览器的增强现实开始走向繁荣。低成本摄像头和显示器也使人们能够低廉、便捷地建立起实时的增强现实装置,就像乐高(LEGO)公司在他们的一次精彩的基于增强现实的市场营销活动中所做的一样。在这次活动中,增强现实装置安置在玩具店中,当客户把玩具箱子对准摄像头时就能够在显示器中看到完全融入实时摄像头视频中的完整3D模型。
  增强现实有多个重要的种类,并且每个种类自身又是一个宽泛的主题。当前关于手机增强现实的书籍主要关注利用移动设备的位置(GPS)和方向(加速计)数据来向真实场景添加注释或者融入内容的增强现实。这些应用知道你的智能手机上的摄像头观察的是什么,因为它们知道你的方位,以及智能手机正面对哪一个方向。基于这些数据,就可以把由集中式服务或者其他用户已上传的注释覆盖到你的摄像头场景上。
  另一个增强现实方式是使用由摄像头捕获的实际图像内容来确定摄像头观察的是什么,该技术被称为计算机视觉(computer vision)。计算机会处理每个视频帧的每个像素,评估在时间和空间上该像素与相邻的像素之间的关系,并识别图案。此外,当前计算机视觉技术还包括精确的面部识别算法、识别视频中的活动物体,以及识别熟悉的标记(marker)或者使用一个非常强大的算法识别出特定的视觉图案的能力(以一种健壮的方式)。
  基于计算机视觉的增强现实技术既可以用于移动设备,又可以用于非移动设备。它既能够用来增强基于位置和方向的增强现实方法,又能够用来创建不会以任何方式依赖某个特定位置的增强现实应用。计算机视觉算法能够用来识别包装材料、产品、衣服、艺术品,或者在其他环境中的很多图案。
  本书关注基于计算机视觉的增强现实的技术和工具。除在营销活动及其类似情况中的潜在用途之外,基于计算机视觉的增强现实是非常有趣的,并且在我看来还与魔术有点类似。这就是促使我开始研究这个主题并最终写下本书的原因。我想当前只是对于这个技术的创造性的探索之初,我热切地渴望看到人们对于这一技术进行深入探索。这也是本书更倾向于那些喜欢探索各种可能性的、有创造力的人的原因,这些人还没有在软件方面陷得太深。
  为了达到这些目的,我试图保持讨论的技术能够尽可能简单易懂。这就是为什么本书大部分内容是关于Processing编程环境的原因。Processing可能是用于创建视觉、交互程序的最容易理解的一个编程环境。Processing是开源跨平台的,是专门根据设计师和创意人士的需求设计开发的,即为那些没有必要成为一个高度熟练的程序员的人开发的。Processing有一条比较平缓的学习曲线,尽管简单但非常强大。除了学习Processing中的编程基础知识外,你将会学到怎样使用开源3D应用Blender来创建3D动画内容。本书的这一部分是完全可选的。如果你想继续学习其他章节而不想自己制作,那么可以下载本书提供的3D内容文件。
  为了使本书尽可能容易理解,我也会讲解基于标记的增强现实技术。标记是为增强现实系统提供容易识别的可打印图案参考点。由于需要使用真实世界中的标记,基于标记的增强现实技术有一些明确的限制。有一种无标记增强现实技术(markerless AR)可以实现一些匪夷所思的事情。无标记增强现实系统能够参考一个视频流中的其他可识别特征来创建增强现实环境。例如,一个无标记增强现实系统可能不需要明确的打印标记就能识别出人脸或者其他物体。
  现在的问题是,我所知道的可用的无标记增强现实技术对于非程序员来说并不容易理解。与此相反,我认为若一个基于标记的增强现实工具库的变体则会好很多。这种情况肯定会在将来得到改善。
写作目的
  本书的写作目的是全面介绍用于创建基于计算机视觉和标记的增强现实内容的一些最方便、可用的工具。在做这些时,一定量的编程是不可避免的,但是编程不是本书的主要目的。本书将教会你如何使用各种各样的工具,其中每种工具都有不同的功能和优势。虽然有重叠部分,但是每种工具都有一些不同的编程技巧。为了充分利用这些工具,你需要继续深入学习你所选择的编程环境。市面上有很多讲解Java或者ActionScript 3D编程的书籍供你参考。
  相反,本书将会给予你创建增强现实应用并在计算机(可能是Android移动设备)上运行的机会,并教会你关于创建增强现实作品的基础知识。基于增强现实技术,你就可以快速地创建一个交互性的增强现实应用。一些章节会较多地涉及需要实际操作的编程活动,而另一些章节可能更多的只是提供对技术的粗略一瞥。你不需要编程技巧就能看懂本书的内容,但是如果你想要深入学习其中的一些主题,那么就需要有一定的编程经验。
  基本上,本书的目的就是要激励你这样做。本书可以使你具有以各种设置创建增强现实应用的潜力。可能基于物理计算的增强现实应用的潜力让你印象深刻;可能你将深入学习Arduino和Processing环境;可能你会有创建一个基于Flash的增强现实游戏的伟大想法;可能你会一头扎进ActionScript的学习中;或者可能本书会激励你深入学习Android 3D开发。无论何种情况,本书的目的是帮你迈出第一步,而不是最后一步。
读者对象
  本书的主旨并不是关于怎么创建精良的、部署就绪的软件,而是以尽可能快速和简单的方式去试验和演示增强现实应用。出于这个原因,本书的主要目标读者是那些有创造力的,渴望探索增强现实的潜力的人,他们会创造带有融合了虚拟和现实场景的、有趣的、交互性的应用。本书会有意避免讲解需要特定编程经验的内容。即使你没有任何编程经验,也能看懂并做一些有趣的事情。
  这并不意味着本书对于专业的、经验丰富的开发者来说一点用处都没有。本书对于有经验的开发者的价值主要在于本书所介绍的有趣的技术和库。对于具有Java或者ActionScript编程经验的人来说,本书可以作为他们进入增强现实世界的跳板。你可能学不到很多你本来不知道的编程知识,但是你将会学到怎么把自己的增强现实创意变成现实。本书所涉及主题的广度使得即使你是一个拥有丰富经验的开发者,也能为你带来有趣的、富有灵感的新东西。
  虽然在本书的描述中,我试图避免对于编程经验的假设,但事实是编程是本书所涉及的一切知识的核心。你所拥有的任何编程经验,即使是不同的编程语言,也会非常有用。对于面向对象编程概念的理解将会非常有助于你对本书的理解,并且我确实认为理解本书的内容理所当然地需要一个基本的编程知识水平。如果你还不理解“for”循环的概念,那么你将会发现本书中的很多内容对你来说都是非常神秘的。
  对于在本书中讨论的一些技术来说,编程技巧是你继续深入并创建你自己的内容的前提。例如,如果你不了解Java,那么你根本无法创建自己的Android增强现实应用。本书的目的是循序渐进地介绍某个环境下的增强现实潜力,而不是深入地讲解编程技术。
  总之,本书面向的是那些对基于计算机视觉和标记的增强现实技术有兴趣,但又不知道从何学起的人。你能从本书中收获多少取决于你在本书上花费了多少精力。
本书主要内容
  以下是对本书主要内容的简单介绍。
  第1章 增强现实入门 概述了增强现实的概念并概括性地介绍了要在本书后续章节中详细讲解的库。该章还介绍了标记的创建,这个主题与后续所有章节都有关。
  第2章 Processing概述 对Processing编程环境做了一个由浅入深的、适合非程序员理解的介绍,并在2D图形示例中讲解了Processing编程的基础知识。
  第3章 Blender建模和纹理贴图基础 使用开源的3D建模和动画软件Blender简要地介绍了建模和纹理贴图。
  第4章 创建一个低多边形动画角色 第3章的基础上继续讲解创建增强现实应用要使用的纹理低多边形动画角色。
  第5章 Processing中的3D编程 继续讲解Processing,以介绍3D编程以及第4章中创建的3D动画角色的作用。
  第6章 增强现实与Processing 会利用前面章节中所学到的知识,并通过介绍Processing中专门用于实现增强现实的第三方库,以带你进入增强现实的世界。
  第7章 与物理世界交互 会介绍Arduino微控制器和用于物理计算的编程环境。你将会学习怎么创建一个能够接收来自非视频通道的真实世界的数据的增强现实应用。
  第8章 用ActionScript和FLARManager实现基于浏览器的增强现实应用 讲解如何使用FLARManager工具集把增强现实创意变成在线版。FLARManager工具集用来创建基于Flash的浏览器增强现实应用。
  第9章 用jMonkeyEngine进行增强现实原型设计 介绍ARMonkeyKit。它是一个基于开源的jMonkeyEngine的用于3D增强现实快速原型开发的强大工具。
  第10章 安装Android版NyARToolKit开发环境 讲解如何安装用于Android系统的NyARToolKit开发环境,以及怎么在Android移动设备上运行增强现实应用。
  附录A 从Blender 2.49到Blender 2.58 教你怎么把在第3章和第4章学到的Blender 2.49的建模、纹理贴图和动画概念运用到Blender 2.58中。
  附录B 文件格式和导出 提供了本书中用到的3D文件格式的简明摘要,还讲解了如何以恰当的格式将内容导出到工作环境中。
在线配套文件
  你可以在本书的配套网站上找到本书各个章节的工程文件,地址:www.sybex.com/go/prototypingar。在许可协议允许的情况下,本书网站也提供了书中介绍的软件的下载,以防止这些软件的对应版本在将来变得不可用。
作者联系方式
  欢迎你提供对于本书的反馈或者告诉我你想看的书籍。你可以通过如下邮箱联系我:blender.characters@gmail.com。
  Sybex会努力为你提供工作所需的最新工具和信息。请访问本书的配套网站:www.sybex.com/go/prototypingar,如有需要,我们会在这里发布附加内容和更新,以补充本书内容。
致谢
  我要感谢策划编辑Mariann Barsolo、编辑经理Pete Gaughan、开发编辑Gary Schwartz、技术编辑John Nyquist、编辑助理Jenni Housh和Connor O’Brien、产品编辑Dassi Zerdel、文字编辑Liz Welch,以及所有Sybex公司中对这本书的出版做出贡献的人。我还要感谢那些无私地付出自己的时间和精力创建了书中所使用的开源软件的软件开发者,包括ARToolKit、NyARToolkit、Processing、Blender和 JMonkeyEngine的开发者。其中,特别感谢ARMonkeyKit的创建者Adam Clarkson,感谢他为本书内容所做的贡献。

封底文字

走进增强现实开发的艺术和技术之旅!
增强现实(Augmented Reality,简称AR,即在实时视频中融入虚拟内容)已经从一个新兴技术发展为今天最热门的交互设计趋势之一。利用Processing编程语言、Blender动画制作软件、Arduino、Flash等其他的各种开源、专用的工具,即便只有很少编程经验或者没有编程经验的艺术家或者设计师也可以快速学会怎么创建增强现实应用。
本书内容丰富,主题全面,囊括了智能软件技术、可用代码、硬件指示器、建模和原型设计的基础知识,等等。讲解了智能手机、Mac、PC和网络平台上的增强现实应用开发。既是编程也是艺术,计算机图形和编程专家Tony Mullen无缝地结合增强现实的“技术”和“艺术”来教你创建有趣的、令人印象深刻的增强现实应用。
 踏入增强现实的世界,即使你只有有限的编程经验
 了解你将会需要的增强现实术语和工具
 探索Processing 和3D编程的本质
 学习Blender基础知识并设计低多边形动画角色
 为一个增强现实库创建对象并组建和导出3D模型
 增强现实应用跟物理,虚拟和流媒体环境的交互
 使用ActionScript来创建基于浏览器的增强现实应用
 为安卓和其他智能手机平台创建增强现实应用
(左边)安卓版NyARToolkit入门
(最左边)创建基于Flash的交互性网络增强现实应用
备注:扫原书封底图

作者简介

(美)Tony Mullen 著:暂无简介

译者简介

徐学磊 译:暂无简介

译者序

最近几年,增强现实已经从一个新兴技术发展为最热门的交互技术之一。增强现实是一项很神奇的技术,使用这种技术可以产生很多非常吸引人的交互体验,例如帮助人们尝试各种新式发型、远程试穿衣服、实时显示产品信息、逼真地演示玩具的玩法等。而且这些还只是增强现实用途的冰山一角,随着时间的推移,增强现实一定会大放异彩。
  利用Processing编程语言、Blender动画制作软件以及Arduino、Flash等各种开源专用工具,即使只有很少编程经验或者没有编程经验的艺术家或者设计师也可以快速学会怎么创建增强现实应用。
  本书的主要目的并不是教你怎么编程,而是教你怎么使用增强现实技术开发所需的各种各样的工具,讲解不同的工具、不同的编程环境的功能和优势。然后你就可以根据自己的需求和熟练程度来决定深入学习哪种增强现实开发方式。虽然你不需要编程技巧就能看懂本书的内容,但是如果你想要深入学习其中的一些主题,就需要有一定的编程经验。能够带你入门并激励你进一步深入研究你所感兴趣的方向就是本书的最终目的。
  本书内容丰富,能够让你对于增强现实有一个全面、整体的了解。本书从增强现实的基本概念讲起,逐步讲解了Processing编程的基础知识,Blender建模和纹理贴图,Processing中的3D编程与增强现实,Arduino微控制器和用于物理计算的编程环境,基于浏览器的增强现实应用的创建,以及jMonkeyEngine、FLARManager、ARMonkeyKit和Android版NyARToolkit等多个库。本书的主旨是以尽可能快速和简单的方式去试验和演示增强现实应用,因此本书主要面向的是那些充满创造力,渴望探索,又对增强现实感兴趣的人。同时本书所介绍的有趣的技术和库对于有经验的开发者来说也是非常有价值的,并且本书所涉及的主题的广度能够激发开发者的灵感。本书也适合没有3D/2D设计经验的开发者,因为本书既有软件开发的内容,也有3D建模的内容。
  本书的翻译得到了很多人的帮助,特别感谢机械工业出版社华章分社的编辑们。由于译者水平有限,错误在所难免,恳请广大读者给予批评指正。

图书目录

译者序
前言
第1章 增强现实入门  1
1.1 什么是增强现实  1
1.1.1 增强现实简史  2
1.1.2 增强现实应用  3
1.1.3 原型法的创新性  4
1.2 相关的工具和技术  5
1.2.1 ARToolKit  5
1.2.2 用BuildAR创建快速模型  6
1.2.3 DART  6
1.2.4 无标记增强现实与PTAM  6
1.3 增强现实的必需元素  6
1.3.1 获得软件  7
1.3.2 Java世界  7
1.3.3 外设硬件  7
1.3.4 标记  8
1.3.5 其他有用物品  9
第2章 Processing概述  12
2.1 Processing编程环境  12
2.1.1 安装和运行Processing  12
2.1.2 第一个Processing程序  14
2.1.3 交互模式  15
2.2 在Processing中绘图  18
2.2.1 原始形状  18
2.2.2 使用HSB颜色  19
2.2.3 简单的三角函数  20
2.2.4 综合利用  21
2.3 使用类  23
第3章 Blender建模和纹理贴图基础  31
3.1 使用Blender建模  31
3.1.1 应该使用Blender的哪个版本  31
3.1.2 在Blender 2.49中创建一个
简单的外星人模型  32
3.2 烘焙一个平滑的环境光遮蔽纹理贴图  51
3.3 使用GIMP创建一个完整的纹理贴图  56
第4章 创建一个低多边形动画角色  66
4.1 为低多边形外星人模型施加纹理贴图  66
4.2 为这个外星人模型绑定骨骼  70
4.3 为一个简单的行走循环创建关键帧  75
第5章 Processing中的3D编程  81
5.1 P3D和OpenGL环境  81
5.1.1 3D基本原件  81
5.1.2 使用OpenGL  84
5.2 使用OBJ文件  85
5.2.1 使用OBJLoader  86
5.2.2 OBJ绘图模式  89
5.2.3 探究OBJ文件  90
5.3 使用OBJ数组的简单动画  91
第6章 增强现实与Processing  95
6.1 NyAR4psg库  95
6.2 充分利用示例代码  98
6.3 使用多个标记来控制变换  103
第7章 与物理世界交互  109
7.1 使用Arduino来做物理计算  109
7.1.1 Arduino微控制器  110
7.1.2 所需的其他硬件  111
7.1.3 制作一个增强现实玩具天平  112
7.2 传感器和电路  113
7.3 Arduino与Processing之间的通信  115
7.3.1 Arduino和串口监视器  115
7.3.2 Processing草案的代码  117
第8章 用ActionScript和FLAR-Manager实现基于浏览器的增强现实应用  122
8.1 用于ActionScript的FLARManager增强现实工具集  122
8.2 配置并运行FLARManager  123
8.2.1 安装FLARManager  124
8.2.2 在Flash Builder中建立工程  124
8.2.3 在FlashDevelop中建立工程  127
8.2.4 学习FLARManager的示例  131
8.3 创建你自己的工程  135
8.3.1 创建一个新的示例  136
8.3.2 3D内容的导出和导入  136
8.3.3 创建Collada文件  137
8.3.4 添加交互性  141
8.3.5 FLARManager的自定义标记  145
8.3.6 故障排除和更多信息  145
8.3.7 完整的代码  147
第9章 用jMonkeyEngine进行增强 现实原型设计  151
9.1 jMonkeyEngine和ARMonkeyKit的介绍  151
9.1.1 版本和区别  152
9.1.2 关于操作系统  152
9.1.3 准备工作  153
9.1.4 安装ARMonkeyKit  154
9.2 探索学习ARMonkeyKit框架  159
9.2.1 一个加载OBJ模型的示例  161
9.2.2 场景图和节点  162
9.2.3 学习代码  168
9.2.4 其他的功能  171
9.3 开发者的想法  172
第10章 安装Android版
NyARToolkit开发环境  176
10.1 Android和Android SDK  176
10.1.1 你需要什么  177
10.1.2 在Eclipse中安装Android SDK  178
10.1.3 创建一个虚拟设备  182
10.2 Android版NyARToolkit  184
10.2.1 导入并运行这个工程  184
10.2.2 设置你的设备  188
10.3 Android平台的进一步学习  189
10.3.1 Android版NyARToolkit的3D资源  189
10.3.2 学习资源  190
附录A 从Blender 2.49到Blender 2.58  191
附录B 文件格式和导出  204

教学资源推荐
作者: 杨晓钟 孙振萍 陈建 宫兵 等
作者: 陈永强 张聪
作者: Ze-Nian Li Mark S.Drew
作者: 全红艳 编著
参考读物推荐