第9章图形用户接口与交互技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
25
9.5 设计人机交互及用户界面的一般原则
用户界面的一般风格
所见即所得 直接操作 图标
26
9.5 设计人机交互及用户界面的一般原则
交互式图形系统的设计原则
1. 简单易学易用 2. 设计的一致性 (良好的用户界面 随着软件技术的发展, 人机交互越来越频繁, 界面也越加显得 重要. 现在人机界面已作为一个模块来设计, 且其所占的设计比 重已大大超过了计算机系统的功能部分.) 3. 提供反馈 应尽量减少用户等待计算机响应一个命令的时间.对于一个正确 的命令应立即执行. 4. 对错误的修正 对于用户输入的错误命令及其它类型的误操作要有适当的容错处 理,不能因用户输入了错误的信息而造成系统的崩溃.
8
9.1 交互输入的硬件设备
鼠标器
鼠标器按其测量位移的方式可分为三大类: 1) 光电式鼠标 2) 光机式鼠标 3) 机械式鼠标
9
9.1 交互输入的硬件设备
数据手套
数据手套由一系列检测手和手指运动的传感器及天线构 成,数据手套通过传感器和天线来获得和发送手指的位置和 方向信息,并形成三维笛卡尔坐标系,如图所示. 数据手套常用作虚拟场景中的对象定位操作及对虚拟场 景进行操纵.
线段的引力场
17
9.3 基本交互技术
应用程序不断地读取定位器位置,使用异或方式在每一原 位置上擦去原有对象图形,再在新位置上显示该对象图形. 实现橡皮筋技术主要有两种方法: 1. 基于异或操作的橡皮筋技术; 2. 基于缓冲区的橡皮筋技术 ;
B ′′ B ′ B
C
A
18
9.3 基本交互技术
草图勾勒法 首先用定位设备确定一个起始点,移动光标由此点拉出一条 橡皮带,到合适位置按下固定此线段,然后移动光标由前一 线段的终点拉出下一条橡皮带,如此一直进行下去,直到回 到起始点为止,这样形成由直线段近似表示的草图. 图形拖曳(拖动)法 拖曳技术以取样定位输入为基础,应用程序不断地读取定位 器位置,在每一原位置上擦去原有对象图形,再在新位置上 显示该对象图形,从而使对象的图形被操作员在屏幕上拖曳 到适当位置. 这里,显示和擦除图形的操作与橡皮筋一样使用异或方式, 以便不影响其它图形.
第九章图形用户接口与交互技术
9.1 交互输入的硬件设备
键盘
图形学系统中的键盘中有ASCII编码键,命令控制键和功能 键,用以实现图形操作的某一特定功能.另外,某些键盘上 还包含了其它类型的光标定位设备,如跟踪球和操纵杆. 常见的标准键盘如所示.
2
9.1 交互输入的硬件设备
光笔
光笔是一种检测光的装置,它直接在屏幕上操作, 拾取位置. 光笔的这种结构和工作过程如图所示.
5
9.1 交互输入的硬件设备
数字化仪
几种常见 的数字化仪: 的数字化仪:
6
9.1 交互输入的硬件设备
操纵杆
操纵杆是由一个手柄通过一个球形轴承半固定在底座上, 在手柄运动时带动一对电位器或电脉冲产生器,产生位置信 号,控制屏幕上的光标的坐标,如图所示.
7
9.1 交互输入的硬件设备
跟踪球和空间球
跟踪球和空间球是根据球在不同方向受到的推或拉的压 力来实现定位的, 从而控制屏幕上的光标的坐标, 如图所示.
10
9.2 交互设备的逻辑功能
数据手套
数据手套由一系列检测手和手指运动的传感器及天线构 成,数据手套通过传感器和天线来获得和发送手指的位置和 方向信息,并形成三维笛卡尔坐标系. 数据手套常用作虚拟场景中的对象定位操作及对虚拟场 景进行操纵.
11
9.2 交互设备的逻辑功能
一个交互式图形系统应由硬件, 软件和用户三部分组成.
23
在事件模式下,输入设备启动数据输入并交 给应用程序,程序和输入设备也是同时工作 的,但是输入设备将数据放进一个输入队列 中.所有输入数据均存储起来.当程序需要 一个新数据时,就从输入队列中取.
24
在采样模式和事件模式下,任意多的设备可 同时工作,某些处于采样模式下而另一些处 于事件模式下.但是在请求模式下,在一个 时间片内只能有一个设备用来提供输入.
30
相关函数解释
void glSelectBuffer(GLsizei size, GLuint *buffer); 指定用于返回选择数据的数组.参数buffer是指向无符号整数 (unsigned integer)数组的指针,数据就存在这个数组中,size 参数说明数组中最多能够保存的值的个数.要在进入选择模式 之前调用glSelectBuffer()! GLint glRenderMode(GLenum mode); 控制应用程序是否进入绚染(rendering),选择或反馈模式. mode参数可以是GL_RENDER(默认),GL_SELECT或 GL_FEEDBACK之一.应用程序将保持处于给定模式,直到再 次以不同的参数调用glRenderMode().在进入选择模式之前必 须调用glSelectBuffer()指定选择数组.类似的,进入反馈模式 之前要调用glFeedbackBuffer()指定反馈数组.如果当前模式 是GL_SELECT或GL_FEEDBACK之一,那么glRenderMode() 的返回值有意义.返回值是当前退出当前模式时,选择命中数 或放在反馈数组中的值的个数.负值意味着选择或反馈数组溢 出(overflowed).你可以用GL_RENDER_MODE调用 glGetIntegerv()获取当前模式.
27
9.6 OpenGL中的交互操作 中的交互操作
OpenGL能支持设计交互式应用程序.因 为绘制在屏幕上的物体通常经过多次旋转, 移动和透视变换,所以确定用户选中了三维 场景中的哪个物体会很困难.为次, OpenGL提供了一个选取机制可自动告诉你 哪个物体被绘制在窗口的提定区域里.你可 以利用这个机制来获得哪个物体在用户说明 或用光标选取的区域里.
21
在请求模式中,由应用程序启动数据输入. 输入过程从提出请求延续到收到所要的数据, 该输入模式与通用程序设计语言中的一般输 入操作对应,程序和输入设备交替工作,设 备处于等待状态直到提出输入请求,然后程 序处于等待状态直到收到数据.
22
在采样模式下,应用程序和输入设备各自独 立地操作.输入设备可能在程序处理其它数 据的同时工作.输入设备的新数据取代前面 的输入数据而被存储起来.当程序需要一个 新数据时,就从输入设备中把当前值取走.
3
9.1 交互输入的硬件设备
触摸屏
触摸屏是利用手指等对屏幕相应位置的触摸进行定位的. 当用手指或小杆等触摸屏幕时,触点位置便以电子的,光学 的或声音的方式记录下来,如图所示. 常见的触摸屏的类型: (1) 电阻触摸屏. (2) 光学触摸屏. (3) 声学触摸屏. (4) 电容触摸屏.
4
9.1 交互输入的硬件设备
数字化仪
数字化仪是一种把图形转变成计算机能接收的数字形式 的专用设备, 其基本工作原理是采用电磁感应技术. 它通常 由一块数据板和一根触笔组成.数据板中布满了金属栅格, 当触笔在数据板上移动时,其正下方的金属栅格上就会产生 相应的感应电流.根据已产生电流的金属栅格的位置,就可 以判断出触笔当前的几何位置.
28
选择(selection)实际上是OpenGL的一个操作模式;反馈(feedback) 是这类模式中的另一个操作模式."选择(Selection)" 能使你程序 的用户能拾取画在屏幕上的物体."反馈(Feedback)" 能使你的程 序的用户获取将被画在屏幕上的信息和这些信息是以什么格式组 织的. 在反馈模式中,图形硬件和OpenGL完成通常的渲染计算.但 OpenGL不是用这个计算结果去在屏幕上绘制图形,而是返回(或 反馈(feeds back))这些绘制信息给你.如果你想在绘图仪而不是 屏幕上绘制图形,你就得在反馈模式绘制它们,收集绘制指令, 然后将这些指令转换为绘图仪可以理解的命令. 在选择和反馈模式中,绘制信息返回给应用程序而不是象在绚染 模式中那样送往帧缓冲.因此,当OpenGL处于选择或反馈模式时, 屏幕将被冻结-没有图形出现.
29
Байду номын сангаас
9.6 OpenGL中的交互操作 中的交互操作
选择的基本步骤
1,用glSelectBuffer()指定用于返回命中记录的数组. 2,以GL_SELECT为参数调用glRenderMode()进入选择模式. 3,用glInitName()和glPushName()初始化名字栈. 4,定义用于选择的视见体.通常它与你原来用于绘制场景的视见 体不同.因此你或许会想用glPushMatrix()和glPopMatrix()来保存 和恢复当前的变换矩阵. 5,依照绘图模式步骤绘制.在此过程中,交替发布图元绘制命令 和名字栈控制命令,这样每个感兴趣的图元都会被指定适当的名 字. 6,退出选择模式并处理返回的选择数据(命中记录).
13
9.2 交互设备的逻辑功能
6种基本图素:
1. 2. 3. 4. 5. 6.
线元素:折线集(Polyline); 点元素:符号集(Polymarker); 字符元素:文本(Text); 光栅元素:区域填充(Fill area); 单元阵列(Cell array); 一般图素(GDP-Generalized Drawing Primitive),一般 画线图素,如圆,曲线以及用户自定义图素.
19
9.3 基本交互技术
反馈技术
回显
20
9.4 交互输入的基本方式
交互式图形系统使用多种输入数据.也存在不同 的输入方式. 图形软件包中提供输入的函数可按多种输入模式 来组织,每种模式分别指明程序如何与输入设备交互. 基本的输入控制方式有三种:程序启动数据输入;程 序和输入设备同时工作;设备启动数据输入.这三种 输入模式分别称为请求模式,采样模式和事件模式.
12
9.2 交互设备的逻辑功能
逻辑功能 定位设备(Locator) 笔划设备(Stroke) 定值设备(Valuator) 选择设备(Choice) 拾取设备(Pick) 字符串设备(String)
图形软件所需的信息是通过各种各样的图形输入设备获取 的.输入设备从逻辑上分成以下几类:
设备功能 输入某一点的坐标 输入一组点的坐标 输入一个整数或实数值 选择菜单项并 触发其他输入设备 选定一个图形对象 输入字符串 典型物理设备 光笔,鼠标,图形板 鼠标,图形板 键盘 键盘 光笔,鼠标,图形板 键盘
16
9.3 基本交互技术
基本定位方法 使用定位设备指定一个点的位置,常作为图形 或字符串的定位基准. 方向约束及网络约束定位方法 常用的方向定位约束是水平或垂直约束,正斜 线约束,网格约束等. 引力场定位方法 把靠近一直线的任意输入点转换为直线上的 点. 橡皮筋技术 当光标移动时,从起始位置拉伸出一条直线或 其他基本图元,在适当位置才把直线或其他基 本图元固定下来.
14
9.2 交互设备的逻辑功能
1.
交互过程中常见的任务可归纳成六种类型: 交互过程中常见的任务可归纳成六种类型:
定位
定位任务是用来给应用程序指定位置坐标,如 (x,y)或(x,y,z). 定位分为两种情况,一种是把屏幕上的光标移到要确定的点; 第二种就是用键盘键入一个点的坐标.
2.
选择
选择任务是要从一个选择集中挑选一个元素,常用的有命令选 择,操作数选择,属性选择和对象选择等. 选择集一般分为固定集和可变集两种.命令,属性及对象类型 等选择集一般是固定的,而对象调用选择集通常是可变的.
31
void glInitNames(void); 清空名字栈. void glPushName(GLuint name); 将name压入名字栈.压入 名字超过栈容量时将生成一个GL_STACK_OVERFLOW错误. 名字栈深度因OpenGL实现(implementations)不同而不同, 但最少要能容纳64个名字.你可以用参数 GL_NAME_STACK_DEPTH调用glGetIntegerv()以获取名字 栈深度. void glPopName(void); 弹出名字栈栈顶的那一个名字.从空 栈中弹出名字引发GL_STACK_UNDERFLOW错误. void glLoadName(GLuint name); 用name取代名字栈栈顶的 那个名字.如果栈是空的,刚调用过glInitName()后就是这样, glLoadName()生成一个GL_INVALID_OPRATION错.为避 免这种情况,如果栈初始时是空的,那么在调用 glLoadName()之前至少调用一次glPushName()以在名字栈 中放上点东西.
15
9.2 交互设备的逻辑功能
3. 4.
5.
6.
输入文本 输入文本任务即输入一个字符串,如键入一 个插图说明,向文字处理器输入文字等. 输入数值 输入数值任务是要在最大和最小数值之间确 定一个值. 定向 定向是在指定的坐标系中确定形体的方向, 此时需要由应用程序来确定其反馈类型,自 由度和精度. 定路径 定路径任务是一系列定位和定向任务的结合, 它与时间,空间有关.