MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 面向真实构建的徽州建筑快速建模方法
  软件学报  2016, Vol. 27 Issue (10): 2542-2556   PDF    
面向真实构建的徽州建筑快速建模方法
李尚林, 李琳, 曹明伟, 刘晓平     
合肥工业大学 计算机与信息学院, 安徽 合肥 230009
摘要: 快速建筑建模研究领域追求的目标包括模型的高精度、构建的高效率,以及对用户领域知识要求低、交互简单,而这往往互相矛盾.为了解决这些问题,提出了一种基于组件的多层参数建模方法,使用概率网络描述建筑和组件的高层参数,作为友好的用户交互接口;使用规则库描述组件低层参数,以指导高层参数生成低层参数;最后使用构建模板描述建筑构建过程.基于此,实现了徽派建筑自动营造系统,能够较好地完成具有真实构建流程、高精度徽派建筑的快速建模.实验结果表明了所提方法的实用性和有效性,且系统具有友好、简单的交互方式,扩展性好,用户无论是否具备领域知识都能获得良好的用户体验.
关键词: 快速建模     过程建模     参数化建模     徽州建筑     概率网络    
Construction-Oriented Rapid Modeling Method on Huizhou Architectures
LI Shang-Lin, LI Lin, CAO Ming-Wei, LIU Xiao-Ping     
School of Computer and Information, Hefei University of Technology, Hefei 230009, China
Foundation item: Foundation item: National Natural Science Foundation of China (61370167); National Science and Technology Support Program (2012BAJ08B01); Anhui Province Science Foundation for Youths (JZ2015AKZR0664); Science and Technology Project of Anhui Province (1401b042009)
Abstract: Rapid architecture modeling often has many conflicting goals, including high precision, high efficiency, simple user interaction, and low demand for user domain knowledge. To solve this problem, a component-based multi-level parameter modeling method is proposed. First, probabilistic network is used to describe the high-level parameters of the architecture and components as a friendly user interface. Then, rule library is used to describe the low-level parameters of the components and to guide the generation of low-level parameters from high-level parameters. Finally, construction template is used to describe the construction procedures of the architecture. Based on these groundworks, an automatic Huizhou architecture building system is implemented to provide rapid Huizhou architecture modeling with real construction process and high precision. The experimental results demonstrate the practicality and effectiveness of the proposed method, showing that the system delivers simple and friendly interaction, good scalability, and good user experience.
Key words: rapid modeling     procedural modeling     parametric modeling     Huizhou architectures     probabilistic network    

建筑相关的快速建模方法的研究, 随着旅游、动漫、游戏、虚拟漫游等技术的迅速发展, 逐渐成为计算机图形学和虚拟现实领域的研究热点.尤其是在古建筑的数字化遗产保护、历史文化推广等领域, 建筑建模更具有实际的意义.中国古建筑中的徽州建筑是中国传统民居的重要流派之一, 其独特的风格与卓越的成就成为中国建筑历史浓墨重彩的一页, 是宝贵的古代文化遗产.徽州建筑具有强烈的建筑风格, 无论是使用传统的CAD软件, 还是建模软件进行建筑建模, 不但需要专业的建筑领域知识, 而且还存在高成本、低效率等问题, 并不适用于大规模的快速建模.为了解决这些问题, 国内外学者提出了一系列方法以使得建筑建模具有自动化、快速化和智能化.在目前已有的快速建模方法中, 有的仅适用于特定类型的模型, 有的过于依赖用户对其预处理或者需要大量交互.结合徽州建筑的特性, 本文提出了一种使用多层参数控制的快速建模方法, 使用推荐系统和规则库完成模型的快速自动构建.在此基础上实现的徽州建筑自动营造系统具备真实的构建流程和丰富的建筑内部细节, 其交互接口简单清晰, 没有任何领域知识的用户能够通过简单的交互快速构建具备高精度的徽州建筑模型, 适用于徽州建筑教学研究、文化遗产数字化保护等领域.

1 相关工作

建筑快速建模早期的一个流派是基于图像, 尤其是基于大量的航拍图像[1].这种方法的建模精度往往不高.另外一种流派的灵感来源于2D纹理合成, 其做法通常是基于样例, 结合几何约束规则来进行快速生成, 典型的如Funkhouser[2].Merrell[3]扩展了2D纹理合成的技术, 提出了一种基于样例的、通过全局搜索实现多样化建筑生成的方法, 其最大的局限在于需要对每个建筑模块进行精细的空间分解, 一方面预处理相对较复杂, 另一方面有些精细的建筑构件做分解会很困难.Liu[4-6]提出了一套本体论思想, 并发展了一系列方法应用于江南民居和古建筑上, 其基于形状语法、语义建模的方法使得用户的交互更加简单和高效.

在现代虚拟现实系统的应用中, 积木化可重用部件组装是提高系统开发效率和可靠性的一种途径[7], 该思想广泛应用于快速建模领域.如Birch[8]通过将建筑模块参数化来实现大量建筑体的快速建模, 取得了很好的效果, 然而建筑模块的参数获取与修改需要通过较为繁琐的交互, 其自动化和智能程度较低.Müller[9]在L-System的启发下采用分裂语法(CGA)和智能算法进行城市建模, 成功地应用于重建被破坏的史前古罗马建筑中.Schwarz[10]扩展了上述语法(CGA++), 通过引入事件机制, 使之能够协调处理多个模型.Merrell[11]提出基于约束的快速建筑建模方法, 但其要求建筑的网格结构符合一定规则, 因此该方法适用于游戏中, 在真实建筑建模中并不适用.薛[12]采取约束规则库的做法对模块间的约束规则进行总结, 使用广度搜索对参数化的模块节点进行搜索, 并将其方法应用在了徽州建筑的快速构建上.

