一种基于参数化设计的造型墙智能模板实现方法与流程

文档序号:12887412阅读:583来源:国知局
一种基于参数化设计的造型墙智能模板实现方法与流程

本发明属于计算机技术领域,涉及三维模型,为一种基于参数化设计的造型墙智能模板实现方法。



背景技术:

虚拟现实技术(virtualreality)是一项多学科交叉的综合性的技术,它构建了一个虚拟的环境,通过人机交互,为广大用户带来良好的沉浸感与真实感的体验。特别是在室内设计领域,虚拟现实技术不仅仅是一个演示的媒体,同时也是一个设计的工具。通过运用虚拟现实技术,设计师一方面能够将抽象的设计理念与方案转化为可见的设计效果,直观展现设计成果,另一方面也可以随时对于设计方案进行修改,非常方便,这样不仅能够降低设计成本,提高设计效率,同时也能让用户在三维的虚拟环境中对户型设计方案做多角度的,身临其境的体验,便于发现平面设计图中不易发现的问题。利用虚拟现实技术能够快速生成三维室内设计方案,而造型墙的设计是三维室内设计方案的重要组成部分。随着虚拟现实技术的发展,涌现出一大批优秀的室内设计软件,而造型墙生成效果的好坏直接成为衡量其设计效果的重要标准。

三维造型墙的生成技术的核心就是三维建模技术。三维建模即根据现实世界中所要建模对象的属性,通过相应的三维建模软件,得到对应的三维模型。三维建模的方法有很多种,如:多边形建模,nurbs建模,细分曲面技术建模等。每种建模的方式都有优点与缺点。其中,多边形建模技术是一种比较常用的建模技术,主要通过使用小平面来对曲面进行模拟,从而获得形状不同的三维物体。多边形建模技术的优点主要是能够方便迅捷的生成具有规则形状的对象,比如家装设计中的吊顶,地面,墙面等,这一特点使得大部分的主流室内设计软件中采用了这一建模方法。多边形建模的核心就是平面多边形裁剪。通过选取合适的算法,建立起二维平面与三维空间中点的对应关系。

在现实情况中,由于墙面造型的复杂多样,制作起来需要耗费设计师大量精力,如果能够将每次在墙面上所做的造型保存起来,等到下次对墙面进行造型的时候,直接使用之前已经做好的造型,或在之前所做好的墙面造型设计方案之上进行二次编辑,则可以大大降低墙体造型的设计成本,同时也使设计师能将更多的精力放在整体方案的设计上面。

中国专利申请cn105069226a《一种基于模板的三维造型建模方法》公开了一种造型保存方法,包括以下三个步骤:

1)建立三维模型

设定所需模型,基于多边形裁剪算法,采用挤压建模实现由二维平面轮廓到三维模型的快速生成;

2)建立模板

将步骤1)建立的三维模型的操作步骤保存为模板,将三维造型从二维编辑到三维拉伸的所有操作步骤按序作为节点保存在脚本文件中,通过保存节点信息的方式来保存这些操作,得到各个三维模型的生成模板,将所述生成模板存储至模板库;

3)利用模板技术快速生成三维造型

选取要搭建的三维造型对应的模板,根据模板自动生成对应的三维模型,完成三维造型。

该方案实施时,对于待生成的三维造型,先识别三维造型当前应用场景的尺寸大小,与保存的三维造型模板设计尺寸进行比较,获取比率值,然后将三维造型的模板的所有操作中有关尺寸都进行同比率放大或缩小来生成造型。该方法的问题在于,对于尺寸大小不同的应用场景,模板的造型是等比例进行缩放的,这在现实中是不合理的,应用场景的尺寸与模板并不一定成比例,容易导致造型与应用场景无法对应。在墙面上在进行造型的时候,为了满足施工工艺,需要墙面造型中图元满足相应的条件或者标准,如直线的长度,圆的半径,圆弧的弧度等。而在将墙面造型保存为模板并在新墙面上进行复现的时候,必须保持墙面造型中的图元的约束关系不变。这些并不是简单的等比例缩放的关系。

