基于UE4引擎的营造法式大木工艺可视化复原研究★

2019-12-20 01:11
山西建筑 2019年22期
关键词:法式蓝图可视化

杨 曙 光

(徐州工程学院,江苏 徐州 221008)

0 引言

虚拟可视化技术发展到今天,已经遍及到各个领域,相关的研究成果犹如雨后春笋令人目不暇接,特别是建筑文化领域相继出现了赵辰先生的虚拟江西庐山东林寺大殿大木作研究成果,陈薇教授对唐宋建筑的计算机演绎成果、以及故宫博物院的虚拟演示系统等,这些成果的出现为我国传统建筑文化的研究提供了新的手段和方法。《营造法式》(以下简称《法式》)作为传统建筑典籍也需顺应时代发展之潮流,以新的面貌和形式来展示其文化之精髓。

1 《法式》大木作建筑工艺的虚拟可视化可行性分析

《法式》是北宋时期将作监李诫组织编撰的由官方颁行的一部建筑设计学著作,其中大木作制度是《法式》最重要的内容之一。《法式》卷四开篇即提到“凡构屋之制,皆以材为祖。材有八等,度屋之大小,因而用之”[1]。这明确了构造房屋都要以材为根本,而对材的等级规定也表明了不同房屋类型和级别要有相应之材用之。也就是说明确了材的概念就可以推算出不同级别房屋和各构件数据,有了数据就可以在计算机进行模拟建模并进行编程。如今这些数据已经被我国的专家学者研究成功,如陈明达先生的《营造法式大木作研究》将大木作材份制、房屋的规模形式、各种构件的作用与规格都有明确的表述[2],潘德华先生的《斗栱》一书中,将斗栱的组合次序,各种分件的详细的尺寸数据都作了极为详尽的标注(精确到小数点后两位数)[2]。根据这些数据,在计算机里采用3dsmax进行建模,Unreal Engine4进行编程成为了可能。3dsmax是当今世界应用最广泛的建模软件,而Unreal Engine4引擎则随着绝地求生游戏的风靡而被熟知,它拥有超高的效能和画质。有了这些数据基础和技术基础作保障,再进行虚拟可视化研究就可以做到水到渠成。

《法式》大木作建筑工艺可视化复原要经历数据确定、虚拟建模、蓝图编程等三个阶段。

2 《法式》大木作之殿堂尺度和构件形制确定

《法式》卷四大木作制度第一条就开宗明义地说:“凡构屋之制,皆以材为祖,材有八等,度屋之大小,因而用之。”它所规定的八个等级对应“广”“厚”的用材范围和规格清晰地表明了材的大小是与房屋的规模相对应的,但是并没有屋顶的形式进行等级规定。由于在《法式》中多数以较高等级的举例来说明问题,因此本项目的虚拟房屋规模的选择是殿阁,用材第二等级,断面尺寸8.25寸×5.5寸(见表1),而屋顶的形式虽没有做明确的等级规定,但是在实际运用中已经有了等级次序(见表2),本案选择四阿殿(庑殿)顶。综上概括为:重檐庑殿殿阁七间十椽,副阶周匝各两架椽,身内双槽。殿身用二等材,副阶减一等为三等材。这是虚拟建模最基础最重要的一个环节,也规定了整个项目的规模。

表1 宋代屋顶等级[4]

表2 《营造法式》材等尺寸及取用[2]

“材份制”是整部著作的灵魂,根据等级规定了取值范围,又或间广不匀,即“每补间铺作一朵,不得过一尺”之表述,可见其规定并非是一成不变的,而是留有余量,无具体固定值可以借鉴。因此,间广(长)、椽架平长(宽)和柱高的确定只有利用相关的研究假说成果作为依据,本项目参照的是陈明达所著《营造法式大木作制度研究》研究成果以及华南理工大学黄存慧硕士论文的研究成果,最终确定殿阁用双补间,间广为375份(以二等材每份为0.55寸折合营造尺20.625尺),副阶面阔九间,除去稍间外,其他间广与殿身间广尺寸相同(折算二等材375份为三等材412.5份),副阶(三等材)深二椽,每椽平长120份,故副阶进深为三等材240份,即副阶梢间为三等材240份(折为二等材218.2份)。椽架平长为二等材130份,且等长。殿身进深为(130×10)1 300份。副阶二椽,椽架平长为三等材120份,折二等材109.1份。殿身平柱柱高二等材500份,副阶柱高三等材250份折二等材约227份。