随着机器学习在各个领域的广泛应用, 通过从数据中学习规则以及引入机器学习方法来指导建模的方法开始出现.在以手绘识别为代表的方法中, Chen[13]提出“草图现实”方法, 通过草图提取特征来匹配数据库, 取得了一定成果; Hou[14]提出一种通过识别用户手绘的中国古建筑正视图来生成三维模型的方法.然而, 基于手绘的方法最大的局限性在于其仅限于具有较高领域知识和手绘技能的用户.Huang[15]使用比较友好的参数化控制点的交互方式开发了快速搭建中国亭子的系统, 不过, 由于控制点直接影响搭建质量, 用户的审美、专业程度仍然需要有一定的高度.Chaudhuri[16]以数据驱动的方式来生成多样化模型, 由于其算法纯粹建立于几何特征之上, 因此丢失了模型各个部分之间的语义关系.Merrell[17]把概率语义引入建筑建模领域, 通过对已有数据的学习生成贝叶斯网络, 并用此实现在仅输入高层需求的前提下自动完成建筑建模.Chaudhuri[18]使用模型数据库学习生成概率网, 以此达到无监督地自动生成多样化模型的目的.Xu[19]提出了一种以进化理论为核心思想的“适应-多样化”模型生成算法, 取得了很好的效果.Alhashim[20]提出一种基于形状混合的方法, 通过给定一个初始模型和一个目标模型, 自动地生成一系列中间模型, 且能够达到实时.Schulz[21]在样例数据驱动的基础上, 提出一种中间连接件的方式来组合模型的各个组件, 其方法在处理具有活动部位的模型(如抽屉, 小车)时能够取得较好的效果.

与此同时, 在交互式的自动建模过程中, 如何方便、智能、友好地给非专业人士提供指导和帮助, 也是学者们研究的重点之一.通常, 研究工作一般都建立在基于文本的搜索或者基于几何特征的形状匹配[22, 23]上. Chaudhuri[18]在这个基础上进行了改进, 使得对模型组件的推荐具有实时的语义相关性.

2 框架概述

整个徽州快速建模系统如图 1所示, 该系统可分为组件高层参数化、组件低层参数化、规则库指导的快速建模三大部分.

Fig. 1 本文方法流程示意图 图 1 Schematic diagram of the process

(1) 组件高层参数化部分.从领域规则和建筑数据中提取不同类型建筑的少量高层特征, 参数化后形成基于概率网络的高层参数规则库, 作为与普通用户快速建模输入的接口.

(2) 组件低层参数化部分.从领域规则和测绘数据中, 根据各个功能组件的物理、几何属性差异, 提取不同低层属性并分类进行参数化, 设计各个属性之间的约束规则, 形成低层参数规则库.

(3) 规则库指导建模部分.对于快速随机建模应用场景, 可实现无需任何人工干预的自动快速建模任务; 对于没有领域经验的一般用户, 采取逐组件向导式的指导建模, 实时地向用户推荐最佳高层参数, 将用户输入的高层参数自动生成所有建筑模块的低层参数; 高级用户可以通过修改构建模板或约束规则完成复杂的徽州建筑建模.

系统能够无需或者通过很少的交互而生成完整的单体徽州建筑, 且过程建模的设计适用于展示徽州传统建筑较为真实的动态营造过程.最终建造完成的模型不仅能够转换为网格模型, 用于常规的展示与渲染, 而且能够被专业的建筑领域CAD软件所兼容, 结合保存的建筑参数信息, 可供作进一步的分析和应用.

3 建筑组件化 3.1 组件分解

徽州建筑有宅居、祠堂、书院、戏楼、府衙、牌坊、桥、亭、塔、商业建筑这10类传统类型, 最典型的单体民居也需用到柱、檁、梁、橼、瓦、墙、马头墙、门、窗等10多种组件, 而大型徽州建筑如府衙等, 涉及到的组件多达数十种.虽然建筑类型有所不同, 但其使用的组件却是相同的.

把模型分解为组件, 是快速建模和多样化建模常用的方法.为控制建筑规模与体量, 中国古代建筑构建用料、等级都有严格规定.最早在宋朝的《营造法式》[24]中就提到了以模数制来划分构建等级, 从而约束建筑物的规模和各部件之间的比例关系等.徽州建筑属于明清建筑体系, 将建筑组件“以材为祖”的思想, 结合徽州建筑特点[25], 将徽州建筑分解为不同功能组件并分别进行参数化, 能够实现真实的建筑建造流程.同时建立徽州建筑组件参数库, 不仅有利于构建的差异化和多样化, 同时徽州建筑中的徽州元素, 如粉墙、黛瓦、马头墙等, 也能够进行相对独立的特征提取与研究.

3.2 组件依赖

建筑分解为单个的组件后, 组件之间并不是孤立的, 而是具有强烈的依赖关系.如必须先构建柱础, 才能在柱础上面安置柱子, 因此组件柱子的顺序依赖于柱础.为了实现建筑搭建的自动化, 需要定义组件之间的依赖关系和建筑构建顺序.

组件之间的构建依赖关系可使用有向无环图来描述.对于每一类型的徽州建筑, 定义有向无环图$ G = \langle V,E\rangle $, 图的每一个节点iV代表一类建筑组件, 每一条有向边$ \langle i, j\rangle \in E$表示组件j的顺序依赖于组件i.如图 2所示为徽州建筑中典型的厅堂的组件依赖图.

Fig. 2 Schematic diagram of the process 图 2 构建顺序图

