知识吧 知识资讯 工业软件的产品设计——从选择功能谈起

工业软件的产品设计——从选择功能谈起

本篇文章将从选择功能看工业软件设计的不同设计思路,帮助读者了解3D设计和2D设计的异同,能给产品设计的伙伴们提供一些思路,希望能对你有所帮助。

工业软件的功能十分庞杂繁复,且与业务强关联,如果针对某一个产品做大而全的分析,容易陷入广而不深、泛泛而谈的境地。

因此,笔者选择将所有工业软件中都具备的一个基础功能——选择功能,作为切入点,对一些常见的工业软件进行对比,看看CAD/CAE/CAM等CAX软件分支的设计思路有何不同,3D设计和2D设计的异同有哪些,不同厂家的产品设计又有哪些差异。

本篇笔者基于交互设计圣经《About Face:交互设计精髓》中对选择功能的描述对选择功能进行简要分析,后续会针对不同的软件做实际调查分析。

一、谈谈选择功能

3D场景里的选择(拾取)操作,是CAX软件里上层应用的一个基本交互功能,是其他功能施加的起点。

首先,先看看《About Face:交互设计精髓》中是如何描述选择功能的:

“选取某个对象或控件的操作,被称为选择(selection)。它是个简单的习惯用法,鼠标点指再单击该对象就完成了该操作(当然,也可以通过其他方式来完成,例如键盘或其他按钮等)。选择是其他复杂交互动作的基础。用户选取了某个对象后便可以对该对象进行操作。这一系列动作发生的序列可简称为对象-动词次序(object verb ordering)。”

About Face中的描述并无特指2D还是3D,因此在大多数情况下,无论是word中的文本对象、PS中的图形对象,还是CAX软件中的3D对象,其选择功能的设计思路都是类似的,只是在由维度不同引起的特殊情况下会有针对性的功能设计。

二、命令次序与选择:动词-对象 or 对象-动词

通常我们描述一个动作或命令,例如“吃饭”、“设置模型颜色”、“旋转这个门把手”时,会包括一个描述动作的动词,以及一个被执行动作的对象。

在我们平时说话时,通常是先说动词再说对象,偶尔也会先说对象再说动词,例如“那个球,扔给我!”

在设计软件界面的交互动作时,也基于这两种思路来表达命令:

  • 可以先指定动词,然后对象。
  • 或者相反次序,先指定对象,然后动作。

通常分别称之为“动词-对象次序”和“对象-动词次序”。

熟悉命令行系统的读者会知道,命令行的操作,通常按照“动词-对象”次序执行命令,这符合语言逻辑。

而在图形界面中,动词-对象次序的逻辑就会暴露出来一些问题。

例如,我们想在文件夹中删除几个文件,如果是动词-对象次序,那么用户需要先选择删除功能,系统进入了删除状态,用户再选择想要要删除的文件。但是一定要提前想好要删除的文件是哪些,不然如果有漏网之鱼,一会还要再进入删除状态来一次同样的操作,这非常不自然并且需要用户提前思考。

这就像一个想把在客厅看电视的孩子们叫到卧室睡觉的母亲,如果是“动词-对象”次序,相当于这个母亲自己先进入卧室,把孩子们一个一个叫进来。

如果孩子很多,这位母亲以为自己已经把孩子们都叫进来了,然后走出房间才发现还有孩子在客厅,然后要再次走进房间叫他们进屋睡觉;或者被叫进来的某个孩子要去上厕所,那这个母亲需要等他上完厕所再叫他回来。

而如果是“对象-动词”次序,则是这位母亲身处客厅,把客厅的孩子们一个个撵回卧室里,可以如果有要上厕所的,那就等他上完出来再叫他回卧室,这位母亲就不用自己反复的进出卧室了。

回到删除文件的例子,如果换成对象-动词次序呢?

那就是我们平时经常用的操作了,按住Ctrl+单击选中多个文件,然后删除,删完发现还有没删除的。那好,再按住ctrl单击删除一次,不用提前考虑,大大减少了用户的认知负担。

三、离散选择和连续选择

在《About Face:交互设计精髓》中,作者提出了离散选择和连续选择的概念。

离散和连续,就是看对象数据间是否有关联关系。

对象间可以独立的被选择,被称为离散数据,针对他们的选择称为离散选择。例如桌面上的图标、PPT里不同的形状。

对于由成百上千个相似的小对象组成的连贯整体,这种称为连续数据,对其执行的选择常以连续分组的方式进行选择,称为连续选择。例如Word中的文本、Excel中的单元格。

连续选择和离散选择都支持单选和框选,但二者仍存在差异。

例如word中,文本都有自然次序,如果把字的顺序打乱就破坏了文章含义。因此在word中选择文本时,通常不会随机零散的选择,尽管理论上也可以进行离散的选择,比如选择几个不连续的段落,但是这类选择为用户带来的麻烦,超过了任务本身的价值。

