本文档为Esri CityEngine学习文档,是CityEngine_2011_tutorial官方示例教程3 “Tutorial_03_Map_Control__2011_2”的中文翻译稿,由网友冬冬翻译整理。

教程简介

城市包含非常多的对象。通过设置每一个建筑物的属性来控制它们会非常麻烦也是不太可能的。首先,你将在本教程中学习怎样使用CGA规则参数;然后你将学习怎样使用地图来控制你的城市的属性。

第一部分:理解CGA规则属性

教程设置

在你的CityEngine工作空间中导入“Tutorial_03_MapControl”工程

打开场景“Tutorial_03_MapControl/scenes/mapcontrolTutorial_01.cej ”

当前场景中的图层

地图图层:地形

地图图层:水体

道路网图层(包含地块形状)

规则参数从哪里来?

当你选中一个地块形状,在“Inspector”视窗中查看其属性信息,会发现它并没有被分配规则参数(规则参数组里面是空的),这种状况会发生改变当应用一个规则到这个形状上之后。

在“Scene”视窗中选择地块图层中的所有要素

【Shapes】-->【Assign Rule File...】选择规则文件“rules/simpleBuildingShells_01.cga”

再次选择地块数据的一个要素。在“Inspector”视窗中就出现了一个名为“height”的属性。

这个属性是从哪里来的呢?在你对你的形状应用规则的时候,规则文件的属性信息就以地块数据的属性(规则属性)的形式显示出来。高度值来自规则文件。

单击“Inspector”视窗中的“Rule File”链接,打开规则文件。在左上角的位置,放置着“height(高度)”的定义。

// height value

attr height =80

此值用来在规则文件中定义建筑物的高度。现在,再次选中该要素。

【Shapes】->【Generate】

你将获得一个80米高的建筑模型。

现在在“Inspector”视窗中将高度值从“80”改为“150”。观察高度值从规则定义到用户定义的改变。当前建筑物的高程就被由“Inspector”中直接定义的值所更改了。而其他未选中的地块要素的高度值仍然是从规则文件中读取的。

重新生成建筑物,可以发现建筑物的高度已经改变了。现在,你的场景应如下图所示。

同样的,你也可以打开场景“Tutorial_03_MapControl/scenes/mapcontrolTutorial_02.cej”来查看教程本部分的结果。

第二部分 控制城市中建筑的高度

教程设置

在第一部分场景的基础上继续或打开场景“Tutorial_03_MapControl/scenes/mapcontrolTutorial_02.cej”

映射地图

使用当前设置生成一些建筑物,你的城市将如下图所示。

映射地图可以使生成建筑高度产生丰富的变化,这句话现在听起来并没有什么说服力。现在我们将使用下面的映射地图来一次性控制全部建筑物的高度,而不是使用第一部分中的手动设置CGA模型属性的方法。

映射地图中的红色波段代表该区域建筑物的高度。对比映射地图和地貌图,你会发现,我们要创建的映射地图是沿着湖的拐角部分分布的,另外还有一部分是在图的左上角部分。

创建映射地图图层

创建一个新的地图图层【Layer】->【New Map Layer】

将图层命名为“Skyline Map”,选择“Mapping” 并单击下一步

为“Mapping”文件从“maps”文件夹中选择“skylineMap.png”

确认排列方式为居中,并关闭保持比例按钮

将X和Y的大小设置为3000

右键创建一个新的绘图属性

将该属性命名为“skylineValue”

我们要使用该图像的红色波段来控制高度,因此在“channel(通道)”下拉框中选择“red”

建筑物的高度应该在20(0%红色)到200(100%红色)米之间取值。因此输入20作为最小值“Minimum”,200作为最大值“Maximum”。

单击【Finish】创建地图图层

小知识:在“Inspector”视窗中,调整映射地图图层的高程偏移,以便更好的观察地图。更改“alpha”值让其具有一定的透明度。

因为我们所选的“height(高度)”值已经存在于规则文件中,所以我们能够使用映射地图来控制器规则参数,现在将规则文件应用到地块上。

选中全部的地块数据要素

点击“inspector”视窗中规则属性“height”的连接按钮,启动连接编辑器(Connection Editor)。

选中“layer attribute”图层属性单选框,在下拉框中,选择 “Skyline Map”图层及其属性“skylineValue”

小知识:在设置好映射图层后,值中显示“?”符号。这表示选中的目标包含不同的值。