对组件构建顺序规则, 作如下约定规则.

规则 1. 建筑组件i的所有依赖节点集合为Ψ(i), 仅当Ψ(i)中组件全被构建, 组件i方可被构建.

规则 2. 建筑组件i需要构建多个实例时, 所有实例必须一次性构建完毕.

规则2保证了组件在构造顺序树中的唯一性, 比如柱础上的柱子和梁上的柱子具备同样的参数集, 可以采取同一个物理实现, 但在构建逻辑上仍然被视为不同的组件.理论上而言, 图G的任意一个拓扑排序都可作为该建筑的构造顺序, 而在实际系统中可以根据应用的需要选取特定的构建流程.

3.3 组件连接

真实的徽州建筑组件之间的连接具有极其复杂的铆接方式.为简化组件连接方式, 互相依赖的组件分别定义相应的连接规则.根据待连接组件实例与依赖组件实例数量不同的特点, 可分为4类连接方式, 如图 3所示.

Fig. 3 Connection of components 图 3 组件的连接方式

· 1对1连接

待连接组件单个实例仅连接在一个依赖组件实例上, 如图 3(a)中柱子与柱础的连接.这类连接最常见, 其约束计算简单且通常是固定的.

· 1对N连接

待连接组件的单个实例连接于多个依赖组件实例上.如图 3(b)中柱头科需与1个柱子实例及2个梁的实例相连接.这类连接约束的计算稍为复杂, 但变化仍然不大.

· N对1连接

待连接组件的多个实例仅连接在一个依赖组件实例上.如图 3(c)中多个柱础实例与1个地板实例连接.这类连接的本质是布局问题, 也是实现建筑风格多样化的重要连接方式, 徽派元素中的马头墙、门、窗等组件都使用这种连接方式.

· NN连接

待连接组件多个实例连接于多个依赖组件实例上.如图 3(d)中瓦的不同实例以不同方式与望板、橼条相连接.此类连接较为复杂, 较直接的解决方法是分解为多个1对NN对1连接问题来加以解决.

为实现组件连接的自动化, 且风格化能在一定程度上受到用户控制, 则涉及到组件的参数表达问题.组件连接最终是通过约束规则计算组件参数的结果.

4 高层参数与概率网络

高层参数用于描述建筑直观且易于理解的高层特征属性.为简化交互, 高层参数通常设计为离散值, 采用简单明了的用户接口设计, 使之为用户提供修改建筑风格样式的接口.

4.1 高层参数的概率语义

对任意类型组件i, 定义其高层参数集合Hi={H1, H1, …, Hk}, 用于描述此类型组件的高层属性.如对于山墙组件的描述:“5层, 对称”.每个建筑组件抽象出少量(k < 3)高层参数, 通过设置不同的高层参数, 用户能够在一定程度上控制建筑的局部特征.

大部分建筑组件都能抽象出若干个高层参数, 从普通用户的角度而言, 一个完整的建筑其高层参数的总数仍然可观, 很多典型的应用场景, 用户希望通过简单的描述来生成大体符合要求的建筑.基于此, 对于任意一类建筑类型s, 定义少量的特殊高层参数用于描述其建筑整体风格, 称之为该类建筑的顶层参数, 表示为

HS*{H1*, H2*, …, Hk*}.

如单体民居具有的顶层参数:“面积规模, 造价高低, 户主身份, 楼层数”.顶层参数描述了建筑的整体特征, 仅使用顶层参数交互, 能够使得无任何领域知识或不关注建筑组件细节的用户完成对符合基本要求的徽派建筑的快速构建, 也适用于需要快速构建大量建筑的应用场景.

显然, 建筑整体特征会对局部组件风格产生影响, 而组件之间也会相互影响.以具有浓郁徽州色彩的马头墙为例, 造价越高、楼层越高的建筑, 其山墙层数更多的可能性越大; 而山墙的层数、山墙类型、户主身份又都会影响马头墙的类型, 等等.高层参数之间的概率关系自然形成了概率网络结构, 因此可引入贝叶斯网络来描述这种关系.

贝叶斯网络是一个有向无环图.图 4为一个描述马头墙系统的贝叶斯网络, 图中每个节点为一个高层参数的随机变量, 彩色节点为顶层参数.通过基于贝叶斯网络的推荐系统, 在建模过程中可以根据用户选择的当前组件的高层参数, 实时推断出后续所需组件的高层参数的所有可选状态, 按照概率值排序, 将具有最大概率的状态作为默认值推荐给用户.同时也允许用户选择其他可选状态.特别地, 用户可以不输入任何参数, 而采用马尔可夫蒙特卡洛(Markov chain Monte Carlo, 简称MCMC)采样方法随机生成所有高层参数.

Fig. 4 Bayes network of Ma Tau wallwatts 图 4 马头墙的贝叶斯网络

4.2 参数学习

贝叶斯网络学习分为结构学习和参数学习两种.由于徽州建筑建模领域的独特性, 组件之间存在大量已知的约束和因果关系, 充分利用领域知识和经验简化结构学习是常用的处理方法[26].因此, 高层参数学习的主要任务是贝叶斯网络的参数学习.

建筑和组件高层参数采用离散类型能够简化推荐系统的交互, 同时也降低了贝叶斯网络参数学习的复杂度, 但需要对组件原始数据作预处理, 将其中的连续数值使用人工标定或聚类方法分解为离散值.由于数据完整且只需要训练1次(批量学习), 可采取最大似然估计方法对模型参数进行估计.

对于具有n个高层参数的建筑类型, 可视为具有n个变量的贝叶斯网络模型N=(G, θ), G表示模型结构, θ表示模型参数, 变量Xi共有ri取值, 其父节点Pa(Xi)组合个数为qi, 则其网络可表示为

