人机交互技术 课件全套 李想 第1-10章 什么是人机交互、人机交互概述和发展-梦幻森林案例教学_第1页
人机交互技术 课件全套 李想 第1-10章 什么是人机交互、人机交互概述和发展-梦幻森林案例教学_第2页
人机交互技术 课件全套 李想 第1-10章 什么是人机交互、人机交互概述和发展-梦幻森林案例教学_第3页
人机交互技术 课件全套 李想 第1-10章 什么是人机交互、人机交互概述和发展-梦幻森林案例教学_第4页
人机交互技术 课件全套 李想 第1-10章 什么是人机交互、人机交互概述和发展-梦幻森林案例教学_第5页
已阅读5页,还剩200页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人机交互技术第一章

人机交互概述1.1人机交互的概念1.1.1为什么要研究人机交互

自从上个世纪40年代计算机诞生以来,计算机和围绕计算机的信息产业蓬勃发展。当前,制造业、IT业、汽车行业等许多产业都有计算机的身影。人不但要跟电脑、平板、手机等看得见摸得着的计算机进行交互,而且要和嵌入到汽车、电视、微波炉等机器内部的计算机进行交互。现在很多人在研究人机交互,优秀的设计可以提高人们的工作效率,使人们的工作生活更加简洁,更加方便。什么是人机交互

人机交互(Human-ComputerInteraction,简称HCI)是一门研究计算机系统与用户之间交互关系的学问。美国计算机协会ACM人机交互兴趣小组(SpecialInterestGrouponComputer–HumanInteraction,简称SIGCHI)给出了人机交互的定义,人机交互是关于设计、评价和实现供人使用的交互式计算系统,以及围绕这些方法的主要现象进行研究的一门学科。

人机交互是与认知心理学、人机工程学、多媒体技术、虚拟现实技术等密切相关的综合学科,可以从不同的角度(计算机科学、机器和人)来研究人机交互。例如从计算机科学的角度,人机交互的焦点是交互,尤其是单个或多个用户与一个或多个计算机的交互,以及通过计算机系统的人际交互;而从机器的观点,计算机可能是独立运作的计算机,也可能是嵌入式计算机器,比如作为太空驾驶员座舱或者微波炉的一部分。从人类用户的角度看,需要考虑分布式系统,计算机辅助通讯,或依靠不同系统进行协同工作等特性。因此,人机交互既研究机械装置,也研究人的因素,人机交互是当代技术发展的一个重要支撑领域。人机交互的简史发展是人类亘古不变的主题,一个社会发展的关键在于其核心生产工具的发展。计算机作为新时代的核心生产工具,如何高效地与之交互一直是业界的研究热点。经过数十年的实践和发展,人机交互理念、技术和外围设备逐渐由萌芽走向发展和成熟。

手工操作和命令行交互阶段ENIAC是一个庞然大物,重30余吨,占地约170平方米,包含18000只电子管。研究者通过手工开闭计算机上的开关作为输入,通过机器上指示灯的明暗作为输出。如图所示,在埃尼阿克计算机中,每个功能表上有多个开关,用户通过操作功能表上的开关进行数据输入。工作人员在设置ENIAC的一个功能表上的开关组早期的五孔纸带上世纪50年代,人们开始使用穿孔纸带与计算机进行交互。穿孔纸带大约一寸宽,中间的一排小孔用来确定位置,两侧的大孔用来表示信息,穿孔或不穿孔表示1和0,计算机指令用大孔中的若干个孔表示,一条简单的程序通常都需要几米长的纸带,如图所示。但是,这种交互方式输入输出速度慢,可靠性低,逐渐被淘汰。

DECVT100,一个广泛应用的计算机终端(1978)

1956年,MIT开始研究使用键盘向计算机输入信息。60年代中期起,基于键盘的命令行接口成为大多数计算机的主要交互方式。操作人员在命令行界面中输入命令,界面接收命令行,然后把命令行文字翻译成相应的系统功能。整个70年代,甚至直到80年代,这种交互方式一直在持续使用。大家所熟知的Unix操作系统、微软的DOS系统、以及苹果的DOS系统都是采用命令行的方式。

图形化用户界面阶段进入70年代,计算机的使用范围日趋广泛,人机交互的设计理念随之前进。易用性(Usability)、用户友好逐渐成为人机交互设计的首要考虑要素,人机交互的理念进入以用户为中心(User-CenteredDesign,简称UCD)的时代。道格拉斯•恩格尔巴特拿着他发明的鼠标1968年,Stanford大学的道格拉斯·恩格尔巴特(DouglasEnglebart)博士发明了世界上第一个滑动鼠标,如图所示。设计的初衷是为了使计算机的操作更加简捷,代替在键盘上敲击繁琐的指令。恩格尔巴特制作的鼠标是一只小木头盒子,工作原理是由它底部的小球带动枢轴转动,从而使得内部的变阻器改变阻值来产生位移讯号,经计算机处理,鼠标的移动转化成了屏幕上的光标的移动。鼠标极大地改善了人机之间的交互方式,这个发明被电气与电子工程师协会(InstituteofElectricalandElectronicEngineers,简称IEEE)列为计算机诞生50年来最重大的事件之一。XeroxPalo于70年代中后期研制出原型机Star,形成了以窗口、图标、菜单和指示器为基础的图形界面,也称为WIMP界面,Apple公司最先采用了这种图形界面。1983年,苹果公司开发的Lisa桌面电脑配置了鼠标,并首次采用了图形化的用户界面(GraphicalUserInterface,简称GUI)。Lisa创造性地采用了桌面“隐喻(Metaphor)”,使用了位映射(bitamp)、窗口(window)、图符(icon)等图形化元素来代表对应的操作,用户可通过鼠标点击方便地与计算机进行交互,如图所示。Lisa由于售价高,市场接受度不高,但其成就了之后的苹果Macintosh计算机。这种基于鼠标便捷操作和直观的图形化界面的交互方式成为人机交互进化的历史性变革。(a)Lisa电脑

(b)Lisa的屏幕自然人机交互阶段80年代末,多媒体技术繁荣发展。声卡、图像卡等硬件设备的发明和实现使得计算机处理声音及视频图像成为可能,多媒体输入输出设备如扬声器、话筒和摄像头等逐渐为人机交互所用,如图所示。人机交互的内容更加丰富有趣,用户能以声、像、图、文等多种媒体信息方式与计算机进行信息交流。用户利用多媒体技术与计算机进行生动的交互自然人机交互输入设备的进展

