专利名称:一种基于plt文件的广告字三维显示方法
技术领域:
本发明涉及一种基于plt文件的广告字三维显示方法,属于广告字加工与计算机
可视化技术领域,它为广告字加工提供更为逼真的三维显示方法。
背景技术:
广告字的应用范围极其广泛,建筑物为了标识它的名称都会制作一个立体字称悬 挂于该建筑之上,商业场所更是大量使用各种广告字作为招牌。 一般来说广告字工艺分为 金属字与塑料字两种。相比较其他类型的广告字,立体发光字近年来逐渐流行,它使用亚克 力板作为面板,用板材或型材弯折出字体的壁板,然后在内部装上灯饰,这种立体字白天立 体感强,晚上字体明亮,给人一种新颖、赏心悦目的感觉,因此常用作各种商业店铺的广告 招牌。 立体发光字分为表面与围边两个部分,如附图2(a)所示,它的加工方法一般为使 用雕刻机雕刻出字体的表面形状,接着使用专用加工系统或手工弯折出字体的围边,然后 将两者从内部进行焊接或粘贴,并装上灯饰,这样就完成了 一个立体发光字的制作。目前市 场上现有的广告字的加工系统配套软件中,采用的均为二维显示的方式,即只显示了广告 字所包含的若干独立的多变形图形,而无实体形状,如附图2(b)所示。这种显示方式只需 要读入plt等图形格式文件,将其中的点相连接,然后在屏幕上进行显示即可。二维的显示
方式只单纯的显示广告字的外形特征,而完全不考虑它的实体形状。这种显示方式只是简
单的告诉操作人员需要进行加工的表面及围边形状,而不考虑它们之间的相对位置关系,
若操作人员对某些待加工的字不熟悉,他们就无法确定如何由这些加工好的表面及围边构
成一个立体广告字,同时也无法判断围边是在字的实体的内侧还是外侧。 所以需要提供一种新的显示方式,这种显示方式不是简单的提供待加工广告字的
轮廓形状,而是提供一个完整的信息,不仅包含了表面及围边的形状信息,还提供了它们之
间的相对位置关系,通过这些信息实现了字体的三维显示,能够更好的指导加工人员进行
操作,例如,即便是从来没有见过中文的外国人也可以很容易地辨认出字的实体部分及围
边与字表面的相互位置关系。
发明内容
本发明针对目前广告字加工系统配套软件对广告字的显示存在不够形象的问题, 通过建立广告字表面的多边形网格,并沿某一方向的拉伸,实现广告字的三维立体显示,提 供一种真实感强、交互性好的面向广告字加工的三维显示方法。所述技术方案如下
—种生成广告字三维模型方法,其特征在于,所述方法执行以下步骤步骤A :读 入指定的plt文件并进行解析,将广告字分离的各个部分所包含的点用线段进行连接,得 到广告字中包含的若干个封闭的多边形图形;步骤B :分析若干个封闭多边形之间的相互 位置及嵌套关系,得到各封闭多边形与广告字的实体部分之间的关系,生成广告字的填充 表面;步骤C :对进行填充面域的网格进行划分,将广告字表面划分成三角形网格,并进行显示;步骤D :将广告字的表面沿垂直方向进行拉伸构建广告字的围边以创建三维实体模
型,分别计算各顶点的法向量坐标、纹理坐标以供三维显示纹理贴图以及开启光照功能。
优选地,所述步骤B中,执行以下步骤步骤1 :将每一个封闭区域看作是一个对 象,为它们进行编号;步骤2 :定义最外层的封闭区域层级为O,定义次外层的封闭区域层级 为1,即层级为1的封闭区域仅被层级为0的区域包含,而被层级为1的区域包含的封闭区 域必定被层级为0的区域包含,除被层级0和1包含以外,未被其他区域包含的封闭区域的 层级为2,依此类推,直到最内层封闭区域被定义层级为止;步骤3 :初始化所有封闭区域的 层级为0 ;步骤4:解析所有封闭区域之间的相对位置关系,判断一个区域是否在另一个区 域中,得到图形中所有的封闭区域的层级;步骤5 :根据所得的封闭区域层级,判断封闭多 边形之间的相互位置及嵌套关系,得到各封闭多边形与广告字的实体部分之间的关系,从 而确定整个图形中,哪些是广告字的实体部分。
优选地,步骤4中判断一个区域是否在另一个区域中的方法为从编号0开始,依
次取出广告字中的各封闭区域,判断所取出的封闭区域是否被广告字中的其余的封闭区域
包含,如果被包含,则区域的层级加1,若未被包含,则保持区域的层级不变。
优选地,步骤5中判断实体部分之间关系的方法为层级数为偶数的作为实体部
分的外侧,层级数为奇数的作为实体部分的内侧,若某一层级为最大层级且其数值为偶数,
即表示该区域作为实体外侧向内填充,但内部不再含有区域,因此它的内部将完全填充。 优选地,步骤C中,使用OpenGL提供的镶嵌功能进行广告字表面三角形网格划分。。 —种广告字的三维显示方法,其特征在于,所述方法包括以下几个步骤a:建三 维显示平台使用¥0++搭建程序整体框架及相关操作界面,利用0penGL搭建三维显示平 台;b :执行如权利要求1所述的生成广告字三维模型的方法;c :采用0penGL作为3D程序 接口来实现三维图形的绘制和渲染,实现模型的全方位观察及交互式操作。
本发明的技术方案带来的有益效果是 本发明建立的三维模型,可以在任意计算机中进行显示,同时对字体的表面与围 边使用不同的纹理进行表示,能够显示出广告字全部加工完成后的实际形状,使广告字显 示更加形象,更加逼真,同时这样的三维显示对加工人员进行加工操作也有实际指导意义。
图1是"告"字的二维平面示意图; 图2是三维与二维广告字显示示意图; 图3是"回"字plt文件未经处理数据信息的二维显示及封闭区域示意图; 图4是"王"字plt文件未经处理数据信息的二维显示及封闭区域示意图; 图5是本发明所述基于pit文件的广告字三维显示方法的广告字三维模型建模流 程图; 图6是广告字封闭区域相互位置关系分析算法流程图; 图7是"回"字解析后各封闭多边形的层级及填充效果示意图; 图8是复杂图形解析后各封闭多边形的层级及填充效果示意图; 图9是"回"字及复杂模型的三维显示效果示意图。
具体实施例方式
首先介绍以下本发明中提到的几个概念
pit文件格式 plt文件是一种专门用于喷图打印而制作的专门文件,可以用打印机将图纸等资料打印成*. pit的文件,这样就可以用来在打印机上进行打印。下面的为"回"字的Pit文
件IN ;VS32,1 ;VS32'2 ;VS32'3 ;VS32,4 ;VS32'5 ;VS32'6 ;VS32'7 ;VS32'8 ;WUO ;PWO. 350,1 ;PWO. 350,2 ;PWO. 350,3 ;PWO. 350,4 ;PWO. 350,5;PWO. 350,6;PWO. 350,7 ;PWO. 350,8 ;SP1 ;PU-737 429 ;PD-216 429 ;PD-216 -92 ;PD-737 -92 ;PD-737 429 ;PU_861 _332PD-737 -283PD-737 -134PD-216 -134PD-216 -283PD-92 -225 ;PD-IOO 387 ;PD-34 437 ;
PD-150 553 ;
PD-224 470 ;
PD-729 470 ;
PD-861 553 ;
PD-853 102 ;
PD-861 -332 ;
PU338 842 ;
PD404 900 ;
PD297 1007 ;
PD206 908 ;
PD-1158 908 ;
PD-1291 991 ;
PD-1283 40 ;
PD-1291 -919 ;
PD-1167 -861 ;
PD-1167 -688 ;
PD222 -688 ;
PD222 -870 ;
PD346 -820 ;
PD338 -357 ;
PD338 842 ;
PU-1167 867 ;
PD222 867 ;
PD222 -646 ;
PD-1167 -646 ;
PD-1167 867 ;
SPO ; 初始几行的数据直到"SP1 ;"行均为图形打印时的设置数据,在广告字加工中无须使用,所使用的数据内容为"SPl ;"行开始到结尾的"SPO ;"行的中间数据部分(斜体显示部分),"PU"或"PD"后面紧跟着的两个数据为点的二维坐标信息,从某个"PU"(下划线部分)开始直到下一个"PU"位置或"SPO"的中间部分的点可以用线段连接起来构成一个独立的多边形图形,由于广告字的轮廓线均为封闭的,因此这些点所连接而成多边形也将是封闭的。从上述"回"字的plt文件中可以看出,该广告字由四个个独立的封闭的多边形构成,如附图3(b)及附图4(b)所示,正方形的点表示从plt文件中读出的原始数据点,
轮廓线则构成了独立的多边形图形。
封闭区域 考虑广告字的实际特征,它所包含的各个多边形均为封闭的,以附图3(b)的"回"字为例,蓝色的线即构成多边形图形,对于立体的"回"字来说,它有四个独立的多边形图形,而每个多边形都是封闭的,因此每一个多边形就构成了一个封闭区域,即是说"回"字包含有四个封闭的区域,而对于附图4(a)的"王"字来说,它只有一个多边形图形,因而只包
含有一个封闭区域。 填充面域 根据广告字的实际特征,它的表面一般由填充的部分以及镂空的部分共同组成,被填充的部分称之为填充面域。以附图3(b)的"回"字为例,它有四个封闭的区域,根据立体字的实际形状特征以及这四个封闭区域之间的位置关系,确定了由外部的两个封闭区域以及内部的两个封闭区域各自分别构成填充面域,附图3(b)中的白色的表面部分为填充面域,对于"回"字来说,它包含有两个填充的面域,而对于附图4(b)的"王"字来说,它包含有一个填充的面域。 下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
本发明由实现平台的搭建、三维模型的生成、模型显示三个主要部分构成。
1.搭建三维显示平台 方法的实现平台是由VC++以及0penGL共同搭建完成的,VC++用于构建系统整体框架、代码编写及编译,以及相关操作界面,0penGL图形库则用来实现广告字的三维显示。
2.三维模型的生成 附图5为广告字三维模型构建的流程图,下面结合该流程图详细介绍广告字三维模型的构建方法,主要包括以下几个步骤 (1)为了构建广告字的三维模型,所需的基本信息可通过其他图形绘制工具生成的Pit格式文件获得。使用常用图形绘制工具如CorelDraw等制作广告字,并将它们以pit的文件格式进行保存。 (2)根据前面所描述的pit文件格式可知,pit文件中仅包含了广告字顶点的二维坐标信息,并且将广告字分离的各个部分标明。读入指定的plt文件并进行解析,将广告字分离的各个部分所包含的点用线段进行连接,就可以得到了广告字中包含的若干个封闭的多边形图形,但这若干个多边形图形之间是完全独立的,相互之间没有任何关系,如附图7(a)、附图8(a)所示。 (3)为了进行广告字的三维立体显示,需要分析若干个封闭多边形之间的相互位置及嵌套关系,得到各封闭多边形与广告字的实体部分(即,字的填充部分)之间的关系(内侧或者外侧),从而确定整个图形中,哪些是广告字的实体部分,哪些不属于广告字的实体,从而构建广告字的填充表面,这些三维模型绘制所必需的信息则需要采用本发明中提出的算法进行解析,算法的实现步骤如下 i.将每一个封闭区域看作是一个对象,为它们进行编号,编号从O开始。
ii.设定封闭区域层级的标准,本发明中定义最外层的封闭区域层级为0,即该封闭区域不包含在其他封闭任何区域中,其层级为O ;定义次外层的封闭区域层级为l,即该封闭区域当且仅当被一个其他的封闭区域所包含时,其层级为l,即层级为1的封闭区域仅被层级为0的区域(最外层)包含,而被层级为1的区域包含的封闭区域必定被层级为O的区域包含,因此,除被层级0和1包含以外,未被其他区域包含的封闭区域的层级为2。依此类推,直到最内层封闭区域被定义层级为止。如附图7(a)、附图8(a)中所标的数字即为该多边形的层级。 iii.初始化所有封闭区域的层级为O。
iv.解析所有封闭区域之间的相对位置关系(包含与被包含或相互独立),判断一 个区域是否在另一个区域中方法如下考虑到广告字的轮廓线不存在交叉的现象,这里对 算法进行了简化,只需要判断某个封闭区域中其轮廓线上的某一点是否在另一个封闭区域 中即可,例如,如果封闭区域1的某一点在封闭区域2的内部,则表示封闭区域1被封闭区 域2包含。具体分析流程如下从编号O开始,依次取出广告字中的各封闭区域,判断所取 出的封闭区域是否被广告字中的其余的封闭区域包含,如果被包含,则区域的层级加l,若 未被包含,则保持区域的层级不变。依次分析广告字中所有的封闭区域与其余封闭区域之 间的关系,即可得到图形中所有的封闭区域的层级。具体流程如附图6所示。附图7(a)为 "回"字解析后各封闭区域的层级,附图8(a)为一个较复杂的图形解析后各封闭区域的层 级。 v.根据所得的封闭区域层级,可以判断出封闭多边形之间的相互位置及嵌套关 系,得到各封闭多边形与广告字的实体部分(即,字的填充部分)之间的关系(内侧或者外 侧),从而确定整个图形中,哪些是广告字的实体部分。根据广告字的实际特征,层级数为偶 数的作为实体部分的外侧,层级数为奇数的作为实体部分的内侧,因此将层级为0、1的封 闭区域之间进行填充,层级2、3的封闭区域之间进行填充,若某一层级为最大层级且其数 值为偶数,即表示该区域作为实体外侧向内填充,但内部不再含有区域,因此它的内部将完 全填充,以此类推,直到生成全部的填充面域。 (4)接下来根据生成的填充面域信息,进行三角形网格划分。在OpenGL显示中,不 能直接导入内外两层多边形并将它们中间进行填充,因此需要进行填充面域的网格划分, 将广告字表面划分成三角形网格。这里使用了 OpenGL提供的镶嵌功能,通过构建一个镶嵌 器对象并定义它的回调函数及实现方法,在分别指定内外边的边界点之后,可以通过该对 象来构建三维模型的填充表面的三角形网格,并进行显示,附图7(b)和附图8(b)分别为根 据附图7(a)和附图8(a)所示的各封闭区域的层级在我们的应用程序中进行填充后显示的 效果。 (5)此时生成的广告字模型是平面二维的,需要将该表面沿垂直方向进行拉伸构
建广告字的围边以创建广告字的三维实体模型,同时分别计算各顶点的法向量坐标、纹理
坐标以供三维显示纹理贴图以及开启光照功能,至此,就完成了广告字三维模型的构建工
作,如附图9所示。 3.模型显示及交互式操作 利用OpenGL工具实现屏幕上三维模型的显示及全方位观察。使用正投影的方式, 将顶点的三维坐标经过变换成屏幕坐标,再将提供的纹理图片依据点的纹理坐标通过纹理 映射贴到模型表面上,完成这些操作后,将模型映射到屏幕上进行显示,此时屏幕中将显示 一个带有纹理贴图的三维广告字模型。为模型创建变换矩阵,在显示窗口中,添加鼠标等交 互式操作,根据鼠标的操作类型以及OpenGL提供的矩阵变换函数实现模型的矩阵变换,由 于每一种矩阵变换表示了一种动作类型,如平移,旋转等,从而实现模型的全方位观察。附 图1为广告字三维建模的流程图。 以上所述的实施例,只是本发明较优选的具体实施方式
,本领域的技术人员在本 发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
权利要求
一种生成广告字三维模型方法,其特征在于,所述方法执行以下步骤步骤A读入指定的plt文件并进行解析,将广告字分离的各个部分所包含的点用线段进行连接,得到广告字中包含的若干个封闭的多边形图形;步骤B分析若干个封闭多边形之间的相互位置及嵌套关系,得到各封闭多边形与广告字的实体部分之间的关系,生成广告字的填充表面;步骤C对进行填充面域的网格进行划分,将广告字表面划分成三角形网格,并进行显示;步骤D将广告字的表面沿垂直方向进行拉伸构建广告字的围边以创建三维实体模型,分别计算各顶点的法向量坐标、纹理坐标以供三维显示纹理贴图以及开启光照功能。
2. 如权利要求1所述的生成广告字三维模型方法,其特征在于,步骤B中,执行以下步骤步骤1 :将每一个封闭区域看作是一个对象,为它们进行编号;步骤2 :定义最外层的封闭区域层级为O,定义次外层的封闭区域层级为1,即层级为1 的封闭区域仅被层级为0的区域包含,而被层级为1的区域包含的封闭区域必定被层级为 0的区域包含,除被层级0和1包含以外,未被其他区域包含的封闭区域的层级为2,依此类 推,直到最内层封闭区域被定义层级为止;步骤3 :初始化所有封闭区域的层级为0 ;步骤4:解析所有封闭区域之间的相对位置关系,判断一个区域是否在另一个区域中, 得到图形中所有的封闭区域的层级;步骤5 :根据所得的封闭区域层级,判断封闭多边形之间的相互位置及嵌套关系,得到 各封闭多边形与广告字的实体部分之间的关系,从而确定整个图形中,哪些是广告字的实 体部分。
3. 如权利要求2所述的生成广告字三维模型方法,其特征在于,步骤4中判断一个区域 是否在另一个区域中的方法为从编号0开始,依次取出广告字中的各封闭区域,判断所取 出的封闭区域是否被广告字中的其余的封闭区域包含,如果被包含,则区域的层级加l,若 未被包含,则保持区域的层级不变。
4. 如权利要求2所述的生成广告字三维模型方法,其特征在于,步骤5中判断实体部分之间关系的方法为层级数为偶数的作为实体部分的外侧,层级数为奇数的作为实体部分 的内侧,若某一层级为最大层级且其数值为偶数,即表示该区域作为实体外侧向内填充,但 内部不再含有区域,因此它的内部将完全填充。
5. 如权利要求1所述的生成广告字三维模型方法,其特征在于,步骤C中,使用0penGL 提供的镶嵌功能进行广告字表面三角形网格划分。
6. —种广告字的三维显示方法,其特征在于,所述方法包括以下几个步骤a :建三维显示平台使用¥0++搭建程序整体框架及相关操作界面,利用0penGL搭建 三维显示平台;b :执行如权利要求1所述的生成广告字三维模型的方法;c :采用0penGL作为3D程序接口来实现三维图形的绘制和渲染,实现模型的全方位观 察及交互式操作。
全文摘要
本发明提供了一种生成广告字三维模型方法,其特征在于,所述方法执行以下步骤步骤A读入指定的plt文件并进行解析,将广告字分离的各个部分所包含的点用线段进行连接,得到广告字中包含的若干个封闭的多边形图形;步骤B分析若干个封闭多边形之间的相互位置及嵌套关系,得到各封闭多边形与广告字的实体部分之间的关系,生成广告字的填充表面;步骤C对进行填充面域的网格进行划分,将广告字表面划分成三角形网格,并进行显示;步骤D将广告字的表面沿垂直方向进行拉伸构建广告字的围边以创建三维实体模型,分别计算各顶点的法向量坐标、纹理坐标以供三维显示纹理贴图以及开启光照功能。
文档编号G06T17/00GK101739897SQ20101001828
公开日2010年6月16日 申请日期2010年1月22日 优先权日2010年1月22日
发明者刘栋材, 尚文, 李相鹏, 钟俊, 颜钦 申请人:苏州领航自动化科技有限公司