$ {\theta _{ijk}} = P({X_i} = k|Pa({X_i}) = j) $ (4.1)

其中, i∈[1, M], j∈[1, qi], k∈[1, ri].最大似然估计的目的是寻找θ, 使其对于贝叶斯网络每个节点的概率分布表对于训练数据都具有最大似然估计[27](maximum likelihood estimates, 简称MLEs).对具有M个训练数据的完整数据集D{D1, D2, …, DM}可认为其关于N独立同分布, 则θ的对数似然函数可用如下公式计算:

$ L(\theta |D) = \log \prod\limits_{m = 1}^M {P({D_m}|\theta )} = \sum\limits_{m = 1}^M {\log P({D_m}|\theta )} $ (4.2)

dijk为训练数据中Xi=kPa(Xi)=j的样本的数量, 则有

$ L(\theta |D) = \sum\limits_{m = 1}^M {\log P({D_m}|\theta )} = \sum\limits_{i = 1}^n {\sum\limits_{j = 1}^{{q_i}} {\sum\limits_{k = 1}^{{r_i}} {{d_{ijk}}\log {\theta _{ijk}}} } } $ (4.3)

根据信息不等式及其推论易知, 当取θijk如下值时, 能够使得公式(4.3)中的$ \sum\limits_{k = 1}^{{r_i}} {{d_{ijk}}\log {\theta _{ijk}}} $取得最大值.

