CityEngine中文实例

CityEngine中文实例

ID:46626433

大小:1.80 MB

页数:15页

时间:2019-11-26

CityEngine中文实例_第1页
CityEngine中文实例_第2页
CityEngine中文实例_第3页
CityEngine中文实例_第4页
CityEngine中文实例_第5页
资源描述:

《CityEngine中文实例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Tutorial_06_Basic_Shape_Grammar__2011_11.构建简单建筑物;2.为简单建筑物贴纹理;3.添加LOD;4.建筑物属性随机变化。一、构建简单建筑物本节学习最终要构建一个如下图的建筑物,该建筑物有地面一楼和其他楼层,一楼的正面有一个入口的门,其他窗口都使用的是一个提前做好的OBJ模型。下面开始创建规则进行建模:   为了更好的理解规则,我们自己创建一个新的规则,按照教程中的语句进行规则的书写。1.    在规则文件的最开始处定义建筑的属性(也可以放在规则文件的其他位置)。在CGA文件中,这些属性将对整个规则文件产生作用。这些属性将显

2、示在属性查看器(Inspector)中,可通过属性查看器修改这些属性。attrgroundfloor_height=4//地面一楼的高度attrfloor_height=3.5//其他楼层的高度attrtile_width=3//将楼面按块划分的宽度attrheight=11//楼高attrwallColor="#fefefe"//墙面颜色2.    教程中构建的窗户是使用的一个已经建好的窗户模型window.obj,这个文件存放在assets文件夹中,使用之前也要先定义出来。15window_asset="facades/window.obj"//指定obj文件

3、 3.    下面我们定义第一条规则为Lot. 在属性检查器中,该规则被指定为开始规则。大量的模型是使用拉伸操作创建而来的://对shape使用height中定义的高度进行拉伸,并命名为BuildingLot-->extrude(height)Building拉伸之后如下图:    4.    可以通过应用comp()将Building分解为多个面,生成了正面(FrontFacade)、多个侧面(SideFacade)和一个顶面(Roof)Building-->comp(f){front:FrontFacade

4、side:SideFacade

5、top:Roof}5

6、.    分解完成之后,就开始开始对这些面进行外观造型。典型的外观造型流程如下:1,将面分解为楼层(Floors)。2,将楼层分解为块(Tile),每一块通常由墙面和窗口构成。这样的细分过程在CGA要素语法的实现过程如下图: //下面的FrontFacade规则将正面沿y轴方向,分割为两大部分,第一部分高度为groundfloor_height的地面一层Groundfloor,剩余的以floor_height高度进行重复分割(以*符号标记),分割为多个Floor。FrontFacade-->15split(y){groundfloor_height:Groundf

7、loor

8、{~floor_height:Floor}*}正面分割之后如下图: 6.    细分侧面:SideFacade-->split(y){groundfloor_height:Floor

9、{~floor_height:Floor}*}SideFacade规则将侧面沿y轴方向分割也分为两大部分,这两部分使用的都是是相同的Floor对象,因此侧面这两大部分看起来都应该是一样的。只有高度不一样,高度不一样主要是为了与正前面的楼层高度保持一致。侧面分割之后如下图,三个侧面都是一致的: 7.     继续对Floor对象进行细化://先给每层楼在x轴方向的两端画出宽度

10、为1的墙面(Wall),剩余的部分以tile_width为宽度重复分割(Tile)Floor-->split(x){1:Wall

11、{~tile_width:Tile}*

12、1:Wall}15如下图:8.     最后对正面的地面一楼进行细化://同样先在x轴方向的两端画出宽度为1的墙面(Wall),按照tile_width划分为多个Tile,并按照tile_width划分出一个入口EntranceTile。Groundfloor-->split(x){1:Wall

13、{~tile_width:Tile}*

14、~tile_width:EntranceTile

15、1:Wall

16、}结果如下图:9.     下面对Tile进行定义://先对Tile在x轴方向中间划分出宽度为2的一部分(对这部分再按y轴方向先划分一个高度为分别为1和1.5的wall和window,剩余的高度也定为wall),然后两边分别划分为宽度大概为1的wall15Tile-->split(x){~1:Wall

17、2:split(y){1:Wall

18、1.5:Window

19、~1:Wall}

20、~1:Wall}结果如下: 10.  对EntranceTile进行定义:EntranceTile-->split(x){~1:SolidWall

21、2:split(y){2.5:Door

22、~

23、2:Sol

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。