资源描述
第 1 期2003 年 1 月CHINA MEASUREMENT TECHNOLOGY中国测试技术No11J an1 ,2003二维图向三维浮雕图转换的研究马毅卢延诗(电子科技大学机械电子工程学院 ,成都 610054)摘要 浮雕艺术品具有较强的艺术表现力 ,因此受到了越来越多的人们的喜爱 ,也正因为如此 ,人们对浮雕艺术品的需求也 日益增加 。为了满足人们对浮雕艺术品的需求的增长 ,现在大 多采用了 CAD/ CAM 技术来完成浮雕艺术品的设计和制造 。其 中大部分是直接在三维空间中进行设计和制造。但是 ,我们往 往面对的是一副二维图 ,如一副照片等。因此本文将讨论如何 利用计算机辅助设计手段来实现从二维图到三维浮雕图的转 换。关键词 布尔运算 扫描法 四叉树 细分对于简单图形来说 ,只要我们能确定平面图形中各个形体所表达的立体图形的具体形态 ,那么我们通 过简单的转换 定义不同图形的高度 ,以及拔高时 的拔模斜度等就可以将二维图转换成三维浮雕图 。例 如图 1 (左) 所示的四个图形 ,我们采用下面的步骤便 可将其转换成图 1 ( 右) 所示的立体浮雕图形了 : 先把 外围矩形框沿 Z 轴正向拔高一个高度形成一个长方体 基板 ;然后在基板上表面对左边的两个图形 (矩形和圆 形) 拔高一个适当的高度 ; 对于右边的两个图形 ,先在 基板上表面建立外轮廓 ( 矩形和圆形) ,然后将其拔高总体思想我们可以把二维图看成是三维浮雕图向某平面的 投影 。这样 ,我们需要做的就是将二维投影恢复成三 维形体 。不过 ,由于二维图中的图形不包括三维信息 , 例如三维浮雕图中的立方体投影可能只是一个矩形 , 一个曲面投影可能是一条曲线 ,一个平面投影可能只 是一条直线 。因此 ,我们首先要做的就是要确定平面 图形中的形体在三维中空间对应的形体该是什么 ( 当 然这个要求似乎有点苛刻 ,但是作为设计者来说 ,理所 应当知道他将要设计的是什么) ,再将这些形体分成三 类 简单形体 , 较复杂的规则形体 , 复杂的自由形 体 ,然后再利用计算机辅助设计手段令其以三维的形 态展现出来 ,之后设计者便可以对三维浮雕进行交互 修改和设计 ,直到得到满意的浮雕图为止 。1一定的高度 ,同时要求提供一个拔模斜度以生成台体 。2 . 2 规则的复杂形体转换图 2 规则的复杂图形的转换对于图 2 所示的稍微复杂一些的图形来说 ,可以 通过对简单图形的布尔运算 “交 ,差 ,并”以及形体 扫描法将其构造出来 ,因为这些图形实际上是很规则 的 。例如图 2 ( 左) 所示的四个图形 ,在确定平面图形 中各个形体所表达的立体图形的具体形态后 ,我们可 以采用下面的步骤便可将其转换成图 2 ( 右) 所示的立 体浮雕图了 :左上的图形通过两个大小不一的半球体 进行布尔“并”运算 ; 左下的图形实际上是一条曲线绕 中心轴回转 360 度而形成的扫描体 ; 右上的图形则是 一个小圆沿一段半圆弧扫描形成的扫描体 ; 右下方的 图形则是先生成一个带曲线边的不规则平面面域 ,然 后沿一直线扫描得到一个扫描体后再与一个小圆柱体 进行布尔“差”运算 。2 . 3 自由形体转换前面讨论的是规则图形 ,但是我们在实际情况下 遇到的浮雕图可能是很复杂的不规则图形 自由形 体 。对于这些由由形体来说 ,他们的转换就要复杂得 多了 ,但是在要求不是很高的场合 ,我们可以采用细分具体转换方法下面 ,我们将讨论在二维图向三维浮雕图转换时 将用到的主要转换方法 。当然 ,本文的目的是在于讨 论转换方法 ,因此我们采用的示例图形都是比较简单 的图形以便于理解 。2 . 1 简单形体转换2图 1简单图形的转换操作的统一性 ,我们不能直接对斜面进行细分 ,而是采由形体的转换 。用图 4 所示的方法 ,将正方形 abcd 拾高 1/ 2 个斜面的高度得到一个新的正方形 abcd,然后再对这个正方 形进行细分操作 。由于我们可以通过推算得到正方形 abcd 的四个顶点的坐标值 ,再加上我们已知的角度,因此正方形 a ,bcd的顶点坐标值也能很容易的推算出来 。正方形绕 X 轴旋转后的处理方法类似 。(3) 数据结构最后 ,我们还必须选取合理的数据结构来描述四 叉树所表达的信息 。这一结构除了能有效的存取外 , 还应尽可能减小内存的消耗 ,同时也要考虑占用尽可能少的磁盘空间 。当采用了前面的编码方案后 ,枝结 点的位置信息 ( 主要指 X , Y 方向的坐标值 , Z 方向的坐标值将通过进行的转换操作来计算) 完全隐藏在叶图 3 四叉树细分技术及四叉树表示2 . 3 . 1 四叉树细分技术的主要思想 首先我们用一个初始正方形去包围我们要处理的平面图形 ,然后将这个正方形平分成四个子正方形 ,现在我们可以对这四个子正方形进行转换操作 从简 单考虑 ,我们允许的操作只有许沿 Z 轴正方向 (或负方向) 抬高一定距离 ,或者沿 X 轴 ( 或 Y 轴) 旋转一个角 度如果对现在这个子正方形操作后的结果还不满意 的话 ,可以继续将该子正方形进一步细分成四个更小的正方形 ,然后再对这些更小的正方形进行转换操作 。 这个过程将一直持续进行到满意为止 。这样我们便可 以得到类似图 3 (右) 所示的一棵四叉树 。2 . 3 . 2 四叉树细分技术的实现(1) 结点编码为有效地存取四叉树中的结点信息 ,我们对树中 的每一结点进行如下编码 : 首先指定四个正方形中距原点 (0 ,0 ,0) 最近的正方形编号为 0 ,其相邻结点的编号沿 X 轴方向增 1 ,沿 Y 轴方向增 2 ( 则最初的四个正 方形编号如图 3 所示) ,并把父结点的编号放在子结点 的前面一起作为子结点的编码的一部分 ; 为保证四叉树中每一结点有相同长度的编码 ,可以在结点编码的 后面填充一些特殊字符 ,如F,那么每一个树结点的 编码均可以表示为 ql q2 qi FF F 。其中 ,qi 0 ,1 ,2 ,3 ,i 1 ,n 。例如 ,如果采用 8 位编码 ,则图 3 ( 左) 中 小正 方 形 a 的 编 码 为 122FFFF , 其 父 结 点 编 码 为12FFFFFF ,祖父结点编码为 1FFFFFF 如图 3 (右) 所示 。(2) 正方形绕 Y(或 X) 轴旋转后的细分方法结点的编码中 。例如 ,如果叶结点的编码为 q qqiFFl 2F ,那么他的父结点的编码就为 ql q2父接点的编码就为 ql q2 qi - 2 FFFqi - 1 FFF , 祖等等 。同时 ,由于我们细分过程采用的都是正方形 ,因此任意结点的位置信息可以通过编码和初始正方形的边长和一个 初始点很容易推算出来 。这样在结点数据结构中我们就不用存放结点的平面位置信息了 ,因此减少了数据存储占用的磁盘空间 。但是 ,我们在结点中必须保存 我们进行的转换操作信息 沿 Z 轴正方向或负方向抬高的距离 ,或者沿 X 轴或 Y 轴旋转的角度 ,通过这些信息我们才能获得图形的三维信息 。另外 ,从减小 内存消耗的角度考虑 ,我们把四叉树的信息通过链表 的形式表示出来 。综上所述 ,我们对四叉树中各结点 的数据结构的定义如下 :根结点 指向四个子结点的指针 ,一个初始点(一般是坐标最小的点) 值 ,初始正方形的边长 ;枝结点 指向四个子结点的指针 ,自己的编码 ,转换操作的信息 ;叶结点 同枝结点 ,但是四个指向子结点的指 针全部设为空值 。这样 ,我们就可以通过遍历这棵四叉树来建立我们所需要的三维浮雕图了 。总结由前面的讨论可以看出 ,对于一副二维图来说 ,在 确定图形的具体三维形态之后 ,就可以综合利用抬高 平面图形 ,简单实体的布尔运算 ,形体扫描法 ,以及自 由形体的四叉树细分等方法来实现从二维图到三维浮 雕图的转换 。参 考 文 献3谭建荣 ,计算机工程图学的探索与实践. 北京 : 电子工业出版社 ,1994 ,4陈元琰 ,张晓竞. 计算机图形学实用技术 1 北京 : 科学出版 社 ,2000 ,9彭群生 ,鲍虎军 ,金小刚 1 计算机真实感图形的算法基础.北京 :科学出版社 ,1999DonaldHearn ,M. Pauli He Baker 著 , 蔡士杰等译. 计算机图形 学. 北京 : 电子工业出版社 ,1998123图 4 正方形绕 Y 轴旋转后的细分方法如图 4 所示 ,当某个正方形 abcd 沿 Y 轴旋转一个 角度后将得到一个斜面四边形 adef 。如果要继续对4
展开阅读全文