参数化设计技术是一项新兴的技术,被广泛用于cad制图与造型系统之中。经过几十年实践的证明,cad制图与造型系统在工程制图与三维建模方面十分有效。然而大多数的造型系统都存在柔性不足的问题。很多的cad造型系统所构造的模型仅仅是点线面信息的简单堆砌,只描绘出了模型的可视化的状态而不包含设计者的设计思想。因而难于对模型做出修改,或者修改后无法获得理想的模型。参数化设计技术的出现有效的解决了这一问题。参数化设计是指在模型定型以后,用一组参数去约束模型中几何图形的结构与尺寸序列,其中参数序列与尺寸序列存在较为显示的对应关系,这样就可以通过对参数序列的调整驱动模型自动做出合适的调整,所得到的结果的模型包含了设计信息与设计者的设计思想。参数化设计技术一方面使得设计者能够很方便的利用之前所做好的模型进行模型重建,另一方面也方便设计者能够在不违背设计者的设计思想与模型的设计信息的基础之上对模型做出修改。这样一方面大大提高了设计者的设计效率,另一方面也提高了模型的复用性与重用性。参数化设计技术的出现为设计思想带来了一场新的变革:即由原先不鼓励设计者对已有的模型做修改到鼓励设计者采用参数化设计技术修改模型。

参数化技术主要研究约束的满足与约束维护的方法,根据约束对象的不同,可以将约束分为三类:几何约束,拓扑约束与工程约束。其中几何约束是对模型中几何对象的类型,属性,定量,定位等方面的约束,用于保证模型中几何对象的构造与修改的有效性与可实现性。这样设计人员在设计的时候就可以通过几何约束表达设计意图而不需要考虑到其他的细节。拓扑约束指的是模型之中几何对象之间的拓扑位置的关系,工程约束指的是对模型功能,生产工艺,成本,产品性能等由设计者自行提出的要求或者指标。工程约束一般与几何模型不存在直接关系,需要经过约束的转换与传播转换为几何约束施加到几何模型之上。

本发明就是针对造型保存的需求,采用参数化设计技术,提出了一种智能模板的实现方法。



技术实现要素:

本发明要解决的问题是:墙面造型设计中,需要将每次在墙面上所做的造型保存起来,等到下次对墙面进行造型的时候,直接使用之前已经做好的造型,或在之前所做好的墙面造型设计方案之上进行二次编辑,以降低墙体造型的设计成本,同时在将墙面造型保存并在新墙面上进行复现的时候,必须保持墙面造型中的图元的约束关系不变。

本发明的技术方案为:一种基于参数化设计的造型墙智能模板实现方法,将设计好的墙面造型保存为模板,用于新墙面的设计,包括以下两部分:

1)约束关系的求解:

1.1)根据设计好的墙面造型列出约束方程,得到约束方程组;

1.2)墙面造型几何约束求解,采用数值计算方法对约束方程组进行约束求解,得到简化约束方程组;

1.3)用户附加约束求解,采用newton-raphson方法对简化约束方程组进行求解;

在完成简化约束方程组的求解后,即获得墙面造型中图元之间的几何约束关系;

2)约束的保存与解析:

将墙面造型中图元的几何约束关系保存为模板,所述模板为文本格式文件,模板由一系列结点构成,每个结点描述了一个约束关系,每个结点包括结点头、constraint和结点尾,结点头用于表示一个结点的开始,constraint表示造型中的几何约束关系,结点尾表示一个结点的结束,

当需要在新的墙面上复现所保存的墙面造型的时候,调用模板,以结点作为单位获取造型中的约束条件,根据结点头对文件中的信息进行解析,重建约束方程组,获取新墙面中墙面造型图元的几何属性,结合重建的约束方程组,建立相应的新墙面的约束方程组,对所建立的新墙面约束方程组求解,根据求解出的几何约束关系进行新墙面的墙面造型的绘制与生成。

作为优选方式,对约束方程组求解前,先进行一致性检测,将约束方程组进行分解判断:

首先设置三个变量i、unknownum和tempunknownum,i为计数器,初始值为1,unknownum表示经过步骤1.2)简化后的简化约束方程组中未知元素的个数,初始化值为约束方程组中未知几何元素的个数,tempunknownum为一个临时变量,用于实时记录约束方程组中未知元素的个数;

步骤一:首先在约束方程组中寻找未知数个数为i的方程,如果找到则执行步骤二,否则执行步骤三;

