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

在此非常感觉网友冬冬,也欢迎更多的网友提供更多的技术文章(可在新浪微博上@ArcGIS_三维通知我们)在本栏中与大家分享。 教程02和教程03内容也己有冬冬翻译完毕,随后会为大家更新上去。

教程简介

本教程讲解如何利用CityEngine快速地从无到有创建一个城市,通过对CityEngine各部分功能的讲解使读者了解完整的工作流程。您将学习到怎样建立一个新的工程,创建道路网以及设置“形状创建参数”。最后,您将学习使用规则编辑器并生成城市建筑模型。

第一部分:创建一个新的工程

创建新工程和场景

第一步,创建一个新的CityEngine工程。

选择【File】—>【New】—>【CityEngine】—>【CityEngine project】

点击【Next】,将工程命名为“FirstCity”并单击【Finish】

完成以上操作,一个新的工程便建立好了并出现在在文件导航窗口中(默认布局下文件导航窗口位于CityEngine界面的左上角)。这些自动生成的文件夹用来存储你的工程数据,如assets文件夹(用以存储贴图和引用的模型部件数据),rules文件夹(用以存储规则文件)等。

第二步,创建一个新的场景:

选择【File】—>【New】—>【CityEngine】—>【CityEnginescene

确认新场景所保存的文件夹位置(/FirstCity/scenes),将该场景命名为“firstcity_01.cej”并点击【Finish】

我们的工作空间中现在包含了一个新的空工程以及一个场景文件:

拷贝规则和资源

在本教程的后面部分,我们需要使用规则文件和资源(assets)用以生成建筑物模型。因此我们现在需要从教程配套的示例工程中拷贝这些文件。

首先,我们将教程1的示例工程导入到当前的工作空间

下载并导入教程工程(教程1)到我们的工作空间中

接下来,我们将所需要的文件从已下载的教程1工程中拷贝到我们的新建工程中。

定位到教程1的资源(asset)文件夹。

使用复制和粘贴(Ctrl+C和Ctrl+V)将资源(asset)文件夹中所有的文件与文件夹拷贝到我们新建工程的资源(asset)文件夹中。

使用同样的方法,将规则文件夹中的 “building.cga” 规则文件拷贝到新工程的规则文件夹中。

现在,你的导航视窗应如下图所示:

现在,我们已经为第二部分的创建道路网和建筑模型工作做好了准备。

第二部分:街道和建筑物

创建道路网

第一步,创建道路网

单击viewport视窗将其激活

选择【Graph】—>【Grow Streets...】

选择默认设置来建立我们的城市。

单击【Apply】,并关闭对话框。
单击ViewPort视察上方工具栏中的“Frame All”按钮(或单击键盘上的“a”键)在Viewport视窗中全图显示你新建的道路网。

现在,你的Viewport视窗中应显示如下图所示的道路网以及默认的建筑物形状。

现在我们来看一下场景编辑器视窗“Scene Editor”。可以发现一个名为“Streetnetwork 1”的新图层已经生成。

修改“形状创建参数”

现在我们改变一些形状创建参数使场景看起来更加有趣。

点击“a”键使当前场景全图层显示。

按住鼠标左键,从右向左拖拽一个矩形框将场景中的全部元素都包含在内。

找到位于CityEngine窗口右上侧的Inspector面板,单击"Blocks"选项卡

打开"Block Parameter",将看到“形状创建参数”。

