计算机研究与发展
JOURNAL OF COMPUTER RESEARCH AND DEVELOPMENT
1999年 第36卷 第9期 Vol.36 No.9 1999



CAD中三维交互技术的研究与实现
齐建昌　　戴国忠
摘　要　本文研究了VR技术在CAD几何造型中作为交互手段的应用，特别研究了三维交互技术在CAD中的实现.通过提出一种用于三维交互的精确视觉线索方法，实现了对三维空间中不同三维实体相互位置关系的精确感知.探讨了CAD中在三维交互技术支持下的新的几何造型技术.
关键词　虚拟现实，几何造型，三维交互，形状线索
中图法分类号　TP391.4
RESEARCH AND IMPLEMENTATION OF INTERACTIVE
3D TECHNIQUES FOR CAD
QI Jian-Chang and DAI Guo-Zhong
(Institute of Software, Chinese Academy of Sciences, Beijing 100080)
Abstract　Discussed in the paper here is the use of virtual reality technology as the interaction mechanism for geometric modeling in CAD application, especially the interactive 3D technique in CAD. Precise visual cues for 3D interaction are presented to perceive the spatial relationships of 3D objects. New geometric modeling techniques in a CAD system are also proposed, that use 3D interaction mechanisms.
Key words　virtual reality, geometric modeling, 3D interaction, shape cues
1　引言
　　当前的三维几何造型系统中，交互技术主要使用二维鼠标和键盘来实现.二维鼠标是造型过程中几何数据输入和拾取的主要设备.在概念设计阶段，所设计的外形结果需要经常地修改，更主要的是达到一种视觉上的美观，各个部件之间的比例协调，大致上的功能设计，并不要求确定详细的尺寸.因此，在概念设计阶段，过多的利用键盘输入精确的坐标数据意义不大.
　　在概念设计阶段，由于不要求输入精确的几何数据，很适合用二维鼠标作为输入设备，实现在二维坐标平面勾画轮廓，然后向三维坐标空间扫描，从而进行三维实体造型.但是在三维造型过程中，由于二维鼠标只能同时提供二个自由度，为了能输入三维坐标数据，必须确定一系列辅助的用户工作坐标系，二维鼠标输入的是针对当前用户工作坐标系中的一个工作平面的数据.这些辅助坐标系的选择，造成三维几何造型中交互任务过多，降低交互任务的直观性与效率.
　　利用笔在纸上进行草图的勾画，或利用光笔与手写板在一定的软件支持下进行草图勾画，由于最终结果是一个二维的平面图，不仅会限制概念的表达，而且三维模型的生成需要重新构造或者开发复杂的识别算法进行从二维视图到三维的重构.
　　VR技术的发展提供了一种新的人机交互方式.三维交互、触觉感知、语音识别、手势识别等技术均可以应用在造型技术中，提供一个多通道的CAD系统的界面.尤其是三维交互技术，是VR在CAD中的关键应用技术，它能在概念设计阶段中，提供一种快速直观交互方式.三维交互技术使用三维输入输出设备来完成交互任务.三维输入设备如三维鼠标可以提供3个平移及3个旋转共6个自由度，三维输出设备如头盔、眼镜可以通过双眼视差提供更为真实的显示图像.将三维交互技术与CAD三维几何造型相结合，就是要充分利用三维输入设备的多自由度输入能力和三维输出设备的立体显示能力，为三维几何造型开创新的交互方式，解决以二维鼠标为基础的交互方式中存在的问题.
　　将三维交互技术与CAD几何造型相结合的研究由来已久，早在1975年Clark利用Ivan Sutherland设计的头盔显示设备和Utah大学开发的机械Wand建立了一个曲面设计的交互环境［1］，其后陆续出现了一些类似的系统，这方面需要继续研究的内容很多，距离实际应用还有一定的距离.
　　视觉线索是三维交互中的一个重要研究内容.在几何造型任务中，要求提供精确的视觉线索以保证造型操作的效率与准确性.除了常用的透视投影、光照显示、消隐等方法，大多数系统利用双眼视差来提供更为立体的显示图像［2，3］，由于需要长时间地带上头盔或眼镜，这不符合人机工学的要求，对于键盘输入会带来不便.动态显示方法［4］只要求在操作者的头部带上一个追踪器，通过一系列的坐标变换，使得通过头部的移动得到不同视点下的图像来增强显示的立体效果.上述方法包括投影方法［5］在内，缺点是不能提供精确的视觉线索，所以不适合用于几何造型任务.本文提出的形状线索是精确的视觉线索，支持几何造型任务.
　　传统的三维拾取方法中，如拾取圆柱［3］、拾取圆锥［4］、体光标［6］等方法利用遮挡线索作为完成拾取任务时的视觉反馈，其共同的问题是在光标与被拾取目标间不存在遮挡关系时，无法确定它们之间的空间位置关系，难以用光标瞄准物体，会出现拾取错误.文献［6］提出了透明体光标的方法来支持对空间物体的三维拾取，并且正式评估了透明的体光标和应用双眼视差的立体显示设备在拾取中的作用.实验结果表明，透明体光标比立体显示设备更有助于完成拾取任务，将二者结合起来效果会更好，但是3种方式均不能避免拾取时发生错误.体光标只能区分光标在拾取目标前，光标包含拾取目标，光标在拾取目标之后3种情况，在光标与拾取目标之间没有遮挡关系时，不能确定它们间的空间位置关系，因而会发生拾取错误.本文在形状线索上提出的三维点，三维Box拾取方法不会出现拾取错误.
　　本文提出的用于三维交互的精确视觉线索方法，支持三维空间中对不同三维实体相互位置关系的精确感知，由于其同时能提供三维实体的形状信息，称为形状线索.在三维交互与CAD三维几何造型的结合中，形状线索提供的视觉反馈起着重要作用，保证造型操作的准确性和有效性.本文实现了以下利用三维交互的几何造型技术：三维点的定位，单个实体的三维点拾取，多个实体的三维Box拾取，体素造型，三维勾画.在三维交互的支持下，传统的体素造型可以以一种全新的交互方式实现.本文尝试了利用形状线索在三维空间中直接勾画造型，这是一种新的交互方式，还未见到文献上有类似的方法.三维勾画是概念设计中极为有效的一种交互方式.
2　基于VR技术的CAD交互环境
　　基于VR技术，我们建立了一个新型的CAD交互环境，称之为VR-CAD，整个系统是一个多通道的交互环境，涉及语音、手写及三维交互.本文重点涉及的是VR-CAD中的三维交互技术.
2.1　三维交互环境
　　在三维交互环境的选择上，可以有多种可能，具体哪一种更适合CAD造型的应用，需要仔细地进行分析.利用数据手套作为输入设备，由于可以使用双手交互与手势识别等技术，其表现能力要强于三维鼠标，因为在三维鼠标上仅有几个热键可以利用.但是，使用数据手套的同时要使用追踪器，价格比较贵.而且绝对坐标输入与相对坐标输入设备比较起来，相对坐标输入设备更适合几何造型的任务需要.利用立体视觉输出图像，如立体眼镜、头盔等，无疑会使图像输出更具有真实感，尤其是z方向上的深度感知.但是从人机工学上考虑，会给用户带来一定的生理负担，尤其是对CAD几何造型任务，在长时间的使用中，会使用户的眼睛产生疲劳.如果只利用普通的CRT显示器，在光照模型下输出的图像，不足以提供三维空间的信息，支持利用三维输入设备的使用.本文所使用的三维形状线索可以有效地解决这一问题.
　　所以，综合起来，所选用的三维交互环境是利用三维鼠标作为数据输入设备，同时利用立体视觉和普通CRT图像输出两种方式，但开发了三维形状线索来支持三维鼠标的空间定位.三维视觉线索在两种图形输出方式中都是有效的.
2.2　多通道交互
　　VR-CAD需要一个多通道的交互环境，三维交互只是其中的一个关键部分，常规的键盘与二维鼠标输入、语音的输入输出与语音识别、甚至触觉感知都将成为VR-CAD中的有效交互方式.而且多种交互方式的整合也需要重点的研究.
　　在我们的系统中，三维坐标输入使用Logitech Magellan 3D controller，造型命令用语音输入的方式实现，精确的坐标数值用键盘输入.Logitech Magellan是一个提供相对坐标的控制设备，比绝对坐标控制设备更适合造型任务［7］.由于不便于经常从三维鼠标切换到二维鼠标来激活菜单输入造型命令，所以造型命令采用语音输入的方式进行.三维鼠标适合概念设计时不精确坐标的输入，在要求精确坐标的场合下，更适合用键盘输入.
　　在图形输出上，利用常规的图形显示器以及形状线索，常用的透视投影、光照显示、遮挡线索能提供足够的视觉反馈支持三维几何造型任务.由于在概念设计阶段不要求输入精确的坐标数据，系统提供三维的坐标网格，将用户随意输入的坐标点捕捉到最近的坐标网格上.立体视觉输出是另一种图像输出方式.
3　三维交互技术
3.1　多自由度输入设备
　　一个三维控制设备可以同时提供6个自由度，包括3个平移自由度，3个旋转自由度.但是用户很难对它们进行同时控制，因为用户的手在控制过程中实际上是在不断地抖动，这会引起相应的自由度的改变，使6个自由度之间互相影响.即使用户只想控制改变其中的1个自由度，也会引起其它5个自由度的变化，因此同时控制多个自由度实现起来很困难.一种可行处理方法是根据输入的数据进行分析，并判断出起主要作用的1个自由度作为当前用户的输入意图.
3.2　形状线索
　　形状线索是指当三维光标与场景中的对象处于不同的相对位置时，对象的不同部分呈现出不同的光照效果.应用形状线索感知对象与光标的相对位置就是通过对象形状上光照的分布来反推三维光标与场景中对象的位置关系.
　　根据光标与对象的位置关系向x，y，z三个方向上的投影，形状线索可分为x, y, z 三种，这3种形状线索分别支持x, y, z方向上三维光标与空间实体之间的位置关系的判断.虽然可以同时显示3种形状线索，为了简便，系统根据当前三维光标的x, y, z平移方向决定只显示该方向上一个形状线索.形状线索的显示过程分为3步，① 在图1(b), 图1(d)和图1(e)条件下，对三维实体在正常材料下进行光照显示；在图1(a)和图1(c)条件下，对三维实体在高光材料下进行光照显示. ② 显示图1中以加粗黑线表示的平面，只改变Z-Buffer中的数据而不在显示屏上显示这些平面. ③ 再次显示三维实体，在图1(b), 图1(d)和图1(e)条件下，对三维实体在高光材料下进行光照显示；在图1(a)和图1(c)条件下，对三维实体在正常材料下进行光照显示.图2显示的是形状线索的效果.