综上,整个殿阁的三维空间就建立起来,下面就大木作构件斗、栱、昂、爵头四类铺作以及柱、额枋、梁、蜀柱、驼峰托脚、叉手、替木、檩和襻间、阳马(角梁)、椽和飞子(飞檐椽)等构件进行尺度确定。因本研究采用殿堂实例进行建模,故此铺作拟选用较高级别的七铺作重栱出双杪两下昂[5],里转六铺作重栱出双杪,并计心造[5];副阶采用五铺作重栱,出单杪单昂,并计心造[5];殿阁槽深约327份,身槽内铺作用六铺作。铺作构件尺度、形制在潘德华先生所著《斗栱》一书中有详细地记载,其他构件的尺度同样借鉴华南理工大学黄存慧硕士论文的研究成果(如图1~图3所示)。

至此,《法式》中较高等级的殿堂建筑的三维空间尺度,以及各构件的尺度和形制都已经确定,为下一步的建模工作奠定了基础。

3 《法式》大木作之殿堂的虚拟建模

虚拟建模是可视化复原的基础,现在比较流行的建模工具有AutoCAD,3dsmax,Maya,Sketch UP还有雕刻工具Substance,Zbrush等。本研究所选用的是使用最广的AutoCAD和3dsmax。在AutoCAD中,将上述工作中确定的殿堂间广(长)、椽架平长(宽)、柱高三维空间尺度,结合《法式》卷二十九大木作制度图样(下)确定殿阁地盘分槽(平面)、测样(立面),最后导入3dsmax。

3dsmax拥有极其强大的建模功能,特别是它的编辑多边形,配合编辑样条线相关的工具,几乎可以实现除特殊曲面和异形之外的任何图形[6]。长期的建模实践证明,利用样条线为基础建模起始点,往往是最方便、最灵活的建模方式,因此虚拟殿堂的建模流程是样条线—编辑样条线—挤出—转换为可编辑多边形,即通过对照地盘分槽(平面)、测样和柱高的方法(通常所讲的三视图)将殿堂三维空间建立起来。大木作构件中最复杂、最具有典型意义的是斗、栱、昂、爵头,这四类铺作的建模区别于上述的方法,直接在3dsmax里通过矩形作为参考标尺进行数据定位,通过编辑样条线再挤出三维图形,这种方法的好处是针对《斗拱》一书中不明确的数据关系,可以通过导入图片的方式进行描红,然后根据其他的数据按照比例推算出确切数据。建模时合理运用捕捉工具力求数据精确,但也难免有数据偏差,因此构件组合拼装就能检验出这些偏差,需要在拼装时对这些偏差进行修改和调整,常用的工具包括编辑多边形、编辑网格、FFD2X2等(如图4所示)。

特别要注意的是在3dsmax中建模一定要慎用Boolean,由于Boolean的算法不同,造成Boolean之后会产生很多无用的乱线和点,虽对整个模型外观没有太大影响,但是会大大加重渲染负担,影响体验。当必须要进行布尔运算时,应当首选Proboolean。所以在整个建模过程中,Boolean通常是不得已的最后选择。

另外,为了方便接下来的工作顺利高效的开展,顺利导入UE4游戏引擎,建模时还应特别注意以下几点:

1)3Dsmax单位设置为cm,因UE4游戏引擎默认单位是cm;最大化的精简模型面数和点数,多余的点、线、面、组务必要删除或移除;

