《论文-空间交互式3d建模方法研究》由会员分享,可在线阅读,更多相关《论文-空间交互式3d建模方法研究(15页珍藏版)》请在金锄头文库上搜索。
1、空间交互式空间交互式 3D3D 建模方法研究建模方法研究学生姓名:何依征,康颢严,王家懿指导教师:龚鹏所在学校:东北育才学校2摘要:摘要:现行的三维作图系统开发大多基于二维平面数据进行处理和运算,而且有向更加精确化,数学化的方向发展的趋势。但这未必是三维作图最佳的发展方向。中国古代许多民间艺人都是出色的三维建模者,尽管没有精确的空间定位,他们仍能创作出美妙的三维实体。这启发我们开发一套使用户能够凭对空间的直观感知直接在计算机中“捏”出他们设想三维模型的三维建模软件,使得三维作图变得简单而真实。在这一项目中为了达到直观作图的目的,我们自行设计了全新的人机交互模式即空间交互,用户可以通过对硬件进行
2、挤压,拉伸,旋转等操作在计算机中“捏”出相应的三维图像,增强了三维作图的真实感,也使得三维作图更加凸显用户对空间的理解与感知,并且节约工业建模、动画制作等的工作时间和强度,降低开发成本。我们开发的三维作图系统的人机交互的数据生成是由数个位置不同的按键模拟点的位移,两个精密电位器测量高度变化和角度变化完成的。我们使用两个 STC12C5410AD 单片机采集数据并进行A/D 转换,用一个 STC89C52 单片机整合数据并发给计算机。在计算机端我们用 Borland C+ Builder 6.0 编写了接口程序,作图算法程序以及调用 OpenGL 的绘图程序。尽管程序的内部实现是基于对点空间位置
3、进行运算,但整个程序对用户展示出的是一个基于用户直觉,可以自由发挥的三维作图平台。关键词:关键词:三维作图,空间交互,硬件设计,软件开发31.1.研究背景与课题确定研究背景与课题确定现在三维作图已经十分普及,三维软件的作图能力也进一步增强。但是,在使用 CAD 软件作图过程中,我们发现到用鼠标和键盘来进行作图存在不便之处,其最大缺陷是鼠标与键盘是基于二维平面进行工作的计算机硬件,使用它们进行三维作图时,操作者缺乏对三维空间的直观感受所以只能依靠对数据的精确控制来提升作图质量。现行的三维作图软件大多都采用这种作图形式,并且有向精确化方向发展的趋势,开发人员越来越青睐能够十分精准定位、修改的三维作
4、图软件。现行三维作图软件的另一弊端是它们需要开发人员具备一系列计算机知识,因为基于二维和数据的三维作图需要建模人员依照计算机的处理模式进行操作。这使得许多有很强空间想象力的人因为自身技术水平的限制不能使用计算机这一有利工具进行三维作图。于是我们有了开发一种全新的以空间交互为基础的三维作图方式的想法,这套新的系统使用硬件采集作图动作的数据,使得用户可以在计算机中像捏泥人那样直观地“捏”出三维实体。正如古代的一些手工艺者虽然不能精确地计算三维空间中点的位置,但他们依然可以凭借对空间的感知直接在三维空间内创作三维实体。同时,开发一套这样的空间交互式三维作图系统可以使计算机更加人性化,即按照人的思维方
5、式进行三维建模。用户可以不必受自身计算机知识的限制。经过一系列讨论,我们最终下定决心将这个基于三维作图的想法变成现实。42.2.项目的整体设计思路项目的整体设计思路按键模拟点位移深度旋转电位器的角度值1 号 5410AD 单片机直线电位器的高度信息2 号 5410AD 单片机89C52 单片机计算机三维图像BCB调用OpenGL的库函数根据作图算法生成的点的坐标值绘制三维图像。用BCB编写三维作图算法对接口程序处理生成的数据进行运算生成点的坐标值。接口程序,并对收到的数据进一步加工。反馈:计算机将正在被修改的点的坐标发送至单片机。原始数据原始数据作图模式信息图图 1 项目整体设计项目整体设计5
6、我们最终对项目作出整体设计如图 1:要实现直观的空间交互式三维作图系统的开发,首先需要开发以空间交互为基础的作图硬件系统采集作图所必需的数据。这些数据应该涵盖空间中的基本元素,比如高度,角度,以及平面内的位移。其次,需要开发一个作图算法把硬件采集的信息运算成三维图形的空间表示(即坐标) 。此外,还需要计算机调用作图 API 绘制图像并反馈作图信息。3.3.硬件系统硬件系统硬件系统是由我们自主设计开发的,其功能是采集基于空间交互的实时数据发送至计算机,其核心是两张我们自行设计制作的电路板,一张主要用于作图操作(操作板) ,另一张用于数据处理和发送(控制板) 。3.13.1 采集交互动作的方式采集
7、交互动作的方式图图 2 操作板操作板图图 3 控制板控制板6图图 6 STC12C5410AD 单片机原理图单片机原理图 2, 操作板采集旋转信息和点的位移操作板采集旋转信息和点的位移采集数据的功能主要由数个按键和两个精密电位器完成。其中一个直线电位器用于采集作图点的高度,一个旋转电位器采集作图点的角度值,这样操作者可以通过上下移动并转动操作板来在空间中定位操作点,同时可以将作出的图形拉伸或旋转。而位于操作板上的八个按键可以模拟对四个操作点的挤压和拉伸及其深度,从而实现用户空间交互的功能。控制板上有四个用于选择作图模式的按键,使操作者可以选择不同的作图精细程度和作图模式(对点、对线、对面进行操
8、作) ,丰富了系统的作图功能。3.23.2 硬件中的硬件中的 STC12C5410ADSTC12C5410AD 单片机单片机STC12C5410AD 单片机是深圳宏晶公司生产的一款非常实用的具有 A/D 转换功能的 28 脚单片机,基本功能与常用的 51 单片机兼图图 4 STC5410AD 单片机原理图单片机原理图 1, 采集高度变化信息采集高度变化信息图图 5 STC12C5410AD 单片机单片机7容。在我们的硬件系统中有两个 STC12C5410AD 单片机,位于两块电路板上,分别将直线电位器和旋转电位器输出脚的电压值转化成 10位二进制数并运算处理,同时这两个单片机还会采集操作点的按
9、钮信息并以固定的波特率将这些信息发送到 STC89C52 单片机。3.33.3 硬件中的硬件中的 STC89C52STC89C52 单片机单片机STC89C52 单片机是宏晶公司生产的一种常见的 40 脚单片机,十分稳定实用,基本功能与 8051 机兼容。在我们的硬件系统中,STC89C52 单片机担任的是主机角色,它从两个 STC12C5410AD 单片机接收作图信息,把这些数据与它采集的作图模式信息重新打包后发给计算机。它还接收来自计算机的数据,驱动 LED 七段晶体管显示作图点的坐标,丰富了人机交互的内容,使用户也能够精确操作图图 8 80C52 理图,采集作图模式信息,与计算机通信,驱
10、动理图,采集作图模式信息,与计算机通信,驱动 LED图图 7 STC89C52 单片机单片机8作图。硬件系统的程序是我们使用汇编语言编写的。3.43.4 硬件系统的开发过程硬件系统的开发过程在开发过程中,我们首先绘制了硬件的原理图,之后用 Protel软件绘制了电路板。随后我们热转印方式制作了电路板:打印电路板图纸,用热转印机将油墨压到覆铜板上,用双氧水加盐酸腐蚀覆铜板,使用小台钻钻孔,安装原件并焊接。在测试了两张电路板的性能后,我们将整个硬件系统整合成整体并与计算机相连。如下图。4.4.软件系统软件系统4.14.1 软件系统的构成软件系统的构成软件程序是完全由我们自行编写的,使用的开发工具是
11、Borland C+ Builder 6.0(以下简称 BCB) 。程序主要包括三个模图图 9 完整的硬件系统完整的硬件系统9块。一是数据传输模块,我们使用串口通信控件接收来自单片机的空间作图数据并向单片机发送坐标值;二是三维作图算法,用于处理数据并最终生成点的坐标;三是图像的绘制模块,调用 OpenGL 作为图形接口生成窗口并使用定点坐标数组绘制三维图形。4.24.2 单片机与计算机接口程序单片机与计算机接口程序单片机与计算机的接口程序是该项目中人机交互的重要一环,是我们用 BCB 编写的,该程序除了在计算机端接收和发送数据外,还对来自单片机的十六进制数据包进行拆分重组,将它们加工成作图算法
12、程序便于直接处理的格式。4.34.3 作图算法与实现作图算法与实现作图算法是我们用 BCB 编写的,其基本功能是利用接口程序加工成的数据生成三维空间中点的坐标。采用的是极坐标思想。程序首先建立表示全部顶点的二维数组 DRAWING。我们将空间分成512 个高度平面(数组第一维) ,又在每个平面上定义了 256 个角度(数组第二维) ,每个角度上有一个点。通过高度值定位当前所在的平面,通过旋转的角度值定位需要被修改的点所在的角度,而一个点的位置由其所在的高度平面和其到 Z 的距离(数组的值)确定。程序先定位点,然后根据操作点的状态对点的位置进行修改。设一个点在高度平面 h 上,所处角度为 ,到
13、Z 轴的距离为X,即DRAWINGh=X,若该点被“挤压” ,则有:10DRAWINGh =X*0.99,(此处数据仅用来描述算法,下同)同时这个点两侧的共 10 个点也将被不同程度地“挤压” ,有:DRAWINGh +n=Xn*0.99+(|n|*0.02),(|n|=5);若该点被“拉伸” ,则有:DRAWINGh =X/0.99;同时这个点两侧的共 10 个点也将被不同程度地“拉伸” ,有:DRAWINGh +n=Xn/0.99+(|n|*0.02),(|n|=5);这种运算设计使得点的移动更符合物理力学规律。同时由于硬件具有模式选择功能,当用户选择对线操作时,可以将一条竖线上的点即 D
14、RAWINGH(H 为数个 h 值的集合)都“拉伸”或“挤压” ,而当用户选择对面操作时,可以将一个面上的点即 DRAWINGH(H 为数个 h 值的集合, 为数个值的集合)都“拉伸”或“挤压” ,这其中 H, 的大小取决于用户选择的作图精细度,精度越高,H, 范围越小。程序还能对整个一个平面进行旋转,假设用户通过操作板旋转高度平面 DRAWINGh 度( 为任意角度, 为 256 个值的集合),程序将通过一个过渡数组 FLAT256和一个引入的变量 来完成运算,其算法为:=(+)mod 256;FLAT=DRAWINGh;DRAWINGh=FLAT;由于硬件端的单片机通过串行口每秒发送十五次
15、数据,程序可11每秒进行这一系列运算十五次,足以满足交互式作图的要求。每次运算结束后,程序会将刷新过的 DRAWING的值转化成点的坐标值以便绘图程序直接调用,对于一个点 A:DRAWINGh=X,它最终的三维坐标xA,yA,zA为:xA=(X*cos)*k1;yA=(X*sin)*k1;zA=h*k2;其中k1和k2是比例系数用于调整空间图像的尺寸。由此可见,这套软件作图算法可以满足基本的三维作图需求。4.44.4 OpenGLOpenGL 绘图程序实现绘图程序实现OpenGL 是现在十分流行图形编程 API,可移植性强,常被用于三维作图软件的开发。其应用的本质是用户可以在 C 的环境下通过
16、调用库函数直接对计算机的显示设备下指令。我们作图软件的绘制工作就是由 BCB 添加 OpenGL 的头文件后调用其库函数完成的。该部分程序中,我们首先用 OpenGL 生成了窗口并设置了显示格式,并设置了视图矩阵来定义观察三维图形的模式。在绘图程序中,观察位置和角度会随着作图精细度的改变而改变,我们还添加了使三维图形旋转的代码,使操作者能够从各个角度看到生成的三维图像,提高了软件的实用性。5.5.实际使用性能测试与操作样例实际使用性能测试与操作样例在完成整个系统的设计,制作,程序编写后,我们对整个系统12进行了性能测试并与其他三维作图工具进行了一些比较。发现我们开发的空间交互式三维作图系统在可以完成作图功能的基础上具有一些突出的优点。在构建基础三维图元方面有许多潜在优势。5 51 1 该系统作图具有较好的力学特性体验该系统作图具有较好的力学特性体验如图 1