自然人机交互更加注重用户的个人体验,以人为中心。在交互输入方面,从最开始的手工操作开关、鼠标键盘输入,发展到当前的体感交互等自然交互方式。1972年,NolanBushnell发明了第一个交互电子游戏Pong,首次将操控技术运用到了人机交互系统中。1977年,ToraDefanti和DanielSandin开发了一套手套式传感器系统SayreGlove,用户只需要带上这样特殊的手套就可以向计算机输入特定指令。交互显示设备的进展

在交互显示方面,人们追求身临其境的感觉。1838年,CharlesWheatstone研究发现人类大脑是通过处理左右眼看到的不同视角图像来产生三维感觉的,这一发现奠定了现代所有立体显示技术的理论基础,包括裸眼3D、眼镜式3D、沉浸式VR等。1961年,由Philco公司研发的Headsight问世,这是世界上第一款头戴式显示器,同时该设备首次融合了头部追踪功能,Headsight主要用于隐秘信息的查看。1985年,美国NASA研发出LCD光学头戴显示器,同时融合了头部、手部追踪功能,可实现更加沉浸的体验,其主要用于太空作业的模拟训练等。人机交互的新技术近年来,随着机器视觉、人工智能、模式识别技术的发展,以及相应的计算机软硬件技术的进步,以手势识别、动作识别、语音识别等为基础的自然人机交互技术不断涌现。交互的模式,也从单一通道输入向多通道输入改变,最终达到智能和自然的目的。多点触控多点触控技术是一种允许多用户、多手指同时传输输入信号,并根据动态手势进行实时响应的新型交互技术。该项技术采用裸手作为交互媒介,使用电学或者视觉技术完成信息的采集与定位。

多点触控技术经过了多年的积累和发展。该系统在大屏多点触控系统设计方面成本低、敏感度高,而且使用计算机视觉技术具有较好的扩展性。其系统效果图如下图所示,用户可以通过单手或者多手直接操控电脑。单手触控(左)与双手触控(右)

手势交互

手势交互是指人通过手部动作表达特定的含义和交互意图,通过具有符号功能的手势来进行信息交流和控制计算机的交互技术。例如,可以采用如下图所示的生活中的6种手势类型,将其语义分别定义为确定/抓取、返回/释放、锁定/解锁、右选、待转/移动、左选操作指令。

手势交互是一种新兴的交互技术,其技术核心是手势识别。根据识别对象可将手势识别技术分为静态手势识别和动态手势识别。数据手套是一种应用较为广泛的手势识别方式。右图形象地描述了数据手套的结构。

手势识别的另一种方式是通过摄像头采集手势数据。这种方式下,人不需要穿戴额外的手套,裸手即可与计算机互动。如下图所示,LeapMotion主要由两个摄像头和3个红外LED组成。LeapMotion的组成结构(左)与图像效果(右)

人体动作识别

人体动作是人表达意愿的重要信号,包含了丰富的语义。人体动作是指包括头、四肢、躯干等人的各个身体部分在空间中的姿势或者运动过程。下图展示了基于人体动作的人机交互应用。动作分析的人机交互应用

人体动作分析是人机交互交互系统的重要支撑技术,是一个多学科交叉的研究课题,使用了数学建模、图形图像分析、模式识别、人工智能等知识,具有重要的理论研究价值。一个完整的人体动作分析过程主要包括动作捕捉、动作特征描述和动作分类识别三大部分。与其他交互手段相比,人体动作交互技术无论是硬件还是软件方面都有了较大的提升,交互设备向小型化、便携化、使用方便化等方面发展。

语音交互

语音交互是人以自然语音或机器合成语音同计算机进行交互的综合性技术。机器通过识别和理解把语音信号转变为相应的文本或命令,人通过语音与机器进行对话交流,让机器明白用户的交互意图。下图给出了语音交互的示例商业产品。(a)AppleSiri

(b)amazonecho

语音交互需要对语音识别和语音合成进行研究,还要对人在语音通道下的交互机理、行为方式等进行研究。语音交互过程包括四部分:语音采集、语音识别、语义理解和语音合成。语音采集完成音频的录入、采样及编码;语音识别完成语音信息到机器可识别的文本信息的转化;语义理解根据语音识别转换后的文本字符或命令完成相应的操作;语音合成完成文本信息到声音信息的转换。

其它新兴的交互方式

人类的交互方式还有很多,当前眼球、意念、表情、唇读等更多的新兴手段被引入到人机交互的领域。这些方式针对不同的应用和人群,在特殊情况下更为有效。人机交互设计的标准、原则和指导方针人机交互设计的标准(1)ISO的人机工程学技术委员会ISO9241包含多个部分,对人机交互、以人为中心的设计、用户界面、用户体验、易用性等都有描述。右表是其各个子系列的基本标准号和标题。

近年来,以人为中心的人机交互设计是人机交互的一个研究热点。以人为中心的设计方法应该遵循以下原则。

(1)设计基于对用户、任务和环境的明确的理解。(2)用户参与整个设计和开发。(3)设计由以用户为中心的评估驱动和改进。(4)过程是不断迭代的。(5)设计表达了全部用户体验。(6)设计团队包括多学科的技能和视角。W3C的多通道交互工作组

2002年,万维网联盟W3C成立多通道交互工作组。工作组的目标是制定标准以使得种类繁多的通道之间能够交互。工作组描述了多通道交互生态系统一个典型示例,由多个框架组件构成,如下图所示。多通道交互生态系统示例

人机交互的原则和指导方针

Shneiderman的界面设计八个黄金法则:(1)尽力保持一致性(2)使用户能用快捷键操作频繁使用的项目(3)提供有帮助的反馈信息(4)会话和流程设计要走向一个完结(5)提供防止用户出错的机制,并提供简洁的错误提示信息(6)允许便捷的撤销操作(7)给用户掌控感(8)减少短时记忆负担Nilesen的10个易用性启发式方法:(1)系统状态可见(2)系统和真实世界相匹配(3)撤销重做原则(4)一致性原则(5)防错原则(6)易取原则(7)灵活高效原则(8)易快速浏览原则(9)容错原则(10)人性化帮助原则PeterMorville的用户体验蜂巢图:

在书中,PeterMorville给出了用户体验蜂巢图,对人机交互设计很有指导意义,如左图所示。用户体验蜂巢图自然人机交互设计的指导方针我们认为以下几点方针更符合自然人机交互系统设计思想。(1)非接触式的体感交互(2)多通道上下文感知融合(3)虚拟与现实的交互映射(4)注重反馈和限制因素(5)考虑通用性和扩展性THANKYOU人机交互技术人机交互概述和发展

人机交互的研究内容1

人机交互的发展历史2

最新应用3总结4目录CONTENTS

人机交互的研究内容1人机交互(Human-ComputerInteraction,HCI)是关于设计、评价和实现供人们使用的交互式计算机系统,且围绕这些方面的主要现象进行研究的学科。人机交互、人机互动(英文:Human–ComputerInteraction或Human–MachineInteraction,简称HCI或HMI),是一门研究系统与用户之间的交互关系的学问。人机交互的研究内容传统的人机交互(HumanComputerInteraction,HCI)是研究运用什么样的开发原理及方法,让人们可以方便地使用计算机系统的学科。20世纪90年代后期以来,随着高速处理芯片,多媒体技术和InternetWeb技术的迅速发展和普及,人机交互的研究重点放在了智能化交互,多模态(多通道)-多媒体交互,虚拟交互以及人机协同交互等方面,也就是放在以人为中心的人机交互技术方面。人机交互的发展历史,是从人适应计算机到计算机不断地适应人的发展史。简单来理解就是研究用户和计算机之间交互的学科,如何让人们更加方便高效的运用计算机技术。新媒体技术的逐步发展,丰富了HCI这一领域的研究内容,从传统的人与计算机键盘、鼠标从而控制显示内容和文本的互动,转变为更多的自然交互形式,体现形态也从二维扩展到三维可视化的终端显示。在最初,很多学者和专家认为HCI可以通过网页设计、网站设计来体现,逐渐的发展至今,我们可以通过虚拟现实(VR)技术、增强现实(AR)技术、混合现实(MR)技术以及影像现实(CR)技术作为技术表现形式的手段,基于计算机及网络产生的内容和相对计算机及网络现实所产生的内容,针对内容、渠道的接受主体(人或其他物体),形成主体、内容、渠道这三个要素构成的人机交互产品。人机交互的研究内容笔式交互设备视觉交互设备虚拟环境中的交互

触觉交互设备课程内容介绍课程内容KT点课程内容KT点

人机交互发展历史2人机交互的发展过程,也是人适应计算机到计算机不断地适应人的发展过程。人机交互发展历史59年美国学者B.Shackel从人在操纵计算机时如何才能减轻疲劳出发,提出了被认为是人机界面的第一篇文献的关于计算机控制台设计的人机工程学的论文。1960年,Liklider

JCK首次提出人机紧密共栖(Human-Computer

Close

Symbiosis)的概念,被视为人机界面学的启蒙观点。1969年在英国剑桥大学召开了第一次人机系统国际大会,同年第一份专业杂志国际人机研究(IJMMS)创刊。可以说,1969年是人机界面学发展史的里程碑。

在1970年成立了两个HCI研究中心:一个是英国的Loughbocough大学的HUSAT研究中心,另一个是美国Xerox公司的Palo

Alto研究中心。

1970年到1973年出版了四本与计算机相关的人机工程学专著,为人机交互界面的发展指明了方向。

20世纪80年代初期,学术界相继出版了六本专著,对最新的人机交互研究成果进行了总结。人机交互学科逐渐形成了自己的理论体系和实践范畴的架构。人机系统是指人为了达到某种预定目标,针对某些特定条件,利用已经掌握的科学技术,组成的人、机、环境共存的体系。这就是广义的人机系统,也称为人—机—环境系统。狭义的人机系统仅指人与机器组成的共存体系。1878198420032007人机交互系统的发展理论实践theorypractice雷明顿2号打字机第一代苹果Macintosh个人计算机黑莓推出的全键盘智能手机苹果第一代iPhone智能手机的虚拟键盘

人机交互技术的最新应用3

制造业

教育科研

军事图片来源于2018首届青岛军民融合展览拍摄参展商作品生活、文化娱乐

总结41、虚拟现实人机交互:基于键盘和字符显示器的交互阶段2、虚拟现实人机交互:基于鼠标和图形显示器的交互阶段3、虚拟现实人机交互:基于多媒体技术的交互阶段4、虚拟现实人机交互:基于多模态技术集成的自然交互阶段总结THANKYOU人机交互技术第一章

人机交互概述人机交互模型人机交互框架模型

在人机交互领域的模型研究方面,较早提出的一个有影响的模型是Norman的执行-评估循环模型。Norman将人机交互过程分为执行和评估两个阶段,其中包括建立目标、形成意图、动作描述、执行动作、理解系统状态、解释系统状态与根据目标和意图评估系统的状态七个步骤。修正后的Norman模型

Abowd和Beale在1991年修正了Norman模型,这个模型为了同时反映交互系统中用户和系统的特征,将交互分为系统、用户、输入和输出四个部分一个交互周期中有目标建立、执行、表示和观察四个阶段,图中每一个有向弧线表示了这四个阶段,每一个阶段对应着一中描述语言到另一种描述语言的翻译过程。一个交互周期以用户的目标建立阶段开始。

人机界面模型

人机界面模型是人机界面软件的程序框架,它从理论上和总体上描述了用户和计算机的交互活动。随着人机界面功能的增长,人机界面的设计也变得复杂,交互式应用系统中界面代码占70%以上。人机界面模型主要任务有任务分析模型、对话控制模型、结构模型和面向对象模型等。

任务分析模型基于所要求的系统功能进行用户和系统活动的描述和分析;对话控制模型用于描述人机交互过程的时间和逻辑序列,即描述人机交互过程的动态行为过程;结构模型从交互系统软件结构观点来描述人机界面的构成部件,它把人机交互中的各因素,如提示符、错误信息、光标移动、用户输入、确认、图形、文本等有机地组织起来;面向对象模型是为支持直接操纵的图形用户界面而发展起来的,它可以把人机界面中的显示和交互组合成一体作为一个基本的对象,也可以把显示和交互分离为两类对象,建立起相应的面向对象模型。

人机界面结构模型

Seeheim模型

Seeheim模型是一种界面和应用明确分离的软件结构,该结构于1985年在德国的Seeheim举行的国际人机界面管理系统研讨会上首先提出。该模型分为应用接口部件、对话控制部件和表示部件三个部件。