$ \theta _{_{ijk}}^{*}=\left\{ \begin{align} & \frac{{{d}_{ijk}}}{\sum\limits_{k=1}^{{{r}_{i}}}{{{d}_{ijk}}}},当\mu \pm \sum\limits_{k=1}^{{{r}_{i}}}{{{d}_{ijk}}>0时} \\ & \frac{1}{{{r}_{i}}},\text{ }其他情况 \\ \end{align} \right. $ (4.4)

此时, θijk*即为θijk的最大似然估计, 实现上即为经典的计数算法(counting).不经过预处理的数据可能会存在缺失数据的现象, 此时可考虑使用共轭梯度下降法(conjugate gradient descent)或最大化期望算法(expectation maximization, 简称EM)等方法进行求解.

通过数据学习获取的贝叶斯网络即作为其建筑类型的高层参数规则库.由于徽州建筑的区域性, 数据的选取可以村落为单位, 例如某个村落的徽州民居, 这样能使得通过高层参数规则库构建的建筑其风格能够较好地符合该村落的特征风貌.

4.3 高层参数推理

通过已知高层参数计算未知组件的高层参数, 实质上就是贝叶斯网络的最大后验假设(maximum a posteriori hypothesis)问题[27].令要推理的高层参数作为假设变量H, 顶层参数及该高层参数父节点作为证据e, 则相当于计算:

$ \mathop {\arg \max }\limits_h P(H|E = e) = \mathop {\arg \max }\limits_h \frac{{P(H, E = e)}}{{\sum\limits_h {P(H, E = e)} }} = \mathop {\arg \max }\limits_h P(H, E = e) $ (4.5)

算法的复杂度是假设变量个数|H|的指数函数.在实际推荐系统中, 由于是以组件为单位逐个进行构建, 因此在逐次推理少量高层参数的情况下, 无需考虑计算复杂度.为统一表达, 定义高层参数规则库, 通过规则库计算组件i的高层参数Hik的方式如下:

$ H_i^k \Rightarrow Rule_i^H(H_{Style}^*, Pa(H_i^k)) $ (4.6)

徽派建筑推荐系统会在创建每一个组件之前, 对当前组件的所有高层参数进行贝叶斯推导, 将其概率最大的属性值作为默认值推荐给用户.当用户修改当前组件的相应高层参数并确认创建后, 则该组件所有高层参数将作为证据节点传入贝叶斯网络, 然后开始下一个组件高层参数的推理, 直到整个贝叶斯网络所有节点都成为证据节点.

精确推理通常使用联合树算法(junction tree algorithm).实际上, 推荐系统的目的是给用户推荐概率最高的组件高层参数, 而对其概率值的精度要求并不高, 在具体的贝叶斯推理实现上也可使用吉布斯抽样(Gibbs sampling), 但要保证网络中不得存在0, 否则会破坏马尔可夫链的平稳分布, 从而导致无法计算出正确的结果.推荐系统会自动地将具有最高概率值的状态作为默认值, 并且过滤掉任何概率值为0的状态, 避免用户传入错误的证据给贝叶斯网络.

总之, 推荐系统能够保证高层特征的组合总是符合数据样本的规律, 同时高层参数的推理结果将被用于推荐系统以指导组件低层参数的生成.

5 低层参数及其生成

组件的低层物理、几何等属性由组件的低层参数描述.同时, 为了实现徽州建筑组件的自动连接, 需构建建筑组件低层参数规则库, 规则库能够将高层参数加以转换并指导低层参数的求解.

5.1 组件低层参数

对任意类型组件i, 定义其低层参数可选集合Li={LiT, LiL, LiS, LiP}用于描述此类型组件的基本属性.每一类低层属性具体说明如下.

类型属性LiT:为离散类型参数, 用于分类同一组件的不同样式、风格、材质属性的类型, 不同类型的组件其几何特征可以完全不同.非离散型的参数则需考虑聚类方法或手工标定方式进行分类, 如描述房屋面积规模的类型参数(大型, 中型, 小型)的划分.

形状属性LiS:用于描述组件大小形状, 取决于组件所属类型的几何特性, 对于同一个组件, 当其类型属性为立方体时, 则其形状属性为长宽高; 而当其类型为曲面类时, 则取样条曲线参数控制点或者曲率等, 典型的如方形柱础和曲面柱础.

布局属性LiL用于描述当多个此类组件同时构建时需要满足的数量、相对位置等布局相关的参数, 以满足第3.2节规则2中同一组件多个实例必须一次性构建完毕的要求.如柱础在地板上的布局或窗户在墙上的布局等.实际计算时, 通常可以转化为基于模板的平面布局问题[28]或其他随机规则方法.

位置属性LiP描述组件相对于其依赖组件摆放的空间位置参数, 如坐标以及旋转量.

上述4类低层参数的定义和求解顺序具备严格的顺序, 具体而言, 必须先确定组件类型, 才能计算组件大小, 接下来才有可能计算组件布局, 确定其具体空间信息.

5.2 参数求解规则

对于任意建筑组件i, 其参数的求解顺序为从高到底逐层求解, 整个求解过程如图 5所示.

Fig. 5 The generation of the parameters 图 5 参数生成示意图

首先, 利用顶层参数和该组件高层参数在概率网络中的父节点高层参数, 通过高层规则库逐一推断出组件的所有高层参数, 具体而言即式(4.3).

其次, 通过高层参数和该组件所依赖组件的低层参数, 逐一求解组件低层参数, 表示为

$ {L_j} \Rightarrow Rule_i^L({H_i}, {L_j}|j = {\Psi ^*}(i)) $ (5.1)

参数求解过程体现了将高层抽象描述转换为参数化建模中的低层具体参数的过程.低层参数规则库中以组件为单元存放一组约束函数, 用于完成高层参数离散值转换为连续值并参与低层参数的计算.约束函数的设计来源于领域规则、测绘数据、经验数据等.在系统的设计上, 所有的低层参数约束规则都以接口的方式存放于脚本, 且提供丰富的接口, 便于高级用户访问和修改约束规则.

下面以徽州民居建筑过程中构建组件门为例进行说明.假设门仅依赖于墙, 即Ψ*(door)={wall}此时墙已构建好, 顶层参数以及墙的所有参数都为已知, 现在考虑计算门的参数.当前组件的参数见表 1.

Table 1 The parameters of component door and wall 表 1 墙和门的参数表

结合图 6, 门的参数求解步骤如下.

Fig. 6 The parameters generation of doors 图 6 门的参数生成示意图

(1) 使用顶层参数和门的依赖组件墙的高层参数来求解门的高层参数.门的高层属性type表示门的类型, num表示门的数量.通过概率网络求解, 得到type为“窄门”, 数量为“大于1”的可能性最大.

(2) 使用门的高层参数和依赖组件墙的低层参数来求解门的低层参数.第5.1节已经提到4类低层参数并非平行关系, 其生成顺序也需要遵守自顶向下原则.因此, 先求解类型参数LT.此例中Hdoor.typeLdoorT一一对应, 直接映射为门类型的离散值即可.

(3) 通过类型参数LT、依赖组件墙的低层参数Lwall求解门的形状低层参数LS.这里, 通过低层规则库求得门宽Wd, 门高Hd, 门框宽度Wdb.

(4) 通过形状低层参数LS、依赖组件墙的低层参数Lwall求解布局参数LL.这里, 通过低层规则库获取门的布局模板, 得到门的个数为2, 门之间间隔为1.2Wd且为对称分布.

(5) 通过布局低层参数LS、形状低层参数LS、依赖组件墙的低层参数Lwall求解位置低层参数LP.这里, 通过模板布局规则求得2个门相对于墙的空间坐标x分别为1.1Wd和-1.1Wd.

至此, 组件门的所有参数求解完毕.

5.3 构建模板

为达到无需任何人工干预的快速构建效果, 结合上述小节中的规则库与约束库, 使用不同的徽州建筑模板描述来实现不同构建过程.为简化模板表达, 使用下式表示组件i所有参数的生成.

$ i:\{ L\} \Rightarrow Rule(H_{folk}^*, H_i^{}, \Psi (i)) $ (5.2)

上述模板语法表示组件i的低层参数由建筑顶层参数、组件高层参数以及依赖组件共同计算生成.下面以徽州单体民居为例, 该建筑类型完整的模板描述如下所示.

Input: $ H_{folk}^{*}=\left\{ h_{host}^{*},h_{cost}^{*},h_{footprint}^{*},h_{floor}^{*} \right\} $

1:   $ plane:\{{{L}^{T}},{{L}^{S}}\}\Rightarrow Rule(H_{folk}^{*},{{h}_{PlaneRatio}})$

2:   $ plinths:\{{{L}^{T}},{{L}^{S}},{{L}^{L}},{{L}^{p}}\}\Rightarrow Rule(H_{folk}^{*},plane) $

foreach plinth in plinths:

3:      $ pillars:\{{{L}^{T}},{{L}^{S}}\}\Rightarrow Rule(H_{folk}^{*},plinth) $

4:   $ beams{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule{(}H_{folk}^*, pillars{)} $

5:   $ beamPillars{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule{(}H_{folk}^*, beams{)} $

6:   $purlins{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, pillars, beamPillars) $

7:   $ walls{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{WallType}}, {h_{WallLevel}}, plane, pillars, purlins) $

foreach wall in walls:

8:     $ matauwall{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{matwalltype}}, wall) $

9:     $ doors{:}\{ {L^T}, {L^L}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{DoorType}}, {h_{DoorNumber}}, wall) $

foreach door in doors:

10:       $ gatehouse{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{GateHouseType}}, door, wall) $

11:       $ step{:}\{ {L^T}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{StepNumber}}, door, plane, wall) $