2)因UE4有一套更加智能化的灯光系统和材质系统,因此在3dsmax中不需要设置灯光,也不需要编辑材质,只需要在默认材质上指定好贴图,加上贴图坐标调整满意即可;

3)利用Max自带UVW展开工具(也可以用第三方展UV插件),进行第二套UV展开工作,此套UV通常是指灯光UV;

4)模型转换为Mesh,坐标全部归零; 收集贴图到指定文件夹,采用英文路径。

完成以上工作以后,将模型导出FBX格式文件(采用CG工具箱专用导出插件更方便)。

4 《法式》大木作之殿堂的蓝图编程

蓝图(Blueprint)是UE4游戏引擎的可视化脚本,是一个完整的游戏脚本系统,其理念在基于节点的编辑中创建游戏可玩性元素,其工作原理是通过各种用途的节点构成图表来进行工作,这些节点包括针对蓝图每个实例的对象构建、独立的函数及一般的游戏性事件,然后使用连线把节点、事件、函数及变量连接到一起,从而创建复杂的游戏性元素[7]。本研究基于这种可视化脚本,通过第三人称实现拼装、拆解、旋转、孤立显示、实时显示名称、表格等交互信息。

4.1 自动拼装与拆解实现方法与蓝图

1)正确导入FBX文件,正确设置好材质属性。

2)设置模型坐标。新建蓝图类(Actor)拖入场景并复制若干,每一个类都嵌入一个不同的构件,再根据max文件的坐标对应设置好场景里的模型坐标。

3)拆分与组合蓝图编程。打开蓝图类进行拆分编程,所用到的节点是添加自定义事件(命名Chaifen),时间轴(TimeLine)和Set World Location,自定义Vector类型变量与TimeLine设置的时间函数相乘得到拆分X,Y,Z三维的数据,时间函数越大拆解的距离和持续的时间越大且实时更新[8],Chaifen自定义事件执行的命令是play from start。Zuhe自定义事件执行的命令是Reverse from End。

自定义(Chaifen和Zuhe)事件,新建蓝图Pawn(命名MyPawn)并打开,设置键盘输入事件“1”,执行分支判断(自定义布尔型变量作为条件接入),按下“1”键、当为假的时候执行FlipFlop节点并开始遍历场景中的所有类,循环完之后开始执行“Chaifen”事件,再次按下“1”键,按照同样的逻辑执行“Zuhe”事件。常用节点是键盘事件“1”、分支、FlipFlop,Get all Actors of class,For Each Loop。

4.2 自动旋转

1)设置鼠标控制事件。

新建Yaw,Pitch浮点型(Float)变量,添加Spring Arm和Camera组件。在My Pawn里分别输入坐标轴yaw事件和pitch事件分别执行Addcontroller Yaw Input,Add Controller Pitch Input节点,分支(Branch)判断(轴输出值不相等作为条件接入)为真的时候分别执行设置Yaw和Pitch变量。

鼠标左键事件执行时间轴0 s~2 s,执行序列节点,并与Yaw,Pitch两个变量相乘的结果分别接入Add controller Yaw Input,Add Controller Pitch Input节点。

鼠标滚轮轴事件,重点要得到Spring Arm实时更新的取值范围(200~1 500)作为条件接入分支,为真的时候执行设置Target Arm Length节点。

2)设置键盘事件。

执行FlipFlop节点A和B,按下“Z”键执行A,执行play from start时间轴节点,并将自定义0~500的取值范围输出到Add controller Yaw Input并执行旋转,再次按下“Z”键,执行FlipFlop节点的B,执行时间轴stop,将自定义0~500的取值范围输出到Add controller Yaw Input执行结束旋转。

3)双击孤立显示物体。