步骤二:对于步骤一中每个未知数个数为i的方程进行循环处理:将方程中i个未知变量保存到容器vector之中,在约束方程组中寻找i个未知变量与vector中保存的未知变量一致的方程,以此进行求解,将i个未知变量求解出以后,将含有这i个未知变量方程中的i个未知变量改为已知量同时执行步骤四,如未能找到i个未知变量与vector中保存的未知变量一致的方程则继续寻找下一个含有i个未知变量的方程;

步骤三:在约束方程组中寻找所有未知个数小于i的方程,组成方程组,若i个方程存在i个未知数,则这i个方程可以进行求解,求解之后执行步骤四,如果i个方程中的未知元素个数大于i则循环执行在约束方程组中寻找所有未知个数小于i的方程;

步骤四:根据当前约束方程组中未知元素的个数tempunknownum与i的关系,以及tempunknownum与执行当前约束方程组中未知元素的个数unknownum之间的关系分析处理:

1)若tempunknownum的个数小于i,表明约束方程组为欠约束状态,不再对约束方程组求解,需要重新列出约束方程建立约束方程组;

2)若tempunknownum的个数为0,则约束方程组的状态取决于未与当前i个未知元素匹配的方程的个数,如果未匹配的约束方程的个数为0则约束方程组为完备约束状态,否则为过约束状态;

3)若tempunknownum个数等于unknownum,则将计数器加1,即i=i+1,unknownum=tempunknownum,执行步骤一;

4)若tempunknownum个数小于unknownum,则置i=1,赋值unknownum=tempunknownum,执行步骤一。

进一步的,步骤1.3)具体为:

1.3.1)根据墙面的属性获取未知元素的初始向量x0[n],初始向量由简化约束方程组包含的所有未知元素组成,设置计数变量iter,初始化iter=0,设置最大迭代次数max;

1.3.2)x0[n]通过jacobian矩阵求解近似解向量x1[n],判断x0[n]-x1[n]的范数是否小于规定的误差范围;

1.3.3)如果小于误差范围,求解结束,如果不小于,将x0[n]赋值为x1[n],计数变量iter=iter+1,重新进行步骤1.3.2),直至iter>max,求解结束。

进一步的,步骤1.2)通过计算机程序实现约束方程组的获取及求解:根据基本造型确定约束条件,设计相应交互约束关系输入界面,将约束条件转化为约束方程,采用一个类对约束方程组中每个方程进行封装,封装约束方程组中方程的信息以及对于方程的操作。

本发明所讨论的墙面造型,其实质就是二维状态下一系列几何元素的集合。由于整个墙面造型中显然存在几何约束,拓扑约束与工程约束关系。如果能够将先前所做的墙面造型中的几何约束,拓扑约束与工程约束关系进行保存,当在新的墙面上进行造型操作的时候,可以根据所保存的约束信息进行求解获取新墙面造型中几何元素的属性,则在新墙面上所获得的造型中的几何元素与先前墙面上造型中几何元素的约束保持一致,从而就能够在新的墙面上得到满足原先设计意图的墙面造型效果,这样就能够实现墙面造型的复用。本发明根据这一目标提供了具体的实现方法。

进一步的,本发明提出的约束一致性判别算法一方面能够快速的实现对于约束方程组约束一致性的检测,另一方面也能够将较大的方程组分解成小的子方程组,从而对所分解的子方程组进行求解,提高整个方程组的求解效率。

相比现有技术,本发明具有以下有益效果:

1.将墙面造型中图元的约束关系按照一定的规范保存到模板文件中,当需要在新的墙面上复现所保存的墙面造型的时候,只要调用模板解析模块对模板进行解析,获取模板中所保存的约束关系,建立对应的约束方程组,并进行求解,最后得到墙面造型所需的几何元素属性,最终在待造型的墙面上复现墙面造型,并且保持墙面造型中的图元的约束关系不变。

2.提出一种分解排序约束方程组的方法进行约束一致性判断的方法,并将约束方程组细化为子方程组的集合,避免了图论方法中数据结构复杂,存储空间占用大的问题。

3.由于在墙面造型中,图元之间的约束除了几何约束以外,还存在有设计师或用户附加的约束,本发明就此对于约束方程组的求解,采用两个层次的方式进行,一个层次是结合墙面造型中的几何意义进行求解,另一层次即采用采用newton-raphson方法求解方程组。

附图说明

图1为本发明约束方程求导流程图。

图2为本发明中jacobian矩阵的求解流程图。

图3为本发明中用newton-rupson方法求解约束方程组的流程图。