12:     $ windows{:}\{ {L^T}, {L^L}, {L^S}, {L^p}\} \Rightarrow Rule(H_{folk}^*, {h_{WindowNum}}, wall, doors) $

13:   $ rafters{:}\{ {L^S}, {L^L}, {L^p}\} \Rightarrow Rule(H_{folk}^*, purlins) $

14:   $ tiles{:}\{ {L^L}, {L^p}\} \Rightarrow Rule(H_{folk}^*, rafters) $

该自动构建模板共使用4个顶层参数, 11个高层参数, 14种建筑组件, 每个组件包含0~3个高层参数, 2~4类低层参数.模板语法具有很强的扩充性, 增加新的组件风格只需增加相应的组件规则即可.

交互式建模的模板与自动建模模板基本相同, 区别是每个组件需要用户输入高层参数, 且构建完毕后需等待用户确认进入下一组件的构建, 或者响应用户的撤销操作, 让用户重新选择当前组件的高层参数, 其整体流程如图 7所示.对于组件i, 其模板语法描述如下:

Fig. 7 Interactive construction process 图 7 交互构建流程

while!UI.Next and!UI.Autobuild

   Remove(i)

   Hi=UI.Input()

$ i:\{ {L^T}, {L^S}, {L^L}, {L^p}\} = Rule(H_{folk}^*, {H_i}, \Psi (i)) $

UI.WaitInput()

end while

6 实验结果与分析

徽州建筑自动营造系统运行平台为Windows 7 64bit操作系统, 硬件配置为Intel Core i7-4790 3.60G CPU, 16G内存和NVIDIA GTX 760图形处理器.该系统的运行界面如图 8所示, 其中, 左边为高层参数配置界面, 用户可在初始构建时指定高层参数, 随后系统会在逐步的组件构建中向用户推荐最佳的组件高层参数作为默认值, 用户对推荐效果不满意, 可选择撤销当前组件的构建换用其他参数重新构建当前组件, 在任何时刻, 用户都可以选中随机生成选项, 从而使得之后的所有操作都使用系统默认的推荐值, 从而完成无需人工干预的自动建模.中间窗口为工作主界面窗口, 包括常规的交互操作以及组件的属性修改等操作.右窗口为控制台界面, 提供了丰富的接口, 用于修改规则、属性等, 用于辅助有足够领域知识的高级用户实现自由度较高的建模任务.

Fig. 8 The UI of the system 图 8 系统运行界面

6.1 快速建模实验

快速建模中一个典型的应用场景是无需或者仅需少量的人工干预快速随机生成建筑.以徽州建筑单体民居为例, 我们通过手动标记西递宏村古村落的327个单体民居的高层特征, 结合徽州建筑领域知识构建贝叶斯网络的结构, 并使用参数学习生成贝叶斯网络的所有参数信息, 如图 9所示, 其中上色节点为顶层参数节点.图 10所示为典型的徽州建筑单体民居的逐组件构造流程示意图, 组件构建顺序在图中以序号标出.

Fig. 9 The Bayes network for rapid modeling 图 9 快速建模实验使用的贝叶斯网络

Fig. 10 Construction process of Huizhou residence 图 10 徽州民居构建顺序

在推荐系统协助下的逐组件建模中, 用户仅需选择感兴趣的顶层或高层参数即可完成完整的徽州单体民居的构建.具有代表性的建模结果如图 11所示.

Fig. 11 The results of rapid modeling 图 11 快速建模实验结果

详细的模型构建信息, 如高层参数信息、多边形个数、生成时间信息见表 2所示的快速建模实验结果, 其中, 高层参数表示用户在构建时主动决定选择的高层参数, 其余未显式指定高层参数都使用系统推荐值.其中, 生成时间包含了交互时间在内.

Table 2 The results of rapid modeling 表 2 快速建模实验结果

快速建模的结果表明, 由于推荐系统能够自动过滤不符合数据规律的高层特征组合, 构建结果能够贴合真实的样本数据, 使得用户不会构建出违背样本规律的建筑.因此, 使用推荐系统快速建模能够使得没有领域知识的用户快速构建出符合大概要求的高精度模型.

6.2 高级建模实验

对于具备一定领域知识的高级用户, 可以通过独立修改组件属性或者修改约束, 通过使用已有组件来完成任意复杂程度的徽州建筑.图 12为使用本系统构造出来的部分徽州建筑结果, 其中, 墙等部分组件被去除, 以便展现其内部木架构.

Fig. 12 The results of modeling with a target 图 12 仿造建模实验结果

其中, 图 12(a)所示为在徽州单体民居模板上扩展了新的抱鼓石组件以及门的连接规则, 使得构造的民居脱离了样本的规则束缚; 图 12(b)图 12(c)所示为徽派建筑中典型的厅堂; 图 12(d)所示为在现有组件和规则基础上扩充了简单的几个规则构建而成的亭子; 图 12(e)所示为典型的徽派府衙; 图 12(f)图 12(g)所示为使用多个单体民居组合而成的复合型徽州民居.各个建筑的模型多边形数量和构建时间如图 13所示.建筑构建的生成时间总体而言与多边形数量基本呈现正相关关系, 同时也与具体的组件类型、用户对组件规则的定义、展现真实构建动态效果的动画等因素相关.

Fig. 13 The building infomation 图 13 构建信息

高级建模实验结果表明, 具备一定领域知识的高级用户能够在方便地利用现有组件和约束的基础上, 通过扩充构建模板和约束规则, 从而实现较为复杂的徽派建筑的建模.