此交互功能实现的蓝图逻辑:鼠标通过序列同时执行两个命令,一是单击物体通过Line Trace By channel节点检测到物体,通过Convert Mouse Location To World Space节点进行世界空间鼠标和射线起始值,沿给定的线执行碰撞追踪,执行分支节点判断真或假[9],Out Hit接入Break Hit Result,从Hit Actor对象引用判断是否执行蓝图接口,最后作为条件接入分支。二是自定义整数型变量(鼠标按下次数)结合函数运算和Retriggerable Delay,执行分支判断真或假,再遍历每一个Actor,当与射线检测到的Actor不相等的时候执行真,执行设置可见性节点(Set Visibility)和世界坐标节点(Set World Location),执行时间轴的相机时间函数,最后赋值给孤立模式变量(新建布尔型变量)。再通过键盘事件B执行退出孤立模式(不再赘述)。

4.3 手动组装蓝图

此交互功能的实现要经历三大部分:

1)设置2D纹理渲染目标。添加Scene Capture Compont2D组件,从单一平面采集场景的一个“快照”并将其填入渲染目标,通过Texture Target选择设置常规2D纹理源用作渲染目标,从而新建且保存一个New Text tureRenderTarget2D[9]。

2)创建UMG控件蓝图(略),再创建自定义事件(shoudongzuzhuang)执行Set Visibility,获取变量start并分解其引脚为x,y,z三个输出值,z值单独相加120,输出到Set World Location并执行。其次创建自定义事件(Zuzhuang)执行Set Visibility、设置时间轴执行缓动函数节点,通过Get World Location设置向量A确定减缓起始值,通过变量start设置向量B确定减缓最终值,Alpha值确定减缓时间函数,Result(结果)实时更新新位置,最后执行 Set World Location,得到组装的实时世界位置信息。最后创建自定义事件(Tuichuzuzhuang)执行Set Visibility和Set World Location并通过变量start实时更新New Location。

3)输入键盘事件M,按下M键执行“手动组装”布尔型变量,显示UI控件,并通过遍历每一个构件的蓝图执行组装程序, 再次按下M键退出显示UI控件,退出组装程序(界面效果如图5所示)。

4.4 优化体验

虚拟可视化最终目的是营造出一个虚拟的具有极强沉浸感和代入感的可交互场景空间,因此需要在上述基础上添加控制声音节点,以及按钮音效等。虚拟可视化的声音是通过声音节点建外部的声音文件导入虚拟世界形成,只支持wav格式,常用节点:Play Sound 2D(播放声音无音量衰减),Play Sound at Location(以3D方式播放声音并可以设置音量衰减范围)[10]。按钮音效比较简单不再赘述。

4.5 最后打包和发布

最后发布到pc端,分别通过键盘“1”“Z”“B”“M”“O”执行建筑构件的自动拆分与组合、自动旋转、构件的孤立显示与退出、手动搭建与拆解构件模型、信息列表显示等实时交互功能。此外,鼠标事件执行构件的高亮显示和构件名称信息实时显示。

5 结语

《营造法式》大木作遵循的“以材为祖”的设计原则,许多专家和学者以此为依据作了许多深入而详尽的研究,并总结出“材份”模数制度,获得了许多珍贵的研究数据。项目将这些研究数据图像化和可视化,通过推演计算确定了地槽间广(长)、椽架平长(宽)、柱高三维空间尺度,并进行数字化建模。在UE4游戏引擎里实现大木作的自动旋转,构件孤立显示、拆分和组装,手动拆分和组装等交互功能,可以实时显示构件的名称及文字解释等信息,读者通过操作这一套虚拟可视化系统可以更加直观地学习到宋《法式》大木作的结构构成、构件形态与数据、拼接组合方式等建筑工艺的复原内容,同时,这种对传统工艺的虚拟可视化研究方法也可以为其他领域研究方法的创新提供一种新的可能。此外,因研究的深度和广度不足也难免出现一些数据错误和概念错误,期望在以后研究中能够继续完善,力求做到准确还原《法式》本义。

猜你喜欢
法式蓝图可视化
蓝图
基于CiteSpace的足三里穴研究可视化分析
思维可视化
五年蓝图
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
我们的健康新蓝图
影片《白日焰火》的法式表达
绘好国家级健康新蓝图
法式高腰伞裙,“遮肉与优雅”两得