图　1
　　使用形状线索的结果是，在当前三维光标处对三维空间进行了x,y,z方向上的切割，在光标前面、上面和右面的部分会以高光方式显示，高光显示的依据是假定光源处于前、上、右方，而三维光标的想象中的坐标面是不透明的，这样三维光标周围的对象就处于不同的光照效果中.这样提供了对三维光标与空间三维实体相互空间位置关系的精确感知.如图2(a)，在没有形状线索的情况下，很容易认为三维光标位于立方体的右侧，形状线索显示了三维光标在立方体左右侧面之间以及左右比例.图2(b)和图2(c)显示了三维光标与立方体上下及前后的位置关系.

图　2
4　造型技术
4.1　坐标空间
　　在系统中存在3种坐标系，世界坐标系、漫游坐标系及工作坐标系.漫游是VR-CAD系统中的一个特点，用户不断地通过控制三维输入设备，改变观察的视点位置与角度，以达到一个满意的空间位置，这时用户面对的就是漫游坐标系，可以在该坐标系下进行几何造型.有时漫游仅仅是为了改变一下观察视角，几何造型需要选择一个工作坐标系，在该坐标系下实现几何造型任务.
4.2　三维拾取
　　三维拾取是三维交互的基本操作，其目的在于标定一个或一组场景中的对象.本文提出的三维拾取方式包括三维点拾取、三维Box拾取，它们是二维CAD系统中点拾取、Box拾取方式向三维的自然扩展.点拾取方式中，要求用户控制三维鼠标使三维光标靠近所要拾取的实体，然后按下三维鼠标上的控制键进行拾取.在光标向实体靠近的过程中，必须形状线索能够提供的为用户感知二者之间空间位置关系的视觉反馈，在视觉反馈的指引下，用户可以从x, y, z任意一个方向开始移动三维光标，直到在该方向上光标接近了实体后开始下一个方向上的光标移动.Box拾取方式是针对一次拾取多个实体的要求设计的，用户要在空间确定Box的二个对角顶点，拾取其间包含的实体.在确定顶点的过程中，视觉反馈同样能够提供精确的空间关系.图3的曲面是通过修改控制顶点的方式得到的，在三维空间中通过三维点拾取方式拾取控制顶点，可以明显地看到，三维光标周围的控制点有不同的光照效果，这就暗示了光标与控制点之间的相对位置关系，在这些视觉线索的辅助下，可以直接控制三维鼠标将顶点拉到所需的空间位置，进行简单的曲面设计.

图　3
4.3　体素造型
　　体素造型是实体造型中的一种常用方法.在体素造型中，充分地体现了三维交互在几何造型中的优势.这时系统有两种状态：造型状态和漫游状态.用户通过激活三维鼠标上的热键将系统置于造型状态，用户利用热键发出体素造型命令，或说出一个语音命令，或利用数据手套作出一个手势，系统自动在三维光标的当前位置生成一个简单的体素.利用三维鼠标可以随意地控制其在空间的6个自由度位置，同时可以通过语音命令或手势将当前造型状态切换到漫游状态，观察当前的体素与原有体素间的空间相对位置关系，大小相对位置关系.观察完毕后，重新切换到造型状态，根据观察结果修改当前体素的大小及其所处的空间位置关系，这样达到满意为止.在这个过程中，用户可以通过键盘键入体素的精确形状参数和空间位置参数，也可以用语音输入来实现这一点.但需要指出的是，在概念设计阶段频繁的输入精确的形状与位置数据是不符合该阶段的任务特点的，理想的方式是所有的任务均应该通过三维交互的手段来实现.
　　一个问题是仅仅通过视觉的感知来实现体素造型必然会带来一定的误差，如体素之间存在的平面与平面的贴合关系，体素之间的垂直关系等.解决这个问题可以通过一定的算法来实现.在经过了漫游观察和对当前体素的修改之后，可以用热键、语音或手势激活一个粘贴命令，在该命令实现过程中，利用算法实现精确的体素之间的位置关系计算，这样可以加快造型的过程.
4.4　自由勾画
　　三维勾画指直接利用三维鼠标提供的x,y,z坐标进行空间的勾画造型，是一种在概念设计阶段构造简单几何形体的快速造型方式.Pro-Engineer在开始造型时要首先在二维平面上勾画一个轮廓，然后向空间拉伸成实体.由于二维勾画时是概念设计，不要求输入精确的尺寸值，所以利用二维网格来辅助鼠标输入数据，每一个鼠标点被捕捉到最近的网格点上.同样，在三维勾画方式中，本文设计了三维网格来辅助三维鼠标的数据输入.图4说明的是一个看似SGI商标的空间管道的勾画过程，虽然其几何形状简单但空间结构复杂，如果用当前的商用软件造型，由于要构造辅助的用户工作坐标系及工作平面，会使造型任务复杂化而且需要用户有较强的空间想象能力.在三维勾画中，用户发出造型命令后，直接拖动三维鼠标在三维空间中造型，无须选择用户坐标系与坐标平面.在形状线索的辅助下，可以很方便地实现管道的长度及方向的控制，而且在造型过程中可以明显地感知到当前三维光标与当前造型状态之间的空间关系.

图　4
5　结语
　　本文探讨了VR-CAD系统中对交互环境的要求，详细研究了CAD三维几何造型的三维交互技术.在三维交互的支持下，实现了多种几何造型任务.下一步的工作为：
　　(1) 二手交互技术的研究.二手交互的优势在于手势可以同时表达操作者的命令与数据，其表达能力丰富而且表达方式简洁、迅速，从人机工学的角度讲二手操作比单手操作要更合理.在虚拟设计系统中，二手交互的优势可以得到充分的发挥，因为在设计过程中，要频繁的进行命令、数据的输入以及拾取操作；
　　(2) 三维环境下的新的装配技术研究.三维环境下的装配技术要研究装配路径的生成，对于复杂的空间位置关系，装配路径的自动生成很困难.VR-CAD中可行的解决方法是，由设计人员利用数据手套操作空间的零件，人为设定装配路径，装配中要考虑空间的装配干涉检查算法.虽然对该问题的研究由来已久，但在虚拟现实的应用中，重新把该问题放在了一个重要的位置.其关键是虚拟现实应用中需要实时的干涉检查算法.
注:本课题得到国家自然科学基金重点项目(项目编号69433020)与八六三课题（863-306-zd-11-5）基金资助.
作者简介:齐建昌，男，1972年生，硕士研究生，主要研究方向为计算机图形学.
戴国忠，男，1944年生，研究员，博士生导师，主要研究方向为计算机图形学、人机交互技术.
作者单位:中国科学院软件研究所　北京　100080
参考文献
1　　Clark J H. Designing surface in 3-D. Communications of the ACM, 1976， 19(8): 454～460
2　　Buttersorth J, Davidson A, Hench S, Olano T M. 3Dm: A three-dimensional modular using a head-mounted display. In: Proc of 1992 Symposium on Interactive 3D Graphics, 1992. 135～138
3　　Dani T H, Gadh R. A frame work for designing component shapes in a virtual reality environment. Computer Aided Design, 1997, 29(8)
4　　Liang J, Green M. JDCAD: A highly interactive 3D modeling system. Computers & Graphics, 1994, 18(4): 499～506
5　　Hudson S E. Adding shadows to a 3D cursor. ACM Transactions on Graphics, 1992, 11(2): 193～199
6　　Zhai S, Buxton W, Milgram P. The silk cursor: Investigating transparency for 3D target acquisition. In: Proc of the CHI'94 Conference on Human Factors in Computing Systems, 1994. 459～464
7　　Hinckley K, Pausch R, Goble J, Kassell N. A survey of design issues in spatial input. In: Proc of UIST'94, 1994. 213～222 
原稿收到日期：1998-12-31；修改稿收到日期：1999-06-03.
