数据准备
50多个城市建筑矢量数据
链接:https://pan.baidu.com/s/1FiwTfXDwQ6tMDRACAwUZwQ 提取码:DYSK
数据分析
数据属性Floor,为建筑物楼层信息,据此信息下面将在CityEngine软件生成Lod1白膜数据。
软件准备
CityEngine 2022
白膜数据生产
加载shapefile数据
复制shp数据放置至data目录下
编写CGA规则
读取shapefile数据的Floor字段数据
Floor*3即为建筑物高度
生成白膜模型
Generate
导出模型
CityEngine
CityEngine中的CGA(Computer Generated Architecture)函数是进行三维建模的重要工具,它们通过定义一系列的几何和纹理参数化特征来决定模型如何生成。以下是一些常见的CGA函数及其示例:
1. 基础建模函数
- attr/const:用于定义变量或常量。
- 示例:
attr height = 20
定义了一个名为height的变量,其值为20。
- 示例:
- extrude:拉伸函数,用于将二维形状拉伸为三维形状。
- 示例:
Lot --> extrude(height)
将当前形状(Lot)沿其法线方向拉伸到指定高度。
- 示例:
- comp:组件分离函数,用于将形状分割成不同的部分。
- 示例:
comp(f) { top: Roof | side: Wall }
将形状的上部(top)分割为屋顶(Roof),侧面(side)分割为墙(Wall)。
- 示例:
- split:切割函数,用于按指定方向或尺寸切割形状。
- 示例:
split(y, 5) { 0: Base | 5: Top }
将形状在Y轴上距底部5个单位处切割,分为底部(Base)和顶部(Top)两部分。
- 示例:
- setupProjection:设置贴图坐标系,用于定义贴图如何映射到形状上。
- 示例:
setupProjection(0, scope.xy, 1, 1)
设置贴图坐标系,使其沿XY轴方向自适应贴图。
- 示例:
2. 房顶建模相关函数
- roofGable:尖顶房屋函数,用于创建尖顶房顶。
- 示例:
roofGable(height, eavesLength, eavesWidth)
创建具有指定高度、屋檐长度和屋檐宽度的尖顶房顶。
- 示例:
- roofShed:斜坡房顶函数,用于创建斜坡房顶。
- 示例:
roofShed(angle, startEdgeIndex)
创建具有指定角度和起始边索引的斜坡房顶。
- 示例:
- roofHip:四坡顶函数,用于创建四坡顶房顶。
- 示例:
roofHip(angle, eavesLength)
创建具有指定角度和屋檐长度的四坡顶房顶。
- 示例:
3. 实用辅助函数
- primitiveCube:添加立方体,用于快速创建立方体形状。
- 示例:
primitiveCube(width, height, depth)
创建一个具有指定宽度、高度和深度的立方体。
- 示例:
- scatter:随机点函数,用于在指定区域内随机分布点或对象。
- 示例:
scatter(surface, 100, uniform) { Tree }
在表面上随机分布100棵树木,分布类型为均匀分布。
- 示例:
4. 变换函数
- s:缩放函数,用于改变形状的大小。
- 示例:
s(2, 1, 1)
将形状在X轴上放大两倍,Y轴和Z轴保持不变。
- 示例:
- t:平移函数,用于移动形状的位置。
- 示例:
t(0, 10, 0)
将形状沿Y轴正方向移动10个单位。
- 示例:
- r:旋转函数,用于旋转形状。
- 示例:
r(0, 90, 0)
将形状绕Y轴旋转90度。
- 示例:
5. 其他函数
- set:属性设置函数,用于设置形状的属性,如材质、颜色等。
- 示例:
set(color, "red")
将形状的颜色设置为红色。
- 示例:
- case..else..:条件函数,用于根据条件执行不同的操作。
- 示例:
case condition1: operation1 else: operation2
如果满足condition1,则执行operation1,否则执行operation2。
- 示例:
这些函数可以组合使用,通过编写CGA规则文件来创建复杂的三维模型。CityEngine的CGA语言提供了丰富的函数和灵活的语法,使得三维建模过程更加高效和精确。