Arch模型

Arch模型是1992年在Seeheim模型基础上提出来的。由领域特定部件、领域适配部件、对话部件、表示部件和交互工具箱部件五部分组成。

对话部件:负责任务排队,领域适配器部件是协调对话部件和领域特定部件之间的通讯。

交互工具箱部件:是实现与终端用户的物理交互,表示部件是协调对话部件和交互工具箱部件之间的通讯。

领域特定部件:是控制、操作及检索与领域有关的数据。

面向对象的用户界面交互模型常见的面向对象的用户界面交互模型包括MVC模型、PAC模型、PAC-Amodeus模型、LIM模型和YORK模型等:

MVC模型PAC模型

MVC模型是1983年提出的面向对象的交互式系统概念模型,该模型是在Smalltalk编程语言环境下提出来的。由控制器、视图和模型三类对象组成。

模型:表示应用对象的状态属性和行为。

视图:负责对象的可视属性描述。

控制器:是处理用户的输入行为并给控制器发送事件。

优点:(1)可以为一个模型在运行时同时建立和使用多个视图。(2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(3)模型的可移植性,因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。MVC的优点与缺点缺点:(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。(2)视图与控制器间过于紧密连接。视图与控制器是相互分离但又却是联系紧密的部件,如果视图没有控制器的存在,其应用是很有限的。(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要对此调用才能获得足够的显示数据。PAC模型是Coutaz于1987年提出的一种叫做多智能体的交互式系统概念模型。PCA模型PAC模型和MVC模型之间有四个重要的区别:

(1)PAC模型Agent将应用功能与陈述、输入和输出行为封装在一个对象中。

(2)PAC模型用一个独立的控制器来保持应用语义用户界面之间的一致性。

(3)PAC模型没有基于任何一种编程环境。

(4)PAC模型将控制器独立出来,更加符合UIMS的设计思想,可以用来表示用户界面不同的功能部分。

用户概念模型

用户概念模型:是一种用户能够理解的系统描述,它使用一组集成的构思和概念,描述系统应该做什么、如何运作、外观如何等。人机系统设计的首要任务是建立明确的、具体的概念模型。概念模型可以分为基于活动的概念模型和基于对象的概念模型两大类。

基于活动的概念模型

指示类模型:描述的是用户通过指示系统应该做什么来完成自己的任务,例如,用户可向某个系统发出指示,要求打印文件。在Windows和其他GUI系统中,用户则使用控制键,或者鼠标选择菜单项来发出指令。指示类型或者支持快速、有效的交互,因此,特别适合于重复性的活动,用于操作多个对象。

对话模型的概念模型:是基于“人与系统的对话”模式设计的,它与“指示”类型的模型不同。“对话”是一个双向的通信过程,其系统更像是一个交互伙伴,而不仅仅是执行命令的机器,最适合用于那些用户系用查找特定类型的信息,或者系统讨论问题的应用。实际的“对话”方式可采用各种形式,如电话银行、订票、搜索引擎和援助系统。

操作与导航概念模型:利用用户在现实世界中积累的知识来操作对象或穿越某个虚拟空间。例如,用户通过移动、选择、打开、关闭、缩放等方式来操作虚拟对象。也可以使用这些活动的扩展方式,即现实世界中不可能的方式来操作对象或穿越虚拟空间,例如,有些虚拟世界允许用户控制自身的移动,或允许一个物体变成另一个物体。

搜索与浏览概念模型:搜索与浏览概念模型的思想是使用媒体去发掘和浏览信息,网页和电子商务网站都是基于这个概念模型的应用。基于对象的概念模型

对象类型的概念模型是基于对象的模型。这类模型要更为具体,侧重于特定对象在特定环境中的使用方式,通常是对物理世界的模拟。例如,“电子表格”就是一个非常成功的基于对象的概念模型。基于对象的概念模型有“界面比拟”和“交互范型”。

“界面比拟”是采用比拟的方法将交互界面的概念模型与某个(或某些)物理实体之间存在着的某些方面的相似性体现在交互界面设计中。“界面比拟”将人们的习惯或熟知的事物同交互界面中的新概念结合起来,“桌面”和“电子表格”既可以归类为基于对象的概念模型,同时也是界面比拟的例子。

交互范型(InteractionParadigm)是人们在构思交互设计时的某种主导思想或思考方式。交互设计领域的主要交互范型就是开发桌面应用——面向监视器、键盘和鼠标的单用户使用等。随着无线、移动技术和手持设备的出现,已开发出各种新的交互范型。这些交互范型已经“超越桌面”。如无处不在的计算技术,渗透性计算技术、可穿戴的计算技术、物理/虚拟环境集成技术等等。GOMS预测模型

目标操作方法和选择行为模型(GoalOperatorMethodSelection,GOMS)是人机交互领域最著名的预测模型,是用于分析交互系统中用户复杂性的建模技术,主要被软件设计者用于建立用户行为模型。它采用“分而治之”的思想,将一个任务进行多层次的细化,通过目标(Goal)、操作(Operator)、方法(Method)以及选择规则(Selectionrule)四个元素来描述用户行为。GOMS模型

目标是用户执行任务最终想要得到的结果。它可以在不用的抽象层次中定义。如“编辑一篇文章”,高层次的目标可以定义为“编辑文章”,低层次的目标可以定义为“删除字符”,一个高层次的目标可以分解为若干个低层次目标。

操作是任务分析到最底层时的行为,是用户为了完成任务所必须执行的基本动作,如双击鼠标左键、按下回车等。在GOMS模型中它们是原子动作,不能再被分解。一般情况下,假设用户执行每个动作需要一个固定的时间,并且这个时间间隔是与上下文无关的,如点击一下鼠标按键需要0.20秒的执行时间,即操作花费的时间与用户正在完成什么样的任务或当前的操作环境没有关系。

方法是描述如何完成目标的过程。一个方法本质上来说是一个内部算法,用来确定子目标序列及完成目标所需要的操作。如在Windows操作系统下关闭一个窗口有三种方法:可以从菜单中选择CLOSE菜单项,可以使用鼠标点击右上角的“X”按钮,也可以按ALT+F4。在GOMS中,这三个子目标的分解分别称为MOUSE-CLOSE方法和F4方法。图给出GOMS模型中关闭窗口这一目标的方法描述。关闭窗口行为描述实例

选择规则是用户要遵守的判定规则,是已确定在特定环境下所使用的方法。当有多个方法可供选择时,GOMS中并不认为这是一个随机的选择,而是尽量预测可能会使用哪个方法,这就需要根据特定用户、系统状态、目标细节来预测。CMOS模型GOMS模型的应用:(1)选出最高层的用户目标。实例中EDITING任务的最高层目标是EDIT-MANUSCRIPT。(2)写出具体的完成目标的方法,即激活子目标。实例中EDIT-MANUSCRIPT的方法是完成目标EDIT-UNIT-TASK,这也同时激活了子目标EDIT-UNIT-TASK。(3)写出子目标的方法。这是一个递归的过程,一直分解到最底层操作时停止。从实例的层次描述中可以了解到如何通过目标分解的递归调用获得子目标的方法,如目标EDIT-UNIT-TASK分解为ACQUIRE-UNIT-TASK和EXECUTE-NUIT-TASK两个子目标,并通过顺序执行这两个子目标的方法完成目标EDIT-UNIT-TASK。然后通过递归调用,又得到了完成目标ACQUIRE-UNIT-TASK的操作序列,这样这层目标也就分解结束;而目标EXECUTE-NUIT-TASK又得到了子目标序列,因此还需要进一步分解,直到全部成为操作序列为止。

基建层次模型

击键层次模型(KLM)可对用户执行情况进行量化预测,能够比较使用不同策略完成任务的时间。量化预测的主要好处是便于比较不同的系统,以确定何种方案能最有效地支持特定任务。击键层次模型的内容

Card等人在KLM模型上施加的约束是KLM模型只能应用到一个给定的计算机系统和一项给定的任务。同时,与GOMS模型类似,KLM的应用要求任务执行过程中不出现差错,并且完成任务的方法事先已经确定。也就是说,KLM能够用来预计任务差错执行的时间。KLM模型由操作符、编码方法、放置M操作符的启发规则组成。击键层次模型的局限型

正如Card等人的初衷,KLM模型高度关注人机交互方面,其目的是为执行标准任务的时间进行建模。但KLM没有考虑到错误、学习型、功能性、回忆、专注程度、疲劳、可接受性等问题。不过Card等人也指出,虽然KLM模型没有考虑用户出错的情况,但是如果知道弥补方法,KLM模型同样可以预测执行弥补任务的时间。

动态特性建模

状态转移网络

状态转移网络(StateTransitionNetwork,STN)用于描述用户和系统之间的对话已经有很多年的历史,它的第一次使用可以追溯到20世纪60年代后期,在20世纪70年代后期开发为一种工具。STN可被用于探讨菜单、图标和工具条等屏幕元素,还可以展示对外围设备的操作。状态转移网络最常用的形式是状态转移图(StateTransitionDiagram,STD)。状态转移图是有向图,图中的节点表示系统的各种状态,图中的边表示状态之间可能的转移。状态转移图示例

事件1使用户从状态1到状态2,事件4使用户从状态3’到状态2’。STN还可以表示手柄、鼠标等外围设备的操作。这样可以帮助设计者确定的设备在应用中是否合适,还可以指导用于新型界面的指点设备的开发。

三态模型

三态模型能够揭示设备固有的状态和状态之间的转移。交互设计者使用设备的三态模型帮助确定任务和设备的相互关系,并为特定的交互设计选择合适的I/O设备,不具有特定任务所需的状态的设备在设计过程中的初期就被排除在外。

指点设备可以使用被称为三态模型的特殊STN图来表示所具有的特殊状态,即跟踪运动、拖动运动和无反馈运动。其中:无反馈运动(S0):某些指点设备的运动可以不被系统跟踪,如触摸屏上的笔和手指,一段无反馈运动后,指点设备可以重新位于屏幕上的任意位置。跟踪运动(S1):鼠标被系统跟踪,鼠标被表示为光标位置。拖动运动(S2):通过鼠标拖放,可以操纵屏幕元素。

鼠标的三态模型用户可以拖动鼠标,系统会跟踪鼠标的运动并通过更新光标反映鼠标的位置和运动的速度,这是状态1,即跟踪状态。如果光标处在一个文件的图标上,这时用户可以按下鼠标键(Windows平台下是鼠标左键)并移动鼠标,文件夹图标会在屏幕范围内被拖动,这是状态2,即拖动状态(拖动通常会跟随着鼠标松开动作,鼠标键松开后图标会重新处于光标所在的位置)。鼠标的放置操作使模型返回到跟踪状态。拖动状态到跟中状态之间的动作被定义为拖放操作。

鼠标的三态模型触碰板的三态模型

现在考虑与图形输入相连接的手写笔或用于某些特定屏幕的光笔。手写笔或光笔可以离开屏幕自由地移动,并不影响屏幕上的任何对象,即状态0,一旦用户将手写笔触到屏幕,手写笔的移动就会被跟踪,即进入状态1。手写笔或光笔还可以选择屏幕上的对象,并且拖动它们在屏幕上移动,即进入状态2。状态2可以通过多种方法实现,如压力敏感的笔尖或笔上嵌入的按钮等。因此手写笔或光笔可以认为是居于上述三个状态的设备。图是手写笔的三态模型。

手写笔的三态模型THANKYOU人机交互技术碰撞检测概述目录Catalog1教学目的与要求2重点、难点3教学进程安排4课后学习任务布置教学目的与要求01.本章将介绍碰撞检测的概念及其使用方法,让学生了解碰撞检测技术的作用并掌握使用方法。目的:教学目的与要求学生能够了解并掌握碰撞检测技术的使用方法,完成课堂的学习与讨论,并且能够积极完成课后作业。要求:重点、难点02.碰撞检测的条件,覆写碰撞检测的函数。重点:重点、难点碰撞检测和触发检测的区别。难点:教学进程安排03.碰撞检测的意义在现实世界中,两个物体不可能共享同一个空间区域。在虚拟环境的人机交互过程中,为了提升用户交互过程中的沉浸感,同样需要在虚拟场景中实现两个不可穿透物体间互不共享同一空间区域的体验。若未对虚拟场景中的虚拟物体添加碰撞检测,虚拟物体之间在相互碰撞之后会出现“穿越”现象,这将会带来极差的用户体验。碰撞检测的模拟要产生碰撞必须为交互对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到交互对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。碰撞检测的条件物体发生碰撞的必要条件两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。碰撞检测的接口函数在Unity3d中,主要有以下接口函数来处理这两种碰撞检测:碰撞信息检测1.当进入碰撞器时:MonoBehaviour.OnCollisionEnter(CollisioncollisionInfo){}2.当停留在碰撞器里:MonoBehaviour.OnCollisionStay(CollisioncollisionInfo){}3.当退出碰撞器时:MonoBehaviour.OnCollisionExit(CollisioncollisionInfo){}触发信息检测1.当进入触发器时:MonoBehaviour.OnTriggerEnter(Colliderother){}2.当退出触发器时:MonoBehaviour.OnTriggerExit(Colliderother){}3.当停留在触发器中:MonoBehaviour.OnTriggerStay(Colliderother){}以上这六个接口都是MonoBehaviour的函数,由于我们新建的脚本都继承这个MonoBehaviour这个类。所以我们的脚本里面可以覆写这六个函数。碰撞检测和触发检测的区别物体发生碰撞的必要条件:两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。在unity3D中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。1、碰撞检测碰撞器:包含了很多种类,比如:BoxCollider(盒碰撞体),MeshCollider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。2、触发检测触发器:只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。课后学习任务布置04.课后学习任务布置通过所学的触发检测或碰撞检测做一个小案例。THANKYOU人机交互技术射线检测目录Catalog1教学目的与要求2重点、难点3教学进程安排4课后学习任务布置教学目的与要求01.本章将介绍射线检测技术的应用,让学生了解射线检测的原理和用法。目的:教学目的与要求学生完成课堂的学习与讨论,并且能够积极完成课后作业。要求:重点、难点02.射线检测的概念和程序结构。重点:重点、难点射线检测的发散性使用。难点:教学进程安排03.概念在开发中,尤其是跟模型与交互的时候,都会用到射线检测。射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射。用途:射线应用范围比较广,多用于碰撞检测。在射击游戏中,我们就可以使用射线来代替子弹的作用。相关APIRayCamera.main.ScreenPointToRay(Vector3pos):返回一条射线Ray从摄像机到屏幕指定一个点。RayCamera.main.ViewportPointToRay(Vector3pos):返回一条射线Ray从摄像机到视口(视口之外无效)指定一个点。Ray射线类RaycastHit:光线投射碰撞信息boolPhysics.Raycast(Vector3origin,Vector3direction,floatdistance,intlayerMask):当光线投射与任何碰撞器交叉时为真,否则为假。boolPhysics.Raycast(Rayray,Vector3direction,RaycastHitouthit,floatdistance,intlayerMask):在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰撞的细节信息()。boolPhysics.Raycast(Rayray,floatdistance,intlayerMask):当光线投射与任何碰撞器交叉时为真,否则为假。boolPhysics.Raycast(Vector3origin,Vector3direction,RaycastHitouthit,floatdistance,intlayerMask):当光线投射与任何碰撞器交叉时为真,否则为假。注意:如果从一个球型体的内部到外部用光线投射,返回为假。参数理解Origin:

在世界坐标中射线的起始点direction:

射线的方向distance:

射线的长度hit:

使用c#中out关键字传入一个空的碰撞信息类,然后碰撞后赋值。可以得到碰撞物体的

transform,rigidbody,point等信息。layerMask:只选定Layermask层内的碰撞器,其它层内碰撞器忽略。选择性的碰撞。RaycastHit[]RaycastAll(Rayray,floatdistance,intlayerMask):

投射一条光线并返回所有碰撞,也就是投射光线并返回一个RaycastHit[]结构体。代码结构以摄像机所在位置为起点,创建一条向下发射的射线:

课后学习任务布置学生分组讨论、并总结射线检测还有哪些用法。THANKYOU人机交互技术人机交互技术鼠标及键盘交互动作项目介绍1项目展示2项目设计开发3总结4目录CONTENTS项目介绍1当我们需要做一个PC端的软件时,免不了需要用鼠标以及键盘进行交互,控制,输入等,有了这些功能之后,我们的软件才能称之为一款完整的软件。而这也是我们学习开发的基础功能,接下来我们就看一下在Unity中如何调用键盘和鼠标在软件中完成交互。项目展示2观看视频项目实现3项目实现Step1,打开unity3d,新建3D项目。项目实现Step2,在场景中新建一个text用来显示我们的操作信息。项目实现Step3,新建脚本KeyboardController,在Update函数中我们通过Input方法可以调用

键盘上的所有按键。其中主要有GetKeyDown、GetKey和GetKeyUp分别代表

按键被按下、按着以及松开三种状态。项目实现Step4,挂载代码运行场景进行测试。项目实现Step5,继续编写代码,使用Input调用鼠标点击事件,同理有按下,按着和抬起三种状态,在此不一一赘述,而GetMouseButton方法所带的参数中0,1,2分别代表着鼠标的左键、右键、和中键。项目实现Step6,再次运行场景进行测试。项目实现Step7,新建代码OnMouseController,使用函数方法来用来获取点击物品事件。项目实现Step8,删除代码KeyboardController。新建Cube,Sphere,Capsule等3D物体,给他们重命名并挂载代码后进行测试。总结4总结通过以上的学习,我们了解了鼠标事件和键盘事件的调用方法。我们根据以上学习的基础,可以搭配自己的想法以及其他知识点,就可以做出一个有趣的小作品了。总结起来,可以大致分为两种,一、使用Input方法在Update函数中调用鼠标和键盘事件。二、使用OnMouseDown等函数获取鼠标点击某个物体的时间。THANKYOU人机交互技术AI寻路系统(入门)目录Catalog1教学目的与要求2重点、难点3教学进程安排4课后学习任务布置教学目的与要求01.本章将介绍自动寻路的作用和基础用法。目的:教学目的与要求学生能够根据学习内容进行AI寻路的实现,完成课堂的学习与讨论,并且能够积极完成课后作业。要求:重点、难点02.掌握地形烘焙和寻路组件的使用重点:重点、难点掌握非水平地形寻路的烘焙技术。难点:教学进程安排03.寻路简介Unity3d中的导航网格Navmesh广泛应用于动态物体实现自动寻路的功能,属于人工智能的一种,通过此功能可以使智能AI自行绕过障碍或翻越墙体等,最终到达目标地点或找到目标对象,是一种既方便,有简单,同时还很实用的功能。寻路功能的组成寻路功能主要由三方面组成:1.Navigation地形烘焙。地形烘焙的作用是限定寻路范围,只有在已经经过烘焙的地形上,AI才可以通过寻路找到目标。2.NavmeshAgent寻路组件。其次,NavmeshAgent是控制AI进行寻路的组件,只有挂载了NavmeshAgent组件的AI会通过寻路寻找他的目标。3.代码控制。最后,通过代码控制可以确定NavmeshAgent寻路的目标,也可以限定其寻路的条件。Navigation烘焙说明Navigation不只是使AI可以在水平地形上寻路那么简单,它还有许多的属性值,通过调节这些值我们可以调整地形烘焙时的高度,半径,角度等,其中如果有坡度较大的地形需要烘焙,我们只需要将

Bake中的MaxSlope值调至最大值就可以让AI自行爬坡了。除此外,还可以通过调节其他数值实现AI的跳跃坠落等行为,请同学们自行探索。课后学习任务布置实现水平地形的寻路功能,探讨Navigation属性值的作用。THANKYOU人机交互技术AI寻路系统(进阶)目录Catalog1教学目的与要求2重点、难点3教学进程安排4课后学习任务布置教学目的与要求01.本章将更深入地介绍AI寻路系统,更有深度的探究寻路组件的其他功能。目的:教学目的与要求学生能够深入了解寻路系统,完成课堂的学习与讨论,并且能够积极完成课后作业。要求:重点、难点02.在寻路系统入门的基础上进行进阶学习,学习寻路系统的其他功能。重点:重点、难点寻路系统的整理。难点:教学进程安排03.梯子效果爬坡功能允许攀爬的只有最大限度为60°的坡度,当面对更大的坡度时,MaxSlope就已经无法满足我们的需求了。这时我们需要用到一个新的组件:OffMeshLink。我们只需要给梯子添加OffMeshLink组件并挂载底端和顶端的空物体,我们就可以完成爬梯子的效果,实现垂直爬坡了。寻路路线限制到此为止我们学习的寻路都是在同一片烘焙区域,通过最短路径自行寻找目标的AI行为,但有时候我们需要限定不同的AI可以走的路线进行区分,这种情况我们就需要用到Navigation组件的Areas功能了。在Areas中我们可以添加烘焙区域名称,添加后Object中可以给烘焙区域限定区域名称,最后就可以在NavmeshAgent里面选择行走区域来限定AI的行走路线了。道路阻断在寻路系统中,只要AI开始寻路,就会“一去不回头”。要怎么做才能在它寻路过程中对它进行中途阻止呢,我们只需要在相应的路段上添加一个名为NavMeshObstacle的组件,这一段路就会阻止AI通过了,再通过代码控制该组件的显隐性,就可以控制AI寻路时,相应路段的阻断和连通了。课后学习任务布置学生分组讨论,并整理进阶寻路实现过程的笔记。人机交互技术群组行为教学目的与要求1重点难点2教学进程安排3课后学习任务布置4目录CONTENTS教学目的与要求1教学目的与要求目的:本章将介绍群组行为功能的实现方法,让学生了解群组行为的实现流程。要求:学生能够使用群组行为模拟AI行为,完成课堂的学习与讨论,并且能够积极完成课后作业。重点难点2重点难点重点:在本章中我们要学会力学的简单运算,组的管理方法,完成对整个群组的控制。难点:整理逻辑的整理,权重的把控。教学进程安排3群组行为的作用群组行为队列聚集分离力学计算距离检测碰撞组管理当有一群的人或者动物与环境进行真实的交互的时候,我们要想模拟出最真实的行为,就要让群体的行为符合群体的特征。在不加入unity3d环境中的人工智能的情况下,用简单的视觉模糊来进行鸟群的行为模拟。主要方法队列的力力学计算聚集的力距离检测分离的力碰撞组管理整个集体的前进方向恒定,不会因为个体而进行变动。每个个体都会向集体汇聚,不会脱离大部队,分散太远。每个个体都会与其他个体保持一定距离,不会非常靠近。通过牛顿第二定律计算每一个个体的前进方向和速度每一个个体通过距离检测判断自身附近是否有其他个体将附近的同类放到一个碰撞组中进行管理。群组行为的实现定义并初始化变量:publicTransformtarget;publicVector3velocity=Vector3.forward;privateVector3startVelocity;publicVector3SumForce=Vector3.zero;voidStart(){target=GameObject.Find("Target").transform;startVelocity=velocity;}ForceCompute(){SumForce=Vector3.zero;

Lisan_Force=Vector3.zero;Duilie_Partner.Clear();//清除队列数据

Collider[]colliders=Physics.OverlapSphere(transform.position,Lisan_Distance);//physicis之后代码的作用:用来检测以某个位置为半径发射一个圆以检测球体内有哪些游戏物体(用来做物理检测,得到的结果是coliider的集合)for(inti=0;i<colliders.Length;i++){if(colliders[i]!=null&&colliders[i].gameObject!=this.gameObject){Duilie_Partner.Add(colliders[i].gameObject);}}for(inti=0;i<Duilie_Partner.Count;i++){//计算位置距离

Vector3dir=transform.position-Duilie_Partner[i].transform.position;Lisan_Force+=dir.normalized/dir.magnitude;//计算所有邻居向前的向量和

}if(Duilie_Partner.Count>0){Lisan_Force*=Lisan_Weight;SumForce+=Lisan_Force;}}定义计算合力的函数并添加分离的力:群组行为的实现定义队列的力变量:publicfloatDuilie_Distance=6;//检测距离publicList<GameObject>Duilie_Partner=newList<GameObject>();publicfloatDuilie_Weight=3;publicVector3Duilie_Force=Vector3.zero;SumForce=Vector3.zero;

Lisan_Force=Vector3.zero;Duilie_Partner.Clear();//清除队列数据

Collider[]colliders=Physics.OverlapSphere(transform.position,Lisan_Distance);//physicis之后代码的作用:用来检测以某个位置为半径发射一个圆以检测球体内有哪些游戏物体(用来做物理检测,得到的结果是coliider的集合)for(inti=0;i<colliders.Length;i++){if(colliders[i]!=null&&colliders[i].gameObject!=this.gameObject){Duilie_Partner.Add(colliders[i].gameObject);}}for(inti=0;i<Duilie_Partner.Count;i++){//计算位置距离Vector3dir=transform.position-Duilie_Partner[i].transform.position;Lisan_Force+=dir.normalized/dir.magnitude;//计算所有邻居向前的向量和

}if(Duilie_Partner.Count>0){Lisan_Force*=Lisan_Weight;SumForce+=Lisan_Force;}}在合力计算中添加队列的力:群组行为的实现定义聚集的力变量:publicTransformtarget;publicVector3velocity=Vector3.forward;privateVector3startVelocity;publicVector3SumForce=Vector3.zero;voidStart(){target=GameObject.Find("Target").transform;startVelocity=velocity;}ForceCompute(){SumForce=Vector3.zero;

Lisan_Force=Vector3.zero;Duilie_Partner.Clear();//清除队列数据

Collider[]colliders=Physics.OverlapSphere(transform.position,Lisan_Distance);//physicis之后代码的作用:用来检测以某个位置为半径发射一个圆以检测球体内有哪些游戏物体(用来做物理检测,得到的结果是coliider的集合)for(inti=0;i<colliders.Length;i++){if(colliders[i]!=null&&colliders[i].gameObject!=this.gameObject){Duilie_Partner.Add(colliders[i].gameObject);}}for(inti=0;i<Duilie_Partner.Count;i++){//计算位置距离

Vector3dir=transform.position-Duilie_Partner[i].transform.position;Lisan_Force+=dir.normalized/dir.magnitude;//计算所有邻居向前的向量和

}if(Duilie_Partner.Count>0){Lisan_Force*=Lisan_Weight;SumForce+=Lisan_Force;}}在合力计算中添加聚集的力:群组行为的实现在合力中添加恒定飞行速度的力变量:ForceCompute(){…………//保持恒定飞行速度的力

Vector3engineForce=startVelocity-velocity;SumForce+=engineForce*0.1f;Vector3targetDir=target.position-transform.position;SumForce+=(targetDir.normalized-transform.forward)*speed*10f;}publicfloatTimer=0;publicfloatcheckTime=0.2f;publicfloatmass=1;voidUpdate(){Timer+=Time.deltaTime;if(Timer>checkTime){ForceCompute();//每0.2秒调用一次函数

Timer=0;}velocity+=(SumForce/mass)*Time.deltaTime*0.1f;transform.rotation=Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(velocity),Time.deltaTime*3);transform.Translate(transform.forward*Time.deltaTime*velocity.magnitude,Space.World);}稳定频率调用计算合力的函数:课后学习任务布置4课后学习任务布置学生分组讨论,整理群组行为实现过程的笔记并理清整个功能的逻辑。THANKYOU人机交互技术Human-ComputerInteractionTechnology——基于LeapMotion的《梦幻森林》案例学习目的和要求1

