研究了一下City Engine。这个软件现在归ESRI公司,也就是开发ArcGIS的公司,所以这个软件的定位主要在GIS系统,城市规划等等。
主要原理
City Engine建模的主要原理叫Procedural Modelling,一个计算机图形学术语,大概就是用一些算法和规则来建模。比如分形,比如做树的L-System,比如建筑里面的Generative Modelling都属于Procedural Modelling。但隔行如隔山啊,读了五年建筑从来没听说过这个名词。逐渐接触了才知道,这特么不就是建筑学里的参数化建模么,而且更加彻底,模型都是完全用参数控制的。当然目的不是非线性建筑学追求的美学效果,那通常需要加入不少手动的操作。其目的是城市建模。用建筑学的说法大概像非线性建筑学想做的是地标建筑,Procedural Modelling当然也可以做,不过大部分在做背景性建筑。这种应用更少收到人主观因素,比如美学追求的影响,因此更适宜用参数化的方式生成模型。
具体一点呢,City Engine里CGA规则写法这样:
1 2 3 4 5 6 |
Lot --> AnotherShape1 AnotherShape2 AnotherShape3 AnotherShape --> AnotherAnotherShape |
我接触过的L-System,不过规则更自由一些。 这样一个房子就用一个树状结构的组件组成了。比如这个Tutorial09的Pathenon神庙:

创始故事
说起来CityEngine这个软件的出现还有一段故事,

图上这位就是Procedural Modelling之父,他2001年在Siggraph发表的论文”Procedural Modeling of Cities”大概是一切的源头。之后他在ETH计算机视觉实验室完成了博士研究,研究主要内容便是Procedural Modelling,毕业后成立了Procedural公司,开发CityEngine软件。2011年被ESRI收购。这个用博士研究来创业的经历也是蛮传奇的。
当然啦Procedural Modelling也有先例可循,这就不得不说George Stiny的Shape Grammer. Stiny现在是MIT建筑学院的教授,也是很厉害的人物。但我也没有很深入的了解,这里就不妄加评论啦。
案例
说回到City Engine,不妨展示一些案例。


这两个示范案例场景非常之丰富,简直不像计算机自动生成的场景。第一个叫Example_Downtown_Damaged,第二个叫Example_Medival_City。直接在CityEngine里能下到。
Workflow
一般CityEngine的workflow如下:
1. 建地形
地形使用Height Map创建的,而且创建的地形面数很高。这就可能导致导入Unity里是房子与地形低模不贴合等等。我这里使用World Machine做的地形,配合建场景非常有用。
2. 建道路
内置了一个Generate Street的工具,可以生成Raster/Organic/Radial三种街道形式。我主要是自己Grow的街道。但其实前两步可以直接用现实数据代替,CityEngine内置了工具直接从OpenStreetMap导入地形和道路。
3. 建房子
这里就要用CGA规则做Procedural Modelling了,Youtube上ESRI官方的教学视频非常推荐,配合官方案例的代码可以较快入门。看文档也是很重要的。
说起来轻松啦,其实每一步都有很多trick。这个初涉就不说啦。
以上。。