将类型(type)设置为偏移细分(Offset Subdivision

将最小面积(lotAreaMin)设置为300

将最大面积(lotAreaMax)设置为600

将偏移宽度(offsetWidth)设置为20

将代替分割递归(subdivisionRecursive)设置为否(false)

仔细观察场景中建筑物形状产生的变化

接下来进入第三部分,学习怎样对建筑物形状应用CGA规则并建立建筑物模型。

第三部分:应用CGA规则并生成模型

CGA规则简介

CityEngine中,使用CGA规则来描述三维模型。一个CGA规则文件由若干规则组成,这些规则用来定义三维模型是如何生成的。在一个CGA规则文件被指定给某个形状(如建筑物地块)时,建筑物模型便开始生成。在本部分的教程中,我们将应用和修改一个由基本规则构成的简单的CGA文件。

应用一个CGA规则文件

在3D视窗中,单击某个形状的内部以选中它。

在工具条中,单击Assign按钮并选中“building.cga”规则文件

另一种应用规则的方式,是直接从导航视窗(Navigator)中将规则文件拖拽到viewport视窗中的已选中形状上。

现在,Inspector视窗应如下图所示

浏览CGA规则并设置初始规则

在生成模型前,我们需要确认在Inspector视窗中已选定形状的初始规则被设置为了“Lot”,通常这种设置为默认设置。需要注意的是初始规则的名称由CityEngine自动生成,但可以进行修改。

继续保持某形状在前一节中被选中的状态,找到Inspector视窗中的初始规则(Start Rule)属性。

双击规则文件打开规则编辑器(Rule Editor)视窗。在左侧(黄色标签部分)显示的是规则的属性,在右侧(灰色标签部分)显示的是实际规则的图表。

点击下图红色圆圈内所示的按钮使编辑视窗最大化。

将规则定位在规则图的根部,在这里的根部指的是“Lot”。这个规则将是已选定形状的起始规则。

再次查看inspector视窗,确认在"Start Rule"处选定的是"Lot"(“Lot”为默认值),如下图所示。

现在我们已经做好生成真实建筑模型几何体的准备了。

生成第一个建筑物模型

确认选定形状仍然在选中状态,单击生成(Generate)按钮。

建筑物模型出现在了选定形状的上方

单击选中模型,使用右键菜单中的"Delete Model"选项来删除模型。

再次生成模型。

我们现在已经做好修改模型的准备。首先,我们将修改一个规则的属性——building height(建筑物高度)。接下来,我们将为建筑物添加一个不同的屋顶,这样我们就需要一个新的CGA规则。

修改规则属性“建筑物高度”

高度在相应的规则文件中被设置为了随机值,使用更新并生成模型(Update seed and Generate Models)命令多次生成建筑物,观察每一次生成的建筑物的变化。

查看规则编辑器中建筑物高程的默认定义:

在Inspector视窗中,定位到规则参数“Rule Parameter”。

找到高程"height"参数将其值修改为“18”。参数值的字体变成粗体,为用户定义值。

再次重复点击更新和生成模型命令(Update seed and Generate Models)。可以发现建筑物模型的高度不再变化。你可以通过点击数字“18”左侧的黑色三角图标将其重置为默认行为。

接下来,我们为屋顶添加一个新的规则。

添加一个屋顶规则

在inspector视窗中,通过点击规则文件打开规则编辑器

找到“Lot”规则并点击其右上角的“V”形符号将其展开。

在“comp”部分,右键点击“shape”,在右键菜单中进行选择,新建一个新的规则。

将新规则命名为"Roof"。

观察新规则是如何生成并被连接到"Lot"节点上的。

为了建立一个屋顶模型,我们现在插入一个人字形屋顶图形(即通常说的双坡顶)。右键单击“Roof”规则中的“Shape”,找到roofGable(angle, overhangX, overhangY)操作。

观察roofGable操作的生成情况。点击三个参数值分别输入20, 1, 0作为屋顶的参数。

单击生成(generate)按钮,查看新生成的模型。

生成一个小的城市模型

在最后一个步骤里面,我们会将规则应用到较大数量的形状上。为了给较大数量的形状分配规则,我们将使用选择菜单。

选择已生成的模型。

右键单击3D视口,并选择“Select -> Select Objects of Same Group”以选择大量的形状。

单击assign按钮,将building.cga规则分派给选中的形状。

单击“Generate”按钮生成模型。注意:根据你的选择,将会弹出一些关于起始规则“LotInner”或类似的警告对话框。你可以忽略这些对话框,因为我们对所有的形状分配规则,但我们的规则并不包含名为“LotInner”等的起始规则。

你现在应该可以看到一些高度不同的建筑物了。

【CityEngine教程文档】---01 基础教程相关推荐

  1. 计算机教程文档,计算机应用基础教程-20210323002444.doc-原创力文档

    <计算机应用基础教程> 授课教师:李宁 西北外事中专学校 旅游管理专业部 教学课时:1 教学内容:第二章Word 2003文字处理软件的应用 第三节文档的排版 教学H的与要求:I.掌握如何 ...

  2. php基础教程文档,PHP5基础教程

    */ php5学习笔记 第一节--面向对象编程 面向对象编程被设计来为大型软件项目提供解决方案,尤其是多人合作的项目. 当源代码增长到一万行甚至更多的时候,每一个更动都可能导致不希望的副作用. 这种情 ...

  3. php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]

    PHP培训教程教你快速打造PHP MVC框架[PHP基础教程] 简介 MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架.虽然不能保证100%的开 ...

  4. matlab2014a文档,MatlabR2014a基础教程

    MATLAB R2014a 基础教程 ---MATLAB R2014a 快易行(上) 前言 MATLAB与Mathematica.Maple并称为"3M",是数学界中三大著名软件, ...

  5. Word文档的基础教程

    一.关于F键的快捷操作 [F1]键:帮助 [F2]键:移动文字或图形,按回车键确认 [F4]键:重复上一次的操作 [F5]键:编辑时的定位 [F6]键:在文档和任务窗格或其他Word窗格之间切换 [F ...

  6. mysql菜鸟教程 文档_mysql菜鸟教程

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. 【CityEngine教程文档】 ---03 地图控制教程

    本文档为Esri CityEngine学习文档,是CityEngine_2011_tutorial官方示例教程3 "Tutorial_03_Map_Control__2011_2" ...

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

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

  9. 实施文档_Word 2010文档处理案例教程

    Word 2010文档处理案例教程 ISBN:978-7-80243-928-3/02 作者:黄桂林 江义火 郭燕 定价:38.00元 出版社:航空工业出版社 适用层次:通用 出版日期:2019-10 ...

  10. wps android qq 群,手机WPS怎样发送文档给QQ?WPS怎样发送文档给QQ教程

    软件大小: 52.26MB 软件版本: 2.1.0 软件类型: 办公工具 查看详情 直接下载 手机WPS怎样发送文档给QQ?不少刚使用手机WPS的人不晓得怎么操作,那么下面来看看WPS怎样发送文档给Q ...

最新文章

  1. ClickHouse系列教程四:允许远程连接 allow remote access
  2. 搭建php帮助中心,帮助中心
  3. Caffe部署中的几个train-test-solver-prototxt-deploy等说明三
  4. starling教程-纹理(Texture)
  5. 利用 git 提交代码、git 简单使用(拉取、推送、分支、合并)
  6. 2.9 iframe
  7. 三大重磅奖项揭晓 2020全球智博会为行业加冕
  8. 如何在Vue中使用websocket?
  9. 进制转换(二进制、八进制、十进制、十六进制)涵盖整数与小数部分,超详细
  10. EasyClick adb shell命令大全
  11. pandas的is in和not in
  12. Android UI 之一步步教你自定义控件(自定义属性、合理设计onMeasure、合理设计onDraw等)
  13. QT去除控件被选中后的焦点虚线框
  14. ajax无线遥控器,利用python+tkinter做一个简单的智能电视遥控器
  15. 【漏洞复现】MS12-020漏洞(蓝屏攻击)复现
  16. linux输入多行内容至文件
  17. Linux常用命令笔记
  18. bam文件处理 转fq
  19. C51学习笔记:基于STC89C52的超声波测距与LCD1602显示
  20. 如何将C盘数据移动到其他盘

热门文章

  1. 解决IE浏览器被2345劫持问题
  2. Java实现 蓝桥杯 算法提高 天天向上(DP)
  3. 弘辽科技:6个核心关键词,抓住创业的“命运转折点”!
  4. 物联网技能大赛-Ubuntu-(1)
  5. iOS16.1RC版发布后 iPhone14 Pro系列机型可以在灵动岛显示球赛比分
  6. 服务器常见协议,网吧影视服务器常见的网络协议
  7. MessageBox confirm弹框确认和取消按钮的使用-回调
  8. 英语: 听力(Listening)
  9. zkLedger: Privacy-Preserving Auditing for Distributed Ledgers
  10. [爬虫]requests+正则表达式爬取猫眼电影TOP100