图4为本发明基于参数化设计的模板制作流程图。

图5为本发明的优选方式,加入约束一致性判断的模板制作流程图。

图6为本发明利用参数化模板技术进行墙面造型操作流程图。

图7为复杂墙面造型示例图。

图8为图7的复杂墙面分解示意图。

图9为对应图7的复杂墙面造型模板应用图。

图10为不同场景下复杂墙面造型模板二维平面图。

具体实施方式

本发明所研究的墙面造型,其实质就是二维状态下一系列几何元素的集合,由于整个墙面造型中显然存在几何约束,拓扑约束与工程约束关系。如果能够将先前所做的墙面造型中的几何约束,拓扑约束与工程约束关系进行保存,当在新的墙面上进行造型操作的时候,可以根据所保存的约束信息进行求解获取新墙面造型中几何元素的属性,则在新墙面上所获得的造型中的几何元素与先前墙面上造型中几何元素的约束保持一致,从而就能够在新的墙面上得到满足原先设计意图的墙面造型效果,这样就能够实现墙面造型的复用。

本发明基于参数化设计,根据智能模板技术所要实现的预期目标,可知基于参数化设计技术的智能模板技术的核心问题一方面是对于约束的求解,另一方面是对于墙面造型约束关系的保存与正确的解析。目前主要约束求解方法分为三类:

(1)数值计算方法:该方法用一系列的非线性方程组f(x)=0表示几何约束,其中x={x0,x1.....xn}用于表征几何参数例如模型中几何元素的尺寸,几何元素的坐标等,f={f0,f1,f2....fn}用于表征几何约束关系,之后采用newton-raphson方法求解方程组。数值计算方法是参数化技术中常用的一种方法,其优点在于能够处理较为复杂的约束关系,其缺点在于约束求解的复杂性高,并且难以求解过约束与不完全约束的情况。

(2)基于图的方法:首先构造几何约束的图的表示,其中每一个几何元素用一个结点进行表示,结点之间的边表示几何元素的约束关系,对于所构造好的约束图采用图论中分割化简求解的方法进行处理,但此方法占用空间大。

(3)基于规则的方法:该方法与人工智能进行紧密结合,并利用了大量几何知识、重写规则或规则匹配技术来对约束集进行分析,从而避免了对复杂方程的处理。其缺点在于通用约束问题的求解能力的不足,因而很少被商用系统所采用。

结合上述算法的优缺点,本发明提出一种改进了的数值计算方法,用于实现对约束的求解。

针对智能模板技术中的另一个问题即墙面造型约束关系的保存与解析,则采用一种模板的方式进行解决。所谓的模板即是保存墙面造型约束关系的文件,将墙面造型中图元的约束关系按照一定的规范保存到模板中,当需要在新的墙面上复现所保存的墙面造型的时候,只要调用模板解析模块对模板进行解析,获取模板中所保存的约束关系,建立对应的约束方程组,并进行求解,最后得到墙面造型所需的几何元素属性,最终在待造型的墙面上复现墙面造型。

采用数值计算方法进行几何意义上的约束求解,首先需要建立约束方程组:在进行理论讨论的时候,可以根据实际墙面造型中存在的约束条件列出一系列对应的的方程进行分析,如果在计算机程序中实现,需要解决两方面的问题:一是根据所输入的约束条件获取约束方程组;二是需要以一定的形式对约束方程组进行表示。

针对问题一可以通过设计相应交互约束关系输入界面进行解决,这部分为现有计算机技术实现。对不同的基本造型来说约束关系确定方式也不尽相同,基本造型是指直线、圆弧、矩形等基本图元,墙面造型是由一系列基本造型构成的。例如对矩形造型来说其约束可以从矩形顶点,矩形的长宽来进行确定,而对圆型造型来说其约束只能从圆心,圆上的点和半径等方面进行确定。因此针对不同的基本造型需要设计不同的交互约束关系输入界面。

针对问题二约束方程组在程序中的表示,由于方程组中的每个方程都可以表示为其中ai表示第i项的系数,x0~xn表示约束方程组中的未知元,p0~pn表示方程中每一项未知元所对应的指数值,采用类cforuim对约束方程组中每个方程进行封装,其数据结构如下所示:

其中m_foruimitem是一个forumitem类型的序列,类forumitem用于表示约束方程中的每一项,其数据结构如下所示:

其中coefficient表示该项的系数,序列power中存储的是n个未知元在该项中的幂。

在类cforuim中封装了derivation函数,用于实现对约束方程的求偏导。求导实现的原理如下:对于多元函数关于某个自变量xi求导实际上需要对于函数的每一项分别关于xi求偏导,而构成函数f(x0,x1,x2…xn)的每一项均可表示成的形式,其中cj由每一项中系数与其他自变量共同构成,j=0,1,…,n。因此f(x0,x1,x2…xn)关于自变量xi求偏导可以采用式(1)与式(2)的方式进行:

上述用计算机程序实现的数值计算方法流程图如图1所示。

采用数值计算方法对约束方程组进行约束求解,得到简化约束方程组。

上述求解过程中,对于约束方程组,若待求元素的个数刚好与约束条件的个数一致,因而能够对约束方程组进行求解,这种情况就被称作约束完备。如果从约束方程组中的所有约束条件中减少或添加若干约束条件,则约束条件的个数与待求元素的个数不一致,就会出现欠约束、冗余约束或者过约束的情况。欠约束的情况是指约束条件的个数小于待求元素的个数,显然此种情况约束方程组无法求解。针对约束条件的个数多于待求元素的个数的情况,若多余的约束条件符合实际情况,但对于约束方程组的求解并无帮助,则这类约束称之为冗余约束;若多余的约束条件不符合实际情况,则这类约束称之为过约束。在生成整个约束图的过程中对于约束方程组的欠约束,过约束与冗余约束的检测称为约束一致性检测。

由于前述介绍的数值计算方法存在难以处理约束方程组过约束与欠约束的情况,并且在过约束与欠约束情况下显然无法得到墙面造型所需要的几何元素信息,因此过约束与欠约束情况在判明后,应予排除,不再进行求解。本发明提出的改进的数值计算方法,能够处理过约束与欠约束的情况,即以一种分解排序约束方程组的方法进行约束一致性判断的方法,并将约束方程组细化为子方程组的集合,避免了图论方法中数据结构复杂,存储空间占用大的问题。

由于约束一致性的问题实际上就是约束条件与几何元素的约束满足关系的问题,因此这里我们以二元约束满足问题作为讨论对象进行研究。设几何元素集合为集合a,约束条件集合为集合b,则约束一致性问题可以转换为下列三种情况:

(1)如果集合a中的元素都能够被匹配到集合b中,同时集合b中的元素也都能够被匹配到集合a中,则称这种情况下的约束为完备约束;

(2)如果集合a中存在有元素未被匹配,则这种情况下的约束就被称之为欠约束;

(3)如果集合b中存在有元素未被匹配,若此时集合b中的约束满足约束匹配图,则此时的约束被称为过约束反之则称为冗余约束。

考虑到约束方程组中存在变量是稀疏的,因此将约束方程组进行分解进行判断,整个算法分成四个步骤进行,整个算法如下:

首先设置三个变量i、unknownum和tempunknownum,i为计数器,初始值为1,unknownum表示经过步骤1.2)简化后的简化约束方程组中未知元素的个数,初始化值为约束方程组中未知几何元素的个数,tempunknownum为一个临时变量,用于实时记录约束方程组中未知元素的个数。

步骤一:首先在约束方程组中寻找未知数个数为i的方程,如果找到则执行步骤二,否则执行步骤三;

步骤二:对于步骤一中每个未知数个数为i的方程进行循环处理:将方程中i个未知变量保存到容器vector之中,在约束方程组中寻找i个未知变量与vector中保存的未知变量一致的方程,以此进行求解,将i个未知变量求解出以后,将含有这i个未知变量方程中的i个未知变量改为已知量同时执行步骤四,如未能找到i个未知变量与vector中保存的未知变量一致的方程则继续寻找下一个含有i个未知变量的方程;

步骤三:在约束方程组中寻找所有未知个数小于i的方程,组成方程组,若i个方程存在i个未知数,则这i个方程可以进行求解,求解之后执行步骤四,如果i个方程中的未知元素个数大于i则循环执行在约束方程组中寻找所有未知个数小于i的方程;

步骤四:根据当前约束方程组中未知元素的个数tempunknownum与i的关系,以及tempunknownum与执行当前约束方程组中未知元素的个数unknownum之间的关系分析处理:

1)若tempunknownum的个数小于i,表明约束方程组为欠约束状态,不再对约束方程组求解,需要重新列出约束方程建立约束方程组;