徽州建筑自动营造系统具备真实的建筑营造过程, 其构建出来的模型基于CAD实体模型, 具有较高的精度, 既可提供给领域专家用户用CAD软件进一步编辑, 又可转换为网格模型, 适用于要求较高模型精度和真实性3D场景的漫游、展示等, 如图 14所示的是图 12(e)所示的府衙模型在3D场景中渲染的结果.

Fig. 14 Rendering model in 3D scene 图 14 模型在3D场景中的渲染

6.3 用户体验调查

为了更好地得到用户对徽州建筑自动营造系统的使用意见与反馈, 我们整理了12位参与建模实验用户的反馈信息.用户被分为两组, 其中, A组6位用户为没有任何建筑知识背景的普通用户, 来自计算机专业的本科生或研究生, 只参与快速建模实验; B组6位为高级用户, 具备一定(徽派)建筑领域和计算机领域的知识背景, 同时也熟悉一般建模软件(3D Max或Maya), 高级用户同时参与快速建模实验和高级建模实验.在所有用户完成实验后, 我们通过问卷方式搜集了用户对本系统的用户体验反馈, 几个主要的评价指标说明如下.

1) 易用性:使用本系统能够快速、容易地使用并完成建模的程度.

2) 建模效果:对建模完成后模型质量是否达到预期的评价.

3) 规则合理性:高级用户对现有建筑规则合理性的评价.

4) 规则扩展性:高级用户在高级建模实验中扩展或修改规则时的便捷、合理程度.

以上4个评价采取1分~5分的评分制, 分数越高越好, 调查结果如图 15所示.除此之外, 用户还给我们提供了有价值的使用意见和建议.

Fig. 15 The results of users study 图 15 用户体验调查结果

从统计结果中容易看出, 普通用户相对于高级用户, 对系统的交互方式(主要是推荐系统)的简单易懂程度给予了更高的评价, 而对于通过推荐系统快速生成的建筑模型是否能够达到基本的预期效果的评价上低于高级用户.结合高级用户对系统规则库的合理性给出的较高评价的事实, 我们推测, 高级用户对徽派建筑的规则更加熟悉和了解, 对建模结果的评价角度倾向于规则的合理性, 而普通用户倾向于美观性; 在规则的扩展方面, 有一定编码能力的用户学习成本相对较低, 能够很快地实现规则的扩展, 但用户同时也向我们反馈, 在建造较为复杂的建筑或者多个建筑方面, 规则的扩展相对比较麻烦, 这也是本系统目前最大的局限性所在, 同时也是我们下一步需要重点研究与改进的地方.

7 结论

本文提出了一种多层参数约束的快速徽州建筑建模方法, 使用高层参数与用户交互, 并通过贝叶斯网络推理出未知组件的高层参数, 并结合低层参数约束库, 指导组件低层参数依次生成, 该方法具有清晰而真实的构建流程, 没有领域知识的用户也可快速完成徽州建筑建模, 而具有领域知识的高级用户能够完成更加复杂的建模任务.通过大量实验和对实验结果的分析, 结合对普通用户和高级用户建模实验反馈的整理, 验证了所提方法在保证生成模型高精度性的前提下仍具有交互简单友好的优点, 同时具备较好的扩展性.然而, 该方法仍然存在一系列不足, 体现在扩展到构建复杂建筑类型、布局多个建筑时, 其规则的扩展会比较复杂与耗时, 现有的交互方式也存在很大改进空间.未来, 我们会在这些方面进行更加深入的研究.

