刘媛,邓蓉
(1.衡阳师范学院“古村古镇文化遗产数字化传承”湖南省协同创新中心,湖南 衡阳 421002;2.衡阳师范学院 地理与旅游学院,湖南 衡阳 421002)
古城墙是古建筑的一部分,是城市的重要历史文化遗产,它不但勾勒出古代城市规整的布局,也体现居民最基本的安全需求与保障,并蕴含深刻的历史记忆[1]。为有效地数字化保护这类古建筑实体,需使用三维建模技术。常规情况有以下几类:第一类,对保存完整的历史遗迹大多数使用较为前沿的点云数据三维构模[2-4],该技术基于点集数据进行快速和精细的三维构模,但是仅支持整体输出,无法独立编辑处理,且以现有样本完整为前提,一旦数据缺失,无法较为智能地自动修复,只能呈现原本实体;第二类,依据手动三维建模软件,逐一通过量测数据或自我推测的资料进行三维建模,虽然对象可独立,但是操作复杂且效率比较低下,无法灵活处理内部细节要素的组合关系[5-6];第三类,借助CityEngine可以独立使用二维数据批量构建三维模型,且独特的规则驱动方法,受到诸多学者的关注,在古建筑的修复还原中得到推广与应用[7-12]。但是对于古城墙的三维快速模拟与修复,还未有系统化地研究和实践,如何有效地构建一套合理的古城墙建模体系,搭建道路与房屋建筑一体化的三维融合值得研究。
本文以楼兰古城的古城墙为例,通过CGA规则创建一套快速且能灵活生成多部件的古城墙三维建模方法,可智能调整样式,支持中国古代城墙的基本建筑结构与风格。同时该三维模型的实时动态交互调整有利于资料的多样化准备,能实现三维数据网络共享服务,为其快速调用提供便利。
楼兰古城是早期丝绸之路在西域地段的出入口与屯田中心,也是西域长史府的所在地。历经千年的风雨沧桑,由于遭受到自然和人为双重外力作用,城墙与城内的建筑都已破损不堪,只剩原始书籍中描述的空间布局。楼兰古城位于东经89°55′22″,北纬40°29′55″为不规则方城(见图1)。根据新疆考古研究所1980年的复原数据,东城墙长333.5 m,南城墙长329 m,西、北城墙各长327 m,周长1 316.5 m,总面积108 240 m2[13-15]。楼兰古城的建筑样式和布局,具有汉文化、本土文化和西方文化相融合的特点。
图1 楼兰古城平面(出自侯灿[13],1988)
因为古城墙受多种因素破坏,城墙的原始宽度和高度已不清楚,顺东北风势的南北两城墙相对来说保留较多些。北城垣留存有东西两段,之间有一缺口宽22 m,缺口两面都暴露出夯土层,在层与层之间夹杂着红柳芦苇枝,缺口似为北城门。南城垣中部也留存有东西两段,之间也有一缺口宽13 m,同为夯土层结构,基本上和北城垣的缺口相对应,似为南城门。西城垣的中部留存有南北两段,北端存有两个土墩,一个残留在风蚀台地上,一个离城垣复原线16.5 m,两个土墩之间距离4 m,似为瓮城遗迹。东城垣保留较少,偏南段七层有夯土,夹有碎陶片和垃圾物。城墙为夯筑,结构疏松。从这座古城残存城垣看,应该是古城最繁华时修筑的建筑,但是从厚薄不均的夯土层看,应不是一次建成的,而是经过多次分筑[16-19]。
考虑古城墙模型的特殊性,摒弃以往采用基于房屋Shape构建建筑模型的做法,拓宽道路Street的适用范围并充分发挥其独有的优越性,开展以道路规则构建楼兰古城墙的整体模型的研究。主要优势体现在:一方面,在CityEngine中道路规则提供有独特的路网类型结构设置,一般的道路可以简单自动区分为左人行道、主路面、右人行道、道路交叉口(如十字路口、T型路口)、路口连接点等多种类型,可以借助道路类型差别快速识别和构建不同古城墙的结构单元(见表1)。其中左人行道和右人行道需要根据绘制方向而定,本次以逆时针方向绘制,因此古城墙内侧的登城踏步、宇墙都是左人行道,反之,为右人行道。另一方面,因为古城墙细节参数的不确定性,可以较为灵活地变通城墙宽度、高度、排列方式等参数,便于友好调控。
表1 古城墙单元与道路自匹配规则关系
考虑不同道路的规则标识特征,对应识别出不同的结构单元,主要根据规则类别名进行主题划分:主路面、左人行道、右人行道、路口连接点。而相对细节对象将会使用特定路段属性字段或者使用样式管理来整体控制模型的生成。
城垣和城台都基于Street矢量主路面构建,将其利用切割函数按照V方向分成三段,两侧是城垣的城墙墙体和兵道,采用拉伸extrude函数抬升一定高度即可,高度设置为可变参数,实时变更调整;中间是城台的城门和城楼,由于资料记载中城门的位置具有不确定性,因此通过使用split函数实现对城门位置和宽度的同步控制,借助比例分割或者均值分割方式让城门口位置可任意调整,减少不必要的二次或多次返工。其中在形态特征上,独特之处在于城门与城楼的设计。
3.1.1 城门样式
城门主体轮廓为梯形,考虑到城楼上平面兵道的活动范围,城门超出道路宽度的部分以单坡顶补齐,在东、西、南、北四面城墙的正门都有进城的圆拱状入口。由于在以往的研究中大多数人认为CityEngine只能构建规则模型,无法直接生成圆弧,而采用3DMax中生成的模型替代。但通过CGA迭代斜坡面语法配合数学方法可以生成不规则圆弧模型(见图2),主要借助迭代的切割单元,逐一推算斜坡角度和拉伸高度,两者合并实现拱门生成。虽然算法较为复杂,但攻克次弧度的弊端,相比导入外部模型而言节省了储存空间,支持无缝匹配。北、南、东三侧的城门为同一样式(见图3),西城门外有瓮城,历史中,有两类不一的表达(见图4),样式一是在同一直线上的造型,参考巴音郭楞蒙古自治州博物馆想象复原模型;样式二为不在同一直线,参考楼兰博物馆沙盘模型。
图2 圆拱状入口代码和模型
图3 城门三维模型
图4 瓮城三维模型(左为样式一、右为样式二)
3.1.2 城楼样式
城楼是城市进城的象征,也用以瞭望御敌。城楼坐落于门洞之上,参考同时期汉代所建敦煌古城城楼样式,为一层双坡顶式高大建筑,城楼高度可实时调整参数变化,宽度随着城门的变化而变化。城楼前后仅有门,左右有门和箭窗。箭窗是以对称中心排列,数量随着城门宽度的变化而变化,以适应建筑物的合理布局,不会由于城门过宽或者过窄产生突兀;在箭窗与箭窗之间、门与箭窗之间夹有红色不规则圆柱,使用迭代函数构建而成。四面屋檐下皆有斗拱,是中国汉族修筑的特有的一种结构,采用外部模型导入替代。在东面屋檐下还高悬一块巨大匾额,上书“楼兰城”三个大字,为外部导入模型(见图5)。
图5 城楼三维模型(自绘)
城门相比城墙较宽,将与生成城门模型的Street矢量面平行的SidewalkLeft切空为城门腾出空间,两侧构建由城内上城墙的登城踏步,经研究分析,主要有三种样式(见图6):样式一是两侧有扶手的土堆垒砌,样式二是类似现代软梯以木架搭建,样式三是从城门旁侧而上。其中楼梯个数、倾斜角度、宽度、高度都能够根据参数任意调控。
图6 登城踏步三维模型(自绘)
与SidewalkLeft相似,将与生成城门模型的Street矢量面平行的SidewalkRight切空为城门腾出空间,两侧不同样式具有防御功能的薄墙为女墙,可以根据不同样式管理控制显示不同模型,其中垛口有瞭望洞在上和瞭望洞在下两种样式。多种预备方案尽可能还原楼兰古城原本的风貌。
对于城墙外围大量开垦的农田,由于留出来通往城内的道路必须随着城门的宽度和位置变化而变化,因此不同于以往绘制矢量面的方式,而是复制一个外城墙SidewalkRight的面,采用split函数与城门配套切割,采用shapeO,shapeU,shapeL和split函数实现农田范围内地块的不规整性和随机的树位置的不确定。
基于Sidewalk底面生成三维模型时,将四个节点处的SidewalkLeft和SidewalkRight采用长度识别的方法设为NIL,留下修改参数之后的Joint三角形矢量面,通过道路的特性识别构建方形和类似梯形两种样式的角楼。其中难点在于类似梯形样式的角楼,靠城墙两面为竖直向上,其他两侧类似梯形形状,整体为不规整形状。由于四个底面的轴向不同,首先需要属性识别城墙的四个角落,其中West和East为同一轴向,North和South为同一轴向,其次再使用envelope函数生成贴合城墙的不规整梯形(见图7)。
图7 角楼不同形态样式的三维模型(左侧规整型,右侧不规整型)
本文改进了城市建模软件CityEngine中Street Shape只适用于构建道路模型的局限,利用古建筑城墙的分类规律,搭建了对应的不同古城墙模型可调节的样式库,扩大其建模的适用范围,并利用自定义古城墙的CGA规则库能轻便地构建古城墙建模,效率得以提高,并能友好地上传模型分享讨论(见图8)。形成一套古城墙三维建模通用方法;其次,解决了诸多专家学者对于楼兰古城不确定问题,根据文献资料和不同专家学者的意见,我们可以拆分古城墙的各个部件,且设置可视化的参数接口,提供多样化兼容性的展示平台。让学者们能够共享自己的想法,提供立体真实的虚拟实物,支持开展更为有效快捷追溯讨论,为化解学者们的矛盾,兼顾尊重学者们的科研成果提供有力的技术平台。
图8 楼兰古城墙的网络分享
本文虽然支持古城墙批量、快速、高效、智能的模拟,但是对于垛口不同拐点的连接处理、拱门多层套环处理、以及具有西域风格或者其他多层次古城墙的控制与管理,仍然需要进一步研究与实验。