2)若tempunknownum的个数为0,则约束方程组的状态取决于未与当前i个未知元素匹配的方程的个数,如果未匹配的约束方程的个数为0则约束方程组为完备约束状态,否则为过约束状态;

3)若tempunknownum个数等于unknownum,则将计数器加1,即i=i+1,unknownum=tempunknownum,执行步骤一;

4)若tempunknownum个数小于unknownum,则置i=1,赋值unknownum=tempunknownum,执行步骤一。

该约束一致性判别算法一方面能够快速的实现对于约束方程组约束一致性的检测,另一方面也能够将较大的方程组分解成小的子方程组,从而对所分解的子方程组进行求解,提高整个方程组的求解效率。

由于在墙面造型中,图元之间的约束除了几何约束以外,还存在有设计师或用户附加的约束,因此对于约束方程组的求解采用两个层次的方式进行。

一个层次是结合墙面造型中的几何意义进行求解,在对约束方程组进行求解的时候,一方面能够进一步加快子方程的求解速度,简化方程组,另一方面也能够获取满足实际情况的正确解。

另一层次即采用采用newton-raphson方法求解方程组,在几何意义的求解基础上,用newton-rupson方法求解约束方程组的过程如图3所示。

1.3.1)根据墙面的属性获取未知元素的初始向量x0[n],初始向量由简化约束方程组包含的所有未知元素组成,设置计数变量iter,初始化iter=0,设置最大迭代次数max;

1.3.2)x0[n]通过jacobian矩阵求解近似解向量x1[n],判断x0[n]-x1[n]的范数是否小于规定的误差范围;

1.3.3)如果小于误差范围,求解结束,如果不小于,将x0[n]赋值为x1[n],计数变量iter=iter+1,重新进行步骤1.3.2),直至iter>max,求解结束。

其中,对于jacobian矩阵,可以采用差分法进行计算,但是差分法存在两个问题:一方面如果步长的选取不当,则矩阵的求取会失败;另一方面,偏导值的表达式不变,只是随着变量值的变化而发生变化,使用差分法求导会增大算法的计算量,降低算法的稳定性。因此在对非线性约束方程组进行求解的时候需要对jacobian矩阵进行处理,对jacobian矩阵的求解如图2所示,解决多项式的求导问题,包括三个问题:1)采用合适的数据结构对对约束方程组进行表示;2)根据jacobian矩阵的计算原理,需要约束方程组中每一个方程对不同的未知元素进行一次求导;3)根据导数求解的结果jacobian矩阵与jacobian逆矩阵,进而经过反复迭代求出求得约束方程组的解,这部分求解方法为现有技术,不再详述。

在采用newton-raphson方法完成简化约束方程组的求解后,即可获得墙面造型中图元之间的几何约束关系。

由前述讨论可知,若要实现墙面造型的复现,就需要将造型中的几何约束关系进行保存,这样当设计师需要在新的墙面上生成造型的时候,就不用再重头开始操作,只需要根据所保存的几何约束文件,重新建立约束方程,再进行一致性判断与求解,就能够在新的墙面上自动的复现原墙面中的造型。保存造型中约束关系的文件被叫做模板文件,采用文本文件格式,即以.txt作为文件后缀名的文件。模板文件是按一系列结点的方式进行组织的,每个结点包括结点头、constraint、结点尾。结点头用于表示一个特定结点的开始,constraint表示的是造型中的几何约束关系,结点尾表示一个结点的结束。不同的结点其constraint内容不相同,例如一个三角形结点,其constraint中应包含三角形的三边长度、边与墙面边界ab的平行关系以及某一顶点在墙面中的相对位置信息;而对于一个圆形结点,其constraint中应该包含圆心点在墙面中的相对位置信息与圆上一点相对圆心点的相对位置信息。模板文件采用这种组织形式拥有很大的自由度,因为除了不同的造型可以采用不同的constraint以外,对于同一造型也可以采用不同的constraint,非常的灵活。例如对于圆结点,其constrant可以改为包含圆心点在墙面中的相对位置信息与圆的半径,这样生成的模板文件在新墙面上使用的时候能够得到与原始墙面一样的造型效果。因此在采用交互式输入约束关系的时候,可以同时兼顾约束方程组求解的需要和设计师在进行墙面造型设计时的习惯,从而设置合适的constraint。即使采用了不同的constraint,也无需对约束方程组一致性检测模块与方程组求解模块进行修改,程序能够正常的对模板文件中进行解析,并能够正确的处理约束方程组。