重点和难点2《梦幻森林》LeapMotion和完善3

课后总结4目录CONTENTS学习指导建议重点掌握LeapMotion基本手势控制函数,能够替换不同的手部模型控制场景中的物体将LeapMotion与Unity3D进行连接,能够理解相关的参数设定,并且能够熟练的掌握位移、换色等基本操作强化练习LeapMotion的使用,通过相关的粒子特效案例增加趣味性、通过群组行为的控制使其和其他知识单元能够紧密结合,并且能够掌握相关的可穿戴设备的优缺点,参加各项学科赛事本章的学习建议在实验室的环境中进行,能够结合相应的设备进行不断的测试,同时本章的案例源代码在本书的配套光盘中,课后的案例和课程回顾等保存在本书的慕课资源中,建议读者先学习本章的基础知识,在最后通过线上教学资源进行不断的提升和课程的内容的加强练习。

学习目的和要求1学习目的和要求目的:

通过对《梦幻森林》案例的分析和学习,了解完整项目的制作过程,学习交互设计思路。将素材与技术更好的结合。目的:

通过对《梦幻森林》案例的分析和学习,了解完整项目的制作过程,学习交互设计思路。将素材与技术更好的结合。要求:

基于《梦幻森林》案例的了解结合对LeapMotion的学习,设计并创新新的交互创意和ji'yu玩法。