选择一个地块要素,在“inspector”视窗中观察其属性值,可以看到“Height”的值由“Skyline Map”控制。

选中湖湾区域的一些地块要素,并生成建筑物

以框选方式选择一些lot

【Shapes】->【Generate Models】

目前的工作已经让我们的场景初见效果了,现在我们将使用CGA语法来进行进一步的完善。打开规则文件“rules/simpleBuildingShells_02.cga”(在“文件导航窗口中双击此文件),查看如下函数:

// calc height with variation

getHeight(area) =

case area >600 : rand(0,40)+height

case area >200 : rand(0,40)+height/2

else: rand(15,30)

在此规则中,并没有直接使用地平线的高度值来确定建筑物的高度,这些用户自定义的函数是按照如下描述来定义建筑物的高度(请通过阅读CGA建模语言教程来学习CGA规则和函数)

只在大面积的地块上建立高层建筑物

为了使建筑高度增加一些变化,向高度值中引入了一个随机值。

在“Scene”视窗中选中地块图层

【Shapes】->【Assign Rule File…】,选择规则文件“rules/simpleBuildingShells_02.cga”

【Shapes】->【Generate Models】

完成本教程第二部分后,你的场景应如下图所示。

同样,你也可以打开“Tutorial_03_MapControl/scenes/mapcontrolTutorial_03.cej”来查看本部分的效果图

第三部分:通过地图控制的建筑物的土地利用类型

教程设置

在第一部分场景的基础上继续或打开场景“Tutorial_03_MapControl/scenes/mapcontrolTutorial_03.cej”

控制建筑物的土地使用类型

一个城市通常有明显不同的土地利用类型区域。本部分将讲述如何为三种不同的土地类型设置属性。下面的地图中,使用蓝色代表商业区,红色代表工业区,绿色代表居住区。

创建“土地利用”地图图层

在创建图层前首先观察“rules/simpleBuildingShells_03.cga”中的三个CGA属性

// land-use type

attr t_industrial = 0

attr t_commercial = 0

attr t_residential = 0

我们接下来要创建的地图图层需要有匹配的名称来表示属性信息

在“Scene”窗口中单击眼睛图标来隐藏映射图层

创建一个新的地图图层【Layer】->【New Map Layer…】

将图层命名为“Landuse Types”,选择“Mapping”并单击Next

从“maps”文件夹中选择 “areatypes.png”文件

确认对齐方式为居中,并关闭保持比例按钮

将X和Z的大小设置为3000

创建3个地图属性

将第一个属性命名为“t_industrial”,并在下拉框中选择对应通道

将第二个属性命名为“t_residential”,并在下拉框中选择对应通道

将第三个属性命名为“t_ commercial”,并在下拉框中选择对应通道

我们会在规则文件中对这些属性进行再赋值,因此默认的最大最小值0和1,在之后的使用中,是一个很好的映射

单击【Finish】按钮创建地图图层

小知识:在“Inspector”视窗中,调整新的地图图层的高程偏移,以便更好的观察地图。更改“alpha”值让其具有一定的透明度。

选中新建的地图图层,并在“Inspector”视窗中查看其属性信息。确认三个CGA属性已经被正确的定义。你可以使用该视窗来修改地图图层的设置。

现在对土地利用地图进行求值

选择地块图层的全部要素

应用规则文件“rules/simpleBuildingShells_03.cga”

为图层“Landuse Type”的土地利用参数设置数据源

在最终生成建筑物之前,再一次查看规则文件“rules/simpleBuildingShells_03.cga”,定位到颜色描述和函数“functionlanduseTypeColor”部分。

// color declarations

red = "#ffaaaa"

green = "#aaffaa"

blue = "#aaaaff"

white = "#ffffff"

// Functions

landuseTypeColor =

case t_industrial> t_commercial && t_industrial > t_residential : red

case t_commercial> t_industrial && t_commercial > t_residential : blue

case t_residential> t_industrial && t_residential > t_commercial : green

else : white

此函数用来分析土地利用地图的输入值,并根据这些值返回对应的值。如果来自地图的颜色通道值比其他通道的值大,相应的土地利用颜色就被返回,红色代表工业区,蓝色代表经济区,绿色代表居中区。通过利用颜色操纵color(landuseTypeColor)调用土地利用颜色函数,颜色被用来生成建筑物。现在在场景中生成全部建筑物。

在“Scene”视窗中选中lot图层

