City Engine CGA 规则包

City Engine CGA 规则包

  • 基本规则
  • 开始编写
    • 简单的拉伸建筑
      • 创建变量动态修改高度
      • 控制GUI界面中Rule的高度变化范围
      • 分割建筑物
      • 建筑物贴图

 
 
 
 
 
 
 
 

基本规则

1、在cga编辑器中,alt + / 有智能提示

 

2、基本规则

  • attr height = 250 —— 定义属性
  • extrude(height)、extrude(axisWorld, height) —— 拉伸
  • comp(f){top: Roof | side: Facede} —— 面分割
  • comp(e) —— 边分割
  • comp(v) —— 点分割
  • color(1, 0, 0) 或 color("#69431a") —— 颜色

 

3、返回值,返回值在cga中不以等号形式返回。 而是在语句之后添加新的关键字用以承接

 
 
 
 

开始编写

第一行使用:

Lot -->

City Engine CGA 规则包_第1张图片

Lot 并不具有特殊含义,只是一个比较通用的表达,表示当前的规则文件被拖动到的那个形状上。也可用别的名称代替

 
 

简单的拉伸建筑

1、画一个简单的面
City Engine CGA 规则包_第2张图片

 

2、编写规则,把面拉起来

Lot-->
extrude(200)

City Engine CGA 规则包_第3张图片

将规则文件拖到圆上
City Engine CGA 规则包_第4张图片

City Engine CGA 规则包_第5张图片

 

选中物体后,可以看到规则中的高度

City Engine CGA 规则包_第6张图片

 
 

创建变量动态修改高度

方法

attr height = 20

写于Lot之上

City Engine CGA 规则包_第7张图片

 
 

控制GUI界面中Rule的高度变化范围

1、未控制前高度可以随意改动
City Engine CGA 规则包_第8张图片

 

@Range(200, 500)
attr height = 200
Lot-->
	extrude(height)

 

City Engine CGA 规则包_第9张图片

City Engine CGA 规则包_第10张图片

 
 

分割建筑物

面分割使用 comp(f){},关键字 top、side表示屋顶和侧面, top: roof 表示将建筑物整体分割,且顶部赋值至变量 roof

@Range(200, 500)
attr height = 200
Lot-->
	extrude(height) bld
	
bld-->
	comp(f) { top : roof | side : wall }

City Engine CGA 规则包_第11张图片

 
 

建筑物贴图

1、设置贴图的坐标系

setupProjection(uvset, prjAxesSelector, texWidth, texHeight)
  • uvset —— 要被贴图的元素的索引值,[0, 9] 的整数
  • prjAxesSelector —— 设置有效的方向轴,有效参数有:scope.xy, scope.xz, scope.yx, scope.yz, scope.zx, scope.zy
  • texWidth —— 宽度方向上的贴图比例,即贴图大小与建筑大小的对应。设置为 '1 则自适应以一张贴图贴满整个面
  • texHeight —— 高度方向上的贴图比例,即贴图大小与建筑大小的对应。设置为 '1 则自适应以一张贴图贴满整个面

如:

@Range(200, 500)
attr height = 200
Lot-->
	extrude(height) bld
	
bld-->
	comp(f) { top : roof | side : wall }

roof-->
	setupProjection(0, scope.xy, '1, '1)
	projectUV(0)
	texture("/ESRI.lib/assets/Roofs/Flat/flatRoof_12.jpg")
	
wall -->
	color(1, 0, 0)

City Engine CGA 规则包_第12张图片

你可能感兴趣的:(cityengine,cityengine)