致谢 在此, 我们向对本文做出贡献的同行, 提供专业建筑领域帮助的合作方——安徽建筑大学, 以及参与实地考察、获取数据和参与建模实验的同学表示感谢.
参考文献
[1] Debevec PE, Taylor CJ, Malik J.Modeling and rendering architecture from photographs:A hybrid geometry-and image-based approach.In:John F, ed.Proc.of the 23rd Annual Conf.on Computer Graphics and Interactive Techniques.New York:ACM Press, 1996.11-20. [doi:10.1145/237170.237191]
[2] Funkhouser T, Kazhdan M, Shilane P, Min P, Kiefer W, Tal A, Rusinkiewicz S, Dobkin D. Modeling by example. ACM Trans.on Graphics (TOG), 2004, 23 (3) :652–663. [doi:10.1145/1015706.1015775]
[3] Merrell P.Example-Based model synthesis.In:Jonathan C, Greg T, eds.Proc.of the 2007 Symp.on Interactive 3D Graphics and Games.New York:ACM Press, 2007.105-112. [doi:10.1145/1230100.1230119]
[4] Liu Y, Xu CF, Pan ZG, Pan YH.Semantic modeling project:Building vernacular house of southeast China.In:Judith B, Cai Y, eds.Proc.of the 2004 ACM SIGGRAPH Int'l Conf.on Virtual Reality Continuum and its Applications in Industry (VRCAI 2004).New York:ACM Press, 2004.412-418. [doi:10.1145/1044588.1044678]
[5] Liu Y, Xu CF, Zhang Q, Pan YH. The smart architect:Scalable ontology-based modeling of ancient Chinese architectures. IEEE Intelligent Systems, 2008, 23 (1) :49–56. [doi:10.1109/MIS.2008.16]
[6] Liu Y, Xu CF, Zhang Q, Pan YH.Ontology based semantic modeling for Chinese ancient architectures.In:Porter B, ed.Proc.of the 18th Conf.on Innovative Applications of Artificial Intelligence (IAAI 2006), Vol.2.Palo Alto:AAAI Press, 2006.1808-1813.
[7] Zhao QP. A survey on virtual reality. Science in China:Series F, 2009, 52 (3) :348–400. [doi:10.1007/s11432-009-0066-0]
[8] Birch PJ, Browne SP, Jennings VJ.Day AM, Arnold DB.Rapid procedural-modelling of architectural structures.In:David A, Alan C, eds.Proc.of the 2001 Conf.on Virtual Reality, Archeology, and Cultural Heritage.New York:ACM Press, 2001.187-196. [doi:10.1145/584993.58502]
[9] Müller P, Wonka P, Haegler S, Ulmer A, Van Gool L. Procedural modeling of buildings. ACM Trans.on Graphics (TOG), 2006, 25 (3) :614–623. [doi:10.1145/1141911.1141931]
[10] Schwarz M, Müller P. Advanced procedural modeling of architecture. ACM Trans.on Graphics (TOG), 2015, 34 (4) :107:1–107:12. [doi:10.1145/2766956]
[11] Merrell P, Manocha D.Constraint-Based model synthesis.In:Jens G, John K, eds.Proc.of the 2009 SIAM/ACM Joint Conf.on Geometric and Physical Modeling.New York:ACM Press, 2009.101-111.[doi:10.1145/1629255.1629269]
[12] Xue F, Zhang J, Lu HF, Li WJ. Rapid modeling for anhui-styled architectures. Journal of Computer-Aided Design & Computer Graphics, 2009, 21 :1595–1600(in Chinese with English abstract). [doi:10.1145/1356682.1356684]
[13] Chen XJ, Kang SB, Xu YQ, Dorsey J, Shum HY. Sketching reality:Realistic interpretation of architectural designs. ACM Trans.on Graphics, 2008, 27 (2) :21–28. [doi:10.1109/TVCG.2011.22]
[14] Hou F, Qi Y, Qin H. Drawing-Based procedural modeling of Chinese architectures. IEEE Trans.on Visualization & Computer Graphics, 2012, 18 (1) :30–42. [doi:10.1007/s00371-012-0771-3]
[15] Huang CY, Tai WK. Ting tools:Interactive and procedural modeling of Chinese ting. The Visual Computer, 2013, 29 (12) :1303–1318. [doi:10.1145/1882261.1866205]
[16] Chaudhuri S, Koltun V. Data-Driven suggestions for creativity support in 3D modeling. ACM Trans.on Graphics (TOG), 2010, 29 (6) :183:1–183:10. [doi:10.1145/1882261.1866203]
[17] Merrell P, Schkufza E, Koltun V. Computer-Generated residential building layouts. ACM Trans.on Graphics (TOG), 2010, 29 (6) :81–95. [doi:10.1145/2010324.1964930]
[18] Chaudhuri S, Kalogerakis E, Guibas L, Koltun V. Probabilistic reasoning for assembly-based 3D modeling. ACM Trans.on Graphics (TOG), 2011, 30 (4) :35. [doi:10.1145/2185520.2185553]
[19] Xu K, Zhang H, Cohen-Or D, Chen BQ. Fit and diverse:Set evolution for inspiring 3D shape galleries. ACM Trans.on Graphics (TOG), 2012, 31 (4) :57–66. [doi:10.1145/2601097.2601102]
[20] Alhashim I, Li HH, Xu K, Cao JJ, Ma R, Zhang H. Topology-Varying 3D shape creation via structural blending. ACM Trans.on Graphics (TOG), 2014, 33 (4) :158:1–158:10. [doi:10.1145/2601097.2601127]
[21] Schulz A, Shamir A, Levin DI, Sitthi-Amorn P, Matusik W. Design and fabrication by example. ACM Trans.on Graphics (TOG), 2014, 33 (4) :62–72. [doi:10.1145/1268517.1268530]
[22] Shin H, Igarashi T.Magic canvas:Interactive design of a 3D scene prototype from free hand sketches.In:Christopher G, Edward L, eds.Proc.of the Graphics Interface 2007(GI 2007).New York:ACM Press, 2007.63-70. [doi:10.1145/1268517.1268530]
[23] Lee J, Funkhouser T.Sketch-Based search and composition of 3D models.In:Christine A, Marie-Paule C, eds.Proc.of the 5th Eurographics Workshop on Sketch-Based Interfaces and Modeling (SBIM 2008).Aire-la-Ville:Eurographics Association Press, 2008.97-104. [doi:10.2312/SBM/SBM08/097-104]
[24] Pan GX, He JZ. The Interpretation of Yingzao Fashi. Nanjing: Southeast China University Press, 2005 (in Chinese with English abstract).
[25] Liu RY, Jin NL. HuiZhou Traditional Architecture Features Illustrated. Beijing: China Architecture & Building Press, 2015 (in Chinese with English abstract).
[26] Heckerman D. A Tutorial on Learning with Bayesian Networks. Berlin: Springer-Verlag, 1996 .
[27] Merrell P, Schkufza E, Koltun V. Computer-Generated residential building layouts. ACM Trans.on Graphics (TOG), 2010, 29 (6) :81–95. http://www.docin.com/p-726553874.html
[28] Bao F, Schwarz M, Wonka P. Procedural facade variations from a single layout. ACM Trans.on Graphics (TOG), 2013, 32 (1) :60–61. https://www.researchgate.net/publication/262332256_Procedural_Facade_Variations_from_a_Single_Layout
[12] 薛峰, 张键, 陆华锋. 一种徽州建筑快速建模方法. 计算机辅助设计与图形学学报, 2009,21 :1595–1600. [doi:10.1145/1356682.1356684]
[24] 潘谷西, 何建中. 营造法式解读. 南京: 东南大学出版社, 2005 .
[25] 刘仁义, 金乃玲. 徽州传统建筑特征图说. 北京: 中国建筑工业出版社, 2015 .