重点和难点2重点和难点重点:

掌握LeapMotion的基础知识,学会灵活运用,完善项目。难点:

对LeapMotion的运用,研究出符合自己主题的功能,设计合理有趣。LeapMotion和项目完善3LeapMotion和项目完善本节主要是对《梦幻森林》案例的最后一个交互模块LeapMotion交互和整个项目最好完善部分的分析,在《梦幻森林》的LeapMotion中,用简单的交互方式,实现蝴蝶群对LeapMotion手部的追踪。LeapMotion和项目完善首先,先导入LeapMotion,进入场景测试设备是否正常。,正常状态如下图所示将3D场景导入到LeapMotion场景中,导入蝴蝶资源包,添加进入场景中。LeapMotion和项目完善LeapMotion和项目完善以下脚本负责控制蝴蝶的群组行为控制。usingSystem.Collections;usingSystem.Collections.Generic;usingunityEngine;publicclassBufferController:MonoBehaviour{publicfloatspeed=1;publicVector3velocity=Vector3.forward;privateVector3startVelocity;publicTransformtarget;publicVector3sumForce=Vector3.zero;

LeapMotion和项目完善

publicfloatm=10;publicfloatseparationDistance=3;publicList<GameObject>seprationNeighbors=newList<GameObject>();publicfloatseparationWeight=1;//publicVector3separationForce=Vector3.zero;//分离的力publicfloatalignmentDistance=6;publicList<GameObject>alignmentNeighbors=newList<GameObject>();publicfloatalignmentWeight=3;publicVector3alignmentForce=Vector3.zero;//队列的力publicfloatcohesionWeight=1;publicVector3cohesionForce=Vector3.zero;//聚合的力publicfloatcheckInterval=0.2f;publicfloatanimRandomTime=2f;

privateAnimationanim;

LeapMotion和项目完善

privatevoidStart(){target=GameObject.Find("Target").transform;startVelocity=velocity;InvokeRepeating("CalcForce",0,checkInterval);anim=GetComponentInChildren<Animation>();Invoke("PlayAnim",Random.Range(0,animRandomTime));}voidPlayAnim(){anim.Play();}voidCalcForce(){print("calcForce");sumForce=Vector3.zero;separationForce=Vector3.zero;

LeapMotion和项目完善//计算分离的力seprationNeighbors.Clear();Collider[]colliders=Physics.OverlapSphere(transform.position,separationDistance);foreach(Collidercincolliders){if(c!=null&&c.gameObject!=this.gameObject){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论