另一方面,离散数据没有内在次序,比如文件夹中零散的文件。当然,用户有时也会按照一定原则来进行连续选择,比如按时间顺序排列文件,选择那些较为久远的文件。

在某些情况下,用户会对挨在一起的对象执行连续选择,也可能希望选择单个对象。

因此两种选择并非完全孤立的,通常是你中有我我中有你,但是会根据对象的不同有所侧重。

四、互斥

通常,当做出一个选择后,以前任何选择都作废了,这种行为称为互斥。也就是一个选择排斥另一个选择。

比如,PPT中用户单击一个方块,方块被选中,但是当用户点击另一个圆形对象时,方块的选中状态就取消了。

互斥对离散选择和连续选择都适用。

某些离散系统还允许第二次单击所选对象来取消选择。这可能导致一种奇怪的情况:根本没有选中,并且没有插入点。

产品经理需要判断这种情况对产品是否合适。

五、添加选择

如果在离散选择时关闭互斥,用户可以连续单击对象来选择多个独立对象,称之为添加选择(additive selection)。

例如,列表框可以允许用户随心所欲地做出多项选择,并在第二次单击时取消选择。

多数离散选择系统默认情况下采用互斥机制,只有使用元键时才允许添加选择,Shift 最常用,Ctrl 其次。

例如在画图程序中,单击选择一个图形对象后,你可以用 Shift 元键加单击,在你的选择中增加其他对象。

连续选择系统通常不允许添加选择(至少缺乏总体视图来对添加选择进行管理),但连续选择界面可以对选择方式加以扩展,这里元键再一次发挥作用。

在 Word 软件中,先选择第一个对象后,对第二个对象按住 Sifit 键进行单击,可以选择第一个对象和第二个对象之间的所有内容。

某些列表框以及 Windows 的文件视图(两者都是离散数据的例子)中的添加选择则有点奇怪。它们用 Ctrl 键实现“正常”的离散添加选择,但又用 Shift键来“扩展”选择,仿佛它们是连续的数据,而不是离散的。

六、成组选择

单击和拖动(click-and-drag)操作,也是成组选择的基础。对于连续数据,它意味着从鼠标按下到鼠标释放都属于“扩展选择”。

这也可通过元键调整,例如在 Word 中 Ctrl+单击选择一个完整的句子,那么Ctrl+拖动就可以逐句选择。独占式应用程序应该使用这些合适的变体来丰富它们的交互。

只要这些变体的操作简单,经验丰富的用户最终会记住和使用它们。

在离散对象的集合中,单击并拖动的操作通常会触发一个拖放移动(drag-and-drop-move)动作。如果鼠标按键是在两个对象之间单击,而不是在任何一个特定对象上,就有一种特殊的含义。

七、选择的视觉提示

必须清晰、醒目地向用户指出选中的对象。选中状态在拥挤的屏幕上必须容易辨认、清晰,并且不能使对象通常可见的细节变得模糊。

通常在3D软件中被选中对象都会高亮显示,2D软件如PS、PPT等会给被选中的图形加边框突出显示。

八、3D对象的选取问题

3D对象的选择操作绝大多数与2D类似,都包括单选、框选等操作,但是由于多了一个维度,3D对象之间会有遮挡关系。

如果某个零部件处于大装配体的内部,无论如何旋转用户在外部都是看不到的时候,用户该如何选中它?

选中无法看到的内部零件有两种路径,一种是不在3D场景中选择,而是通过其他已知信息来检索和选择,另一种是在3D场景中将内部零件暴露出来,从而进行选择。

先看第一种,不在3D场景中选择的方法:

在模型树中根据名称找到该物体的节点,选中。通过检索ID或者其他属性来选中该对象。

另一种,在3D场景中选择的方法:

  • 通过剖切功能暴露选择物体。
  • 改变外部模型透明度,显示内部零件
  • 隐藏外部零部件,暴露内部。
  • 通过爆炸图暴露内部零件。
  • 通过鼠标点击位置触发关联菜单,提供可以选择对象列表。
  • Creo中的做法,右键单击物体,每单击一次选择下一个对象。

九、直接操作与间接操作

  • 间接操作:有的软件将选择/拖动/移动等功能置于不同的模态,在工具栏中有相应的按钮,点击后才可以进行对应操作。
  • 直接操作:当然绝大多数CAX软件,直接依靠鼠标左键右键滚轮分配不同的功能。例如,左键是选择,滚轮是缩放和平移视角,右键是旋转视角或者弹出右键菜单,打开界面直接就可以操作。

本文由 @石寒 原创发布于知识吧,未经许可,禁止转载。

题图来自 Unsplash,基于CC0协议。

本文来自网络,不代表知识吧立场,转载请注明出处:https://zhishiba.net/6203.html
上一篇
下一篇

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部

Warning: error_log(/www/wwwroot/www.zhishiba.net/wp-content/plugins/spider-analyser/#log/log-2701.txt): failed to open stream: No such file or directory in /www/wwwroot/www.zhishiba.net/wp-content/plugins/spider-analyser/spider.class.php on line 2900