CityEngine中文实例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CityEngine中文实例

Tutorial_06_Basic_Shape_Grammar__2011_1 1.构建简单建筑物;2.为简单建筑物贴纹理;3.添加LOD;4.建筑物属性随机变化。 构建简单建筑物 本节学习最终要构建一个如下图的建筑物,该建筑物有地面一楼和其他楼层,一楼的正面有一个入口的门,其他窗口都使用的是一个提前做好的OBJ模型。 下面开始创建规则进行建模: ??? 为了更好的理解规则,我们自己创建一个新的规则,按照教程中的语句进行规则的书写。 1.????在规则文件的最开始处定义建筑的属性(也可以放在规则文件的其他位置)。在CGA文件中,这些属性将对整个规则文件产生作用。这些属性将显示在属性查看器(Inspector)中,可通过属性查看器修改这些属性。 attr groundfloor_height = 4 //地面一楼的高度 attr floor_height = 3.5 //其他楼层的高度 attr tile_width = 3 //将楼面按块划分的宽度 attr height = 11 //楼高 attr wallColor = #fefefe //墙面颜色 2.????教程中构建的窗户是使用的一个已经建好的窗户模型window.obj,这个文件存放在assets文件夹中,使用之前也要先定义出来。 window_asset = facades/window.obj //指定obj文件 ? 3.????下面我们定义第一条规则为Lot.?在属性检查器中,该规则被指定为开始规则。大量的模型是使用拉伸操作创建而来的: //对shape使用height中定义的高度进行拉伸,并命名为Building Lot -- extrude(height) Building 拉伸之后如下图: ???? 4.????可以通过应用comp()将Building分解为多个面, 生成了正面(FrontFacade)、多个侧面(SideFacade)和一个顶面(Roof) Building-- comp(f){ front : FrontFacade | side : SideFacade | top: Roof} 5.????分解完成之后,就开始开始对这些面进行外观造型。典型的外观造型流程如下:1,将面分解为楼层(Floors)。2,将楼层分解为块(Tile),每一块通常由墙面和窗口构成。这样的细分过程在CGA要素语法的实现过程如下图: ? //下面的FrontFacade规则将正面沿y轴方向,分割为两大部分,第一部分高度为groundfloor_height的地面一层Groundfloor,剩余的以floor_height高度进行重复分割(以*符号标记),分割为多个Floor。 FrontFacade -- split(y){ groundfloor_height : Groundfloor | { ~floor_height: Floor }* } 正面分割之后如下图: ? 6.???? 细分侧面: SideFacade -- split(y){ groundfloor_height: Floor | { ~floor_height: Floor }* } SideFacade规则将侧面沿y轴方向分割也分为两大部分,这两部分使用的都是是相同的Floor对象,因此侧面这两大部分看起来都应该是一样的。只有高度不一样,高度不一样主要是为了与正前面的楼层高度保持一致。 侧面分割之后如下图,三个侧面都是一致的: ?7.?????继续对Floor对象进行细化: //先给每层楼在x轴方向的两端画出宽度为1的墙面(Wall),剩余的部分以tile_width为宽度重复分割(Tile) Floor -- split(x){ 1: Wall | { ~tile_width: Tile }* | 1 : Wall } 如下图: 8.?????最后对正面的地面一楼进行细化: //同样先在x轴方向的两端画出宽度为1的墙面(Wall),按照tile_width划分为多个Tile,并按照tile_width划分出一个入口EntranceTile。 Groundfloor --split(x){ 1: Wall |{ ~tile_width: Tile }* | ~ til

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档