当需要在新的墙面上重现模板文件所代表的墙面造型时,可以通过对保存墙面造型约束关系的模板进行解析,依据所得到的信息建立对应约束方程组再自动生成墙面造型,具体的流程如下:首先打开墙面造型模板文件,调用文件读取函数fscanf对模板文件进行逐行读取,读取函数fscanf是c语言标准库的文件读取函数,以结点作为单位获取造型中的约束关系,根据结点开头中的名称,调用相应的处理函数,对文件中的信息进行解析,在保存时每个类型的结点都会有自己对应的一个读取函数与解析函数,先读取结点信息,再对其进行解析,获得约束关系。由约束关系重建约束方程组,获取新墙面中墙面造型图元的几何属性,两者结合后建立相应的新墙面的约束方程组;在获取模板文件中约束信息并建立对应的新墙面约束方程组后,同之前一样对所建立的约束方程组进行约束一致性的判断以及求解;在求解完成后,调用图元绘制模块与墙面造型模块根据求解出的几何约束关系进行墙面造型的绘制与生成。

整个基于参数化设计的模板制作流程可用图4所示的流程图进行表示。

本发明还提出了一种改进的数值计算方法,其体现在增加了约束一致性的判断,能够针对约束方程组的过约束与欠约束情况进行有效处理。加入约束一致性判断的模板制作流程如图5所示的流程图所示。

基于参数化模板进行墙面造型的流程可用图6所示的流程图进行表示。

在实际情况中,墙面造型往往很复杂,如图7中所示的复杂墙面造型。如果以墙面造型整体作为对象获取约束方程组,并进行一致性判断与求解,则由于涉及的未知元素个数与约束关系过多,导致整个处理过程过于复杂。由于任意一个复杂的墙面造型都可以分解为一系列的简单造型图元,如果以分解后的简单造型图元作为对象,建立约束方程组并进行一致性判断与方程组求解的工作这样能够大大降低问题规模与复杂程度,同时提高了程序运行效率,并降低了算法的时间复杂度。以模板的方式在4500×3000m2与6000×3500m2的墙面上实现图7中的墙面造型,探讨对于复杂墙面造型的处理。

首先将墙面造型分解成简单造型,分解的结果如图8(a)所示,由观察可知,图7中的造型由一种基本图元构成,对该图元做进一步的分解,得到结果如图8(b)所示。因此对于图7中墙面造型的处理就转换成了对图8(b)中的直线段与弧线段的处理。其中直线段以直线段的长度,线段的一个端点相对墙面顶点的位置偏移信息以及直线段与水平方向的夹角作为约束条件,而弧线段则则是以圆弧的圆心,半径以及圆弧的角度作为约束条件。将分解后所得到的直线段与弧线段的约束信息写入模板文件中。

当需要在待造型墙面上实现图7中的墙面造型的时候只需要对模板文件中的约束信息进行解析,并建立约束方程组,其中直线结点对应的约束方程组为:

其中xa,xb分别为直线段的两个端点l为直线段的长度,xv与yv为选中的墙面顶点vertex的坐标值,xoffset与yoffset为偏移量,α为直线与水平方向的夹角。

圆弧结点对应的约束方程组如下所示。

其中xp,yp为圆弧起点的坐标,xq,yq为圆弧终点的坐标xo,yo为圆弧的圆心,r为圆弧的半径α为圆弧的角度,xoffset与yoffset为点p距墙面顶点vertex的偏移量,x’offset与y’offset为圆心o距墙面顶点的偏移量。

对获取的约束方程组的一致性检测并对方程组进行求解,就能够实现在新的墙面上自动造型的功能。图7中的墙面造型在不同墙面上生成的效果如图9所示。图9(a)为4500×3000mm2墙面通过导入模板所生成的造型,图9(b)为6000×3500mm2墙面通过导入模板所生成的造型。图7中的造型在4500×3000mm2墙面与6000×3500mm2墙面上的二维平面效果如图10所示,(a)为4500×3000mm2墙面,(b)为6000×3500mm2墙面。从标注的尺寸可以看出造型中图元的主要数据均未发生变化,生成的造型没有发生变形,与预期的效果一致。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1