CityEngine 的CGA建模过程是个不断迭代繁衍的过程,我们将这个过程想象成一棵树。

通过 Shapefile,File Geodatabase,AutoCAD DXF 这些矢量数据格式导入CityEngine中的2D基面(Footprint),通常称为 CityEngine Initial Shape,这是这棵树的根节点。通过CGA中的命令符 --> ,将一个shape经过各种形状(Geometry)和位置(Pivot,Scope) 的函数操作,生成另一个shape。直到最后,模型建立,最终的shape节点,通常称为 CityEngine Leaf Shape

这个细节的概念,在2013年的开发者大会中提过一次,结合模型层次结构的幻灯片理解下:

完整的幻灯片可以点 这里 下载。

为什么说是“迭代繁衍”? 因为除了 Leaf Shape 之外的所有shape 在建模过程中都被紧跟它其后的shape替代而消亡了。

举例子,在这条规则中,

1
2
A --> function() B 
B --> function() C

这条规则中 ,A shape 对象已经消亡被B替代,在后续的规则中无法再调用到 A, 如果希望取到与A相同的对象,就需要提前复制出来,如下:

1
2
3
A --> Anew function() B            //A被复制而创建了分支
B --> function() C
Anew --> function() D

了解了这些,那么我们可以进一步回答这个问题:“如何将CityEngine规则建模的模型导出成各组件独立存储的模型?”

可以的,再导出FileGDB或 Scene Layer Package的时候选中 “One Feature per Leaf Shape” 即可。

Export to FileGDB

Export to Scene Layer Package

这些导出的模型数据拿到其他软件中使用,例如ArcGIS Pro,各组件即为不同的静态模型对象。

这个示例的CGA脚本在 我的Github 可以查看和下载。