明清古建筑信息模型设计平台研究
2013-09-21孙卫新徐东东
王 茹, 孙卫新, 徐东东
(西安建筑科技大学土木工程学院,陕西 西安 710055)
古建筑不仅有很高的历史价值、艺术价值,也有很高的科学价值,是研究历史科学的实物例证,也是新建筑设计和新艺术创作的重要借鉴。但是,随着时间的流逝,现存的古建筑受到不同程度的损坏。目前对古建筑的保护研究主要体现在“三维扫描点云处理技术”、“参数化建模技术”和“基于三维模型的三维动画演示和虚拟现实研究”等方面。在点云数据精简算法方面,Lee K H,Woo H, Suk T提出了三维网格精简算法[1],王茹教授等提出了基于聚类平面特征的点云数据精简算法[2]。在建模方面,MULLER P,ZENG Gang,WONKA P提出基于校正图生成的过程模型[3]、DUZhi-qiang, LI De-ren, ZHUYi-xuan提出基于3DGIS的建模系统[4]以及陈越、王婉等提出的参数化建模方法[5-6]。文献[7]用多媒体技术演绎了唐宋建筑,文献[8]利用虚拟现实技术复原了龟山汉墓。以上研究较好的实现了古建筑的工程模型或表面模型的三维重建,但是信息技术的快速发展,为古建筑模型及构件添加必要的信息,对古建筑的信息化保护、修复有很重要的意义。
本文基于国家自然科学基金项目“基于BIM的明清古建筑数字化保护与修复方法研究”为背景开发了明清古建筑信息模型设计平台,主界面,如图1所示。本系统为古建筑构件参数化信息模型库的建立和管理提供了基础平台,以信息模型的方式存储现场测量的数据,支持信息的扩展功能。理论上可以包含有关古建筑的所有信息,既可以为古建筑的修缮和复原提供准确的信息,又可以为古建筑的研究提供历史资料。利用该古建构件信息模型建立的古建筑虚拟现实系统,可以展示更多的关于古建筑的历史人文信息。
图1 明清古建筑信息模型设计平台主界面
1 古建筑构件参数化建模研究——以斗栱为例
图2 古建筑构件建模过程示意图
系统建模过程,如图2所示,根据古建筑构件内在结构规律,总结参数化建模需要的关键参数,并设计输入界面由用户输入这些关键参数。在总结每类古建筑构件关键参数的基础上,将生成古建筑构件所需要的其他参数与关键参数的关系存入数据库,用户输入某古建筑构件的关键参数后,系统将在构件参数数据库中检索生成该构件三维模型的其他所有参数。本建模系统另一个重要的数据库就是构件结构规律数据库,在该数据库中存储了古建筑构件的结构层次、部件名称及形状等结构信息。建模系统将根据参数数据及结构规律信息调用相应的函数创建三维模型,同时由数据库操作函数将各个部分的名称、尺寸及结构信息写入三维模型。当再次打开信息模型时,图形数据库操作函数将读取信息模型中的相关信息,并在用户界面中显示。
斗拱在中国古建筑木构架体系中占有非常重要的地位,是中国古典建筑体系中重要且极具特色的建筑构件。经过几千年的发展历史,斗拱的形制以及各个横纵构件的尺寸日臻完善和规格化。清式斗拱种类繁多,构造复杂,但各类构件各自的尺寸以及构件之间的组合是十分有规律的。清《工程做法则例》对斗拱的的形制、比例、细部规格做法等都有着十分明细精确的记载。本系统支持斗栱参数化建模的类型分为内檐斗栱和外檐斗栱两类,内檐斗栱主要包括襻间斗栱、品字科斗栱、隔架斗拱,外檐斗栱包括平身科斗栱、柱头科斗栱、角柱科斗栱、溜金科斗栱以及平座科斗栱。如图3所示,选择“斗栱”菜单下的“外檐斗栱”子菜单,然后选择“平身科斗栱”命令,可弹出如图4所示的对话框。本系统创建斗栱的关键参数为斗口尺寸和斗栱样式,确定了这两个参数后,根据图2所示参数化建模过程,点击“创建模型”按钮即可创建斗栱模型如图5所示。
图3 斗栱参数化建模菜单
图5 斗栱参数化建模
2 古建筑构件信息模型附加信息研究——以斗栱为例
本系统按构造信息、材质信息、物理信息、油漆彩绘信息和说明备注信息五个选项卡存储斗栱模型的信息,如图5所示。在每个选项卡下,系统预先设置了一些信息,用户还可以根据需要定制每个选项卡下的信息。系统根据用户选择的斗口尺寸和斗栱样式,在构造信息选项卡下自动生成了斗栱的构造层次以及各个构件的安装位置信息,如图6所示。点击列表中的构件可以弹出构件尺寸对话框,如图7所示。需要说明的是,该选项卡中的构造信息以及尺寸信息与斗栱模型建立一一驱动关系,改变选项卡中的构造或是尺寸信息,都将会引起模型的相应改变,相反,
改变模型中的尺寸或构造关系也会引起选项卡中相应项的改变。此功能可方便古建筑的测绘工作,可方便地将测绘数据转换成三维信息模型。
图6 斗栱的构造信息选项卡
图7 坐斗尺寸信息
油漆彩绘信息选项卡下,设置了古建筑构件油漆和彩绘方面的信息。这些信息主要与斗栱信息模型的材质和贴图渲染建立驱动关系,如图8所示。古代斗栱的彩画主要包括斗栱部分和垫栱板两部分。根据用金量、退晕层次和等级规格的不同,斗栱部分可分为烟琢墨斗彩画、金琢墨斗彩画和浑金斗栱彩画3种;垫栱板部分可分为大木为和玺彩画、大木为玄子墨线大点金彩画和大木为高等苏式彩画3种。另外斗栱的画花花样如夔龙、墨线等也反映古建筑的类型及建筑等级,这些信息都可以在油漆彩绘信息选项卡中存储。
图8 油漆彩绘信息选项卡
材质选项卡主要用于显示或输入与材质有关的信息,如图9所示。古代斗栱的主要用材是木材,如杉木、松木等针叶树材和柞木、香樟、
图9 材质信息选项卡
楠木等阔叶树材。系统预先添加的材质信息主要包括经济技术成本和处理难度两个方面,经济成本主要指木材的市场价格、加工运输难度、施工难度、使用寿命和维修成本等方面的信息。
图10和图11为斗栱的物理信息选项卡和说明备注信息选项卡,物理信息主要是指材料的物理力学性质,这些信息可用于对斗栱进行力学计算与分析时使用。说明备注信息想模型中添加一些历史人文方面的信息。
图10 物理信息选项卡
图11 说明备注信息选项卡
3 古建筑信息模型设计平台的实现
3.1 古建筑信息模型设计平台的系统框架
古建筑信息模型设计系统框架,如图 12所示。我国古建筑的一个特点是由千百个大小、形状各异的单个构件组成,并且各个构件按照一定的规律进行组装,宋代的《营造法式》和清代的《工程做法则例》中规定了各个构件的构造特征及整体的组装规律,本系统正是在此基础上设计而成,其具体特点如下:
1) 系统构建了两种方式建立古建筑三维模型,一种是软件本身的参数化建模,另一种是直接导入dwg或dxf格式的模型。其中参数化建模提供手工输入参数、测绘数据的导入以及三维扫描点云数据的导入3种参数输入方式。
2) 古建筑构件的信息直接存储在图形数据库中,信息作为模型的一部分进行存储。信息的生命周期等于模型的生命周期,任何时候打开模型都能读取其上存储的信息。
3) 本系统采用扩展数据存储信息的字段信息,采用扩展字典存储信息值,从而实现信息存储的扩展性和可定制性。用户不仅可以向数据库中添加记录而且可以添加信息字段。
4) 信息与古建构件模型建立驱动关系,信息值的改变自动驱动模型的改变。
5) 本系统支持多种数据格式,可以与常用的BIM软件进行通信。
6) 模型检索模块,实现基于图形数据库的三维模型检索算法,检索字段为模型中的附加信息,使检索更加准确。
7) 组装模块基于古建筑构件本身的安装位置信息和古建筑整体的结构信息实现,是古建筑建造规律的体现。
图12 古建筑信息模型设计平台的系统框架
3.2 图形数据库研究
本系统建立在AutoCAD图形数据库之上,图形数据库结构,如图 13所示。根据图形数据库的结构可知,给实体追加附加信息可以通过扩展数据和扩展字典来实现。扩展数据能被添加到任何实体上,它由一个结果缓冲区链表组成,并且随图形一起被保存。但是,每个实体中附加的扩展数据不能超过16K[10]。扩展字典也是隶属于特定的实体,但是,每一个实体只能包含一个扩展字典。它为实体保存自定义数据提供了一种途径。扩展记录与扩展数据类似,但是,其数据存储量和能够存储的数据类型都要多于扩展数据。扩展记录可以保存到实体的扩展字典中。
任何一个应用程序都能将扩展数据附加到实体上,因此,所有的扩展数据都需要一个惟一的应用程序名称,该名称不能超过 31个字符。为了注册一个应用程序,可以使用全局函数acdbRegApp()。AcDbObject类的 setXData函数用于设置一个对象的扩展数据,其定义为:
图13 图形数据库结构
要利用扩展字典保存与实体关联的数据,可以使用 createExtensionDictionary()函数为实体建立扩展字典。如果实体已经包含扩展字典,该函数的调用不会产生影响。AcDbDictionary对象的setAt()函数,可以为字典添加一条扩展记录。如果添加了扩展记录,就可以利用 acutBuildList()函数构建一个保存数据的结果缓冲区链表,然后使用setFromRbChain()函数将结果缓冲区链表添加到扩展记录中,这样就把数据附加到实体上了。如果要访问扩展字典中的扩展记录,可以使用 extensionDictionary()函数获得实体的扩展字典,然后通过字典的getAt()函数得到指定的扩展记录,使用AcDbXrecord类的rbChain()函数得到保存数据的结果缓冲区链表,遍历该链表可以获得保存的数据。相关函数的定义如下:
3.3 利用扩展数据存储信息字段
本系统利用扩展数据,存储古建筑构件信息选项卡和每个选项卡中的字段信息,如图 14所示。以斗栱为例,其信息选项卡包括:构造信息、油漆彩绘信息、材质信息、物理信息、说明备注信息。构造信息选项卡下的字段信息包括:构造层、结构名称、安装信息、数量;油漆彩绘信息、材质信息、物理信息和说明备注信息选项卡下的信息字段都包括信息类型和信息值两个字段。
图14 利用扩展数据存储信息字段
对扩展数据操作的两个关键函数是添加扩展数据函数 AddXData()和读取扩展数据的函数ReadXData()。两个函数的实现如下:
3.4 利用数据字典存储信息值
本系统利用扩展字典来存储古建筑构件的所有信息,以斗栱为例,其扩展字典数据结构,如图 15所示。对扩展字典操作函数也主要是向扩展字典中添加数据和读取扩展字典中的数据,即AddXrecord()函数和ReadXrecord()函数。其实现关键代码如下:
图15 利用数据字典存储信息值
3.5 古建筑信息模型组装
点击菜单栏中的“组装”,可弹出古建筑信息模型组装对话框。在对话框中主要确定古建筑的主体参数、开间数据、步举架等基本参数,以及设置从构件库信息模型中搜索构件模型的参数。确定了这些参数之后系统将自动根据古建筑建造规律组装成古建筑信息模型,如图16所示。
图16 古建筑信息模型组装图
4 结 论
本文通过对明清古建筑构造特征及其包含信息的分析实现了古建筑信息模型设计平台的开发,为古建筑构件参数化信息模型库的建立和管理提供了基础平台,同时方便将古建筑的测绘数据转换为三维模型。本系统支持信息的扩展功能,理论上可以包含有关古建筑的所有信息,既可以为古建筑的修缮和复原提供准确的信息,又可以为古建筑的研究提供历史资料。本系统模型的建立,为建立更为精细、真实、并附带大量历史人文信息的古建筑信息模型提供了良好的技术平台。
[1]Lee K H, Woo H, Suk T. Data reduction methods for reverse engineering [J]. The International Journal of Advanced Manufa-cturing Technology, 2001, 17(10):735-743.
[2]王 茹, 周明全, 邢毓华. 基于聚类平面特征的三维点云数据精简算法[J]. 计算机工程, 2011, (10):249-254.
[3]Muller P, Zeng Gang, Wonka P, et al. Image-based procedural modelingoffacade [J]. ACM Trans on Graphics, 2007, 26(3): 85.
[4]Du Zhiqiang, Li Deren, Zhu Yixuan, et al. 3DGIS-basedrecon-struction and visualization oftimber-frame building cluster [J]. Jour-nalof System Simulation,2006, 18(7): 1184-1189.
[5]陈 越.中国古建筑参数化设计[D].重庆: 重庆大学, 2002.
[6]王 婉, 谢步瀛. 中国古代宫殿建筑参数化设计与三维建模[J]. 东华大学学报(自然科学版), 2008,34(3): 270-273.
[7]陈 薇. 用多媒体技术演绎唐宋建筑[J]. 东南大学学报(自然科学版), 2002, (3): 383-386.
[8]邵亚琴, 汪云甲, 刘 云. 基于虚拟现实的龟山汉墓虚拟重建研究[J]. 测绘通报, 2008, (2): 11-15.
[9]王 茹. 古建筑数字化及三维建模关键技术研究[D].西安: 西北大学, 2010.
[10]李长勋. AutoCAD ObjectARX程序开发技术[M].北京: 国防工业出版社, 2005.