在最上方的工具栏中单击生成按钮

同样,你也可以打开“Tutorial_03_MapControl/scenes/mapcontrolTutorial_04.cej”来查看本部分的效果图。

【CityEngine教程文档】 ---03 地图控制教程相关推荐

  1. 【CityEngine教程文档】 ---02 街道教程

    本文档为Esri CityEngine学习文档,是CityEngine_2011_Tutorials 官方示例教程2-- "Tutorial_02_Street_Generation__20 ...

  2. python教程文档下载_Python基础教程(第2版)PDF文档下载

    本书是经典教程的全新改版,作者根据Python 3.0版本的种种变化,全面改写了书中内容,做到既能"瞻前"也能"顾后".本书层次鲜明.结构严谨.内容翔实,特别是 ...

  3. 【CityEngine教程文档】 ---02 街道教程 之高级街道网

    第三部分:高级街道网 教程设置 在街道教程工程的"scenes"文件夹下,创建一个新的场景[File]->[New]->[CityEnginescene] 高级街道网 ...

  4. c 语言教程文档,c语言基本教程

    C语言教程 希望大家多多支持! C语言基础教程(一) 网上收集整理 Turbo C语言概述 1.1 C 语言的产生与发展 C 语言是1972年由美国的Dennis Ritchie设计发明的, 并首次在 ...

  5. 【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

    原创至上,移步请戳:(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components 4.Interaction Components 本节涵盖了处 ...

  6. 阿里云建站教程文档汇总(详细指南)

    阿里云建站零基础入门 选择服务器(推荐阿里云ECS) 购买和备案域名(时间比较长,建议购买完服务器就做这一步) 部署网站 解析域名(将域名和自身网站挂钩) 本篇汇总教程为使用阿里云建站的新用户介绍了搭 ...

  7. 【转】(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration

    原创至上,移步请戳:(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration 5.Animation Integration(动画集成) 动画 ...

  8. jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档。

    jquery.cookie 使用文档,$.cookie() 文档教程, js 操作 cookie 教程文档. jquery.cookie中的操作: jquery.cookie.js是一个基于jquer ...

  9. atitit.微信支付的教程文档 attilax总结

    atitit.微信支付的教程文档 attilax总结 1. 支付流程概览 1 2. 设置支付起始目录   host/app/paydir/ 1 3. 设置oauth验证域名 1 4. 测试目录 可以使 ...

最新文章

  1. mac终端下修改MySQL的编码格式以解决中文乱码问题--找不到my-default.cnf及my.cnf
  2. linkedHashMap源码解析(JDK1.8)
  3. python并行运算库_最佳并行绘图Python库简介:“ HiPlot”
  4. mysql5.7设置默认的字符集
  5. C++基础::typeid、type_info
  6. oracle错误输出,oracle – SQL小提琴输出错误
  7. IDM下载---一键安装版
  8. 屏幕录像专家 V6.0+注册机
  9. android View和ViewGroup创建以及绘制流程
  10. 对话马丁·福勒(Martin Fowler)——第六部分:性能与过程调优
  11. 访问服务器硬盘速度慢,硬盘读取速度变慢 当前传输模式pio的解决方法
  12. 数据分析A/BTest之APP页面
  13. 机器学习基础补习04---凸优化
  14. 最长等差数列_算法题10 最长等差序列问题
  15. 吉大计算机专业排名2018,吉林大学2019年排名第10位 与2018年排名持平
  16. 写个脚本薅区块鱼羊毛
  17. 知识分享 | Oracle的官方ACE是个啥 and如何搞定一个ACE!
  18. vb6.0 清除IE浏览器缓存
  19. 【健康管理师】常用健康监测指标
  20. 为何“爱辞职”成为了90后的又一标签?

热门文章

  1. Linux多线程(最全,收藏)
  2. 开启ylmf desktop ubuntu的pae支持
  3. Golang可变长数组
  4. linux下进入bios设置u盘启动项,u盘启动g4l_u盘启动快捷键_bios设置u盘启动
  5. Python爬虫之好看视频
  6. 解决“libboost_regex-vc120-mt-gd-1_59.lib“链接失败问题
  7. 2020-2-24-数据库的基本使用-1
  8. 推荐:移动端前端UI库—Frozen UI、WeUI、SUI Mobile
  9. OS=Windows and the assembly descriptor contains a *nix-specific root-relative-reference 错误
  10. [ulua]原理介绍