空间交互式3D建模方法研究
2011-12-29何依征康颢严王家懿
中国科技教育 2011年9期
简介
现行的三维作图系统开发大多基于二维平面数据进行处理和运算,而且有向更加精确化、数学化的方向发展的趋势。但这未必是三维作图最佳的发展方向。
在使用CAD软件作图过程中,只用鼠标和键盘操作存在不便之处,其最大缺陷是鼠标与键盘是基于二维平面进行工作的计算机硬件,操作者在使用时缺乏对三维空间的直观感受,所以只能靠精确控制数据来提升作图质量。现行三维作图软件的另一弊端是软件需要使用人员具备一定的计算机知识,因为基于二维空间和数据的三维作图需要建模人员依照计算机的处理模式进行操作,这使得许多有很强空间想象力的人因为自身技术水平的限制不能使用计算机这一有力工具进行三维作图。
从古到今,许多民间艺人都是出色的三维建模者。尽管没有精确的空间定位,他们仍能创作出美妙的三维实体。这启发我们开发一套使用户能够凭对空间的直观感知直接在计算机中“捏”出他们设想三维模型的三维建模软件。这套新的系统使用硬件采集作图动作的数据,使得用户可以在计算机中像捏泥人那样直观地“捏”出三维实体。同时,开发一套这样的空间交互式三维作图系统可以使计算机按照人的思维方式进行三维建模,而不必受自身计算机知识的限制。
项目的整体设计思路
系统原理
要实现直观的空间交互式三维作图系统的开发,首先需要开发以空间交互为基础的作图硬件系统采集作图所必需的数据。这些数据应该涵盖空间中的基本元素,比如高度、角度,以及平面内的位移。其次,需要开发一个作图算法把硬件采集的信息运算成三维图形的空间表示(即坐标)。此外,还需要计算机调用作图API绘制图像并反馈作图信息。整体工作原理见图1。
硬件系统
硬件系统是由我们自主设计开发的,其功能是采集基于空间交互的实时数据并发送至计算机,其核心是2张我们自行设计制作的电路板,一张主要用于作图操作(操作板,见图2),另一张用于数据处理和发送(控制板,见图3)。
采集交互动作的方式
采集数据的功能主要由数个按键和2个精密电位器完成,其中一个直线电位器采集作图点的高度,另一个旋转电位器采集作图点的角度值。操作者可以通过移动及转动操作板来定位空间中的操作点,同时可以将所作的图形拉伸或旋转。操作板上的8个按键可以模拟对4个操作点的挤压、拉伸及旋转,从而实现用户空间交互的功能。
控制板上有4个用于选择作图模式的按键,使操作者可以选择不同的作图精细程度和作图模式(对点、对线或对面进行操作),丰富了系统的作图功能。
在我们的硬件系统中有2个STC12C5410AD单片机,分别将直线电位器和旋转电位器输出的电压值转化成10位二进制数并运算处理,同时这2个单片机还会采集操作点的按钮信息并将这些信息发送到STC89C52单片机。STC89C52单片机从2个STC12C5410AD单片机接收作图信息,把这些数据与它采集的作图模式信息重新打包后发给计算机。它还接收来自计算机的数据,驱动LED七段晶体管显示作图点的坐标,丰富了人机交互的内容。硬件系统的程序是用汇编语言编写的。
硬件系统的制作
在开发过程中,我们首先绘制了硬件的原理图,之后用Protel软件绘制了电路板,随后我们用热转印方式制作了电路板,安装原件并焊接。在测试了2张电路板的性能后,我们将整个硬件系统整合成整体并与计算机相连,完整的硬件系统见图4。
软件系统:作图算法与实现
软件程序主要包括3个模块:一是接口程序,我们使用串口通信控件接收来自单片机的空间作图数据并向单片机发送坐标值;二是三维作图算法,用于处理数据并最终生成点的坐标,是软件系统的核心;三是图像的绘制模块,调用OpenGL作为图形接口生成窗口并使用定点坐标数组绘制三维图形。
作图算法的基本功能是利用接口程序加工成的数据生成三维空间中点的坐标。算法采用极坐标思想。程序首先建立表示全部顶点的二维数组DRAWING[][]。我们将空间分成512个高度平面(数组第一维),又在每个平面上定义了256个角度(数组第二维),每个角度上有一个点。通过高度值定位当前所在的平面,通过旋转的角度值定位需要被修改的点所在的角度,而一个点的位置由其所在的高度平面和其到Z的距离(数组的值)确定。程序先定位点,然后根据操作点的状态对点的位置进行修改。
设一个点在高度平面h上,所处角度为α,到Z轴的距离为X,即DRAWING[h][α]=X,
若该点被“挤压”,则有:
DRAWING[h][α]’=X*0.99,(此处数据仅用来描述算法,下同)
同时这个点两侧的共10个点也将被不同程度地“挤压”,有:DRAWING[h][α+n]’=Xn*[0.99+(In|0.02)],(|n|<=5);
若该点被“拉伸”,则有:
DRAWING[h][α]’=X/0.99;
同时这个点两侧的共10个点也将被不同程度地“拉伸”,有:DRAWING[h][α+n]’=Xn/[0.99+(|n|*0.02)],(|n|<=5);
这种运算设计使得点的移动更符合力学规律。
由于硬件具有模式选择功能,当用户选择对线操作时,可以将一条竖线上的点即DRAWING[H][α](H为数个h值的集合)都“拉伸”或“挤压”,而当用户选择对面操作时,可以将一个面上的点即DRAWING[H][A](H为数个h值的集合,A为数个α值的集合)都“拉伸”或“挤压”,这其中H、A的大小取决于用户选择的作图精细度,精度越高,H、A的取值范围越小。
程序还能对整个一个平面进行旋转,假设用户通过操作板旋转高度平面DRAWING[h][A]β度(β为任意角度,A为256个α值的集合),程序将通过一个过渡数组FLAT[256]和一个引入的变量γ来完成运算。
由于硬件端的单片机通过串行口每秒发送15次数据,程序可每秒进行15次这一系列的运算,这样的数据刷新速率足以满足交互式作图的要求。每次运算结束后,程序会将刷新过的DRAWING[][[]的值转化成点的坐标值以便绘图程序直接调用,对于一个点A,DRAWING[h][α]=X,它最终的三维坐标X,y,z为:
X=(X*cosα)*k;
y=(X*sinα)*k;z=h*k;
其中k和k是比例系数,用于调整空间图像的尺寸。
实际使用性能测试与操作样例
在完成整个系统的设计,制作,程序编写后,我们对整个系统进行了性能测试并与其他三维作图工具进行了一些比较,发现我们开发的空间交互式三维作图系统在可以完成作图功能的基础上具有一些突出的优点,在构建基础三维图元方面有许多潜在优势。
该系统作图具有较好的力学特性体验
如图5所示,用空间交互式所图方法模拟的对一块泥模型进行挤压操作。挤压和拉伸处的曲线十分柔和,符合力学规律。这种挤压是空间交互式作图的一种基本操作,用作图算法可以很轻易地构建出来。而且该系统支持对点、线、面进行不同程度的挤压,十分方便。
该系统可以比较容易地实现拉伸和旋转
如图6所示,空间交互式三维作图系统可以容易地实现图形的拉伸与旋转。该图中的水瓶是以一个底面为基础、操作者在旋转操作板的同时在竖直方向上拉伸操作板构建的。这一旋转与拉伸的操作具有连续性,十分便捷,作图的效果也很出色。
该系统在基于圆形的作图方面有明显的优势
由于该系统的作图算法是基于极坐标的方式进行运算的,所以在处理圆形为基础的三维图形方面有着本质上的优势。它在构建一些工业零件、家居用品、工业产品方面有着巨大的应用前景。
项目前景与展望
我们的研究项目实现了空间交互式三维作图的设想,创新了计算机三维作图的方式。虽然这一系统很多方面还不够完善合理,但已经证明了系统所用作图方法的可行性以及它与现行三维作图软件相比的一些优势。
我们有两个完善硬件系统的设想。一是提高挤压操作质量,二是对硬件进行更高级的封装,提高整个系统的工作效率。
在软件方面,我们有三个改善系统的设想。一是完善作图算法。我们可以在程序中引入更多的物理力学元素甚至定理,也可以定义更多的曲线处理方式,使程序能够增强三维作图的现实感,使其进一步直观化。二是鉴于该系统主要适用于构建几何图元,我们计划增加对生成的图元进行封装的功能,使其可以与现行的三维作图软件接口,这样用户可以利用已有资源进行更高端的后期制作。三是将这种空间交互的方式推广用于动画制作,使得动画设计可以采用力学处理的方式,更加方便、逼真。
我们希望我们开发的作图系统能够得到进一步的完善,使得它得到推广。相信在更多人的努力下,三维作图将能变得更加方便、更加节约时间和成本、具有更多的实用价值,为这个社会创造出更多的惊喜。
专家评语
该项目以空间交互式3D建模方法为研究对象,选题具有重要的应用价值。通过交互式3D控制硬件与软件,基于单片机的硬件支持,使用户可以根据需求和意念来控制3D图形,这种设计具有产品化前景,希望进一步完