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

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



教程简介

本教程将对CityEngine中建立街道网和建立精细街道模型的方法进行讲解。自动生成的街道图能够反应出受到各种障碍的影响,如湖泊和地形等。在本教程的第二部分,将讲解如何根据街道图创建街道图层。应用道路规则到道路数据上,能够生成精细的街道模型。在本文的最后部分,展示了一些特定属性信息下生成不同样式的道路网络。



第一部分:创建街道网

教程设置

将工程“Tutorial_02_Streets”导入到你的CityEngine工作空间中;
通过【File】 →【New】 .. →【 CityEngine scene】新建向导在街道教程工程的场景( scenes )文件夹中创建一个新的场景文件,将其命名为“MyStreets.cej”。

创建障碍图层



在城市环境中,道路的放置受到很多的限制。如湖泊、河流或公园,这些地方很可能不会有道路网络分布。在CityEngine中,你可以创建一个障碍图层(obstacle layer)来控制这种表现方式。

创建一个新的地图图层【Layer】 → 【New Map Layer...】;

选择Obstacle(障碍),并单击下一步;

从地图文件夹(maps)中选择文件“obstacles.png”作为障碍文件;

将对齐位置设置为中心点,并保持比例按键按下;

将X size(X的大小)设置为3000;

单击Finish结束设置。

【CityEngine教程文档】 ---02 街道教程_第1张图片

提示:如果在viewport视窗中没有显示障碍图层,则通过视图设置菜单切换到纹理阴影模式。


创建地形图层

【CityEngine教程文档】 ---02 街道教程_第2张图片

我们创建的街道需要遵循高程地形。这将通过创建一个由灰度高程图生成的地形图层来获得。

在文件导航(Navigator)窗口的地图文件夹中,选择图像文件“elevation.jpg”;

将图像拖拽到你的3D视窗中;  

从地图文件夹中选择“topo.png”作为纹理贴图文件;

将max. elevation(最高海拔)设置为250;

与前面一样,将对齐位置设置为中心点,并将保持比例按钮按下;

将X size设置为3000;

单击“Finish”结束;

【CityEngine教程文档】 ---02 街道教程_第3张图片

在场景视窗中选择障碍(Obstacle)图层,在Inspector视窗(可以通过【Window】 →【Inspector】方式打开)中,将其Elevation Offset修改为-15 。这样做可以防止在ViewPort窗口中两个图层互相覆盖。


生成街道网络

现在可以开始生成街道网络。

通过点击viewport视窗中的空白处来取消对障碍图层的选择;

通过【Graph】→【Grow Streets...】方式启动街道生长对话框;

将街道数修改为1500;

在“Environment Settings”组中,从“Heightmap”的下拉选项中选择你的地形图层;

 从“Obstaclemap”的下拉选项中选择你的障碍图层;

单击【Apply】,并关闭窗口。

【CityEngine教程文档】 ---02 街道教程_第4张图片


解决道路形状的冲突

在生成或导入道路模型时,街道和十字路口的形状可能会产生冲突,这些冲突在图中以带红色点的线段显示。


这些冲突是由图形的重叠导致的,通常情况是由于道路中心线上结点间距离过短造成的。你可以尝试使用手工编辑道路网的方式来解决冲突,也可以使用图形清理工具“Resolve Conflicts(解决冲突)” 选项(【Graph】->【Cleanup Graph】)。


【CityEngine教程文档】 ---02 街道教程_第5张图片


使地块(Lot)创建不可用

我们现在只对街道感兴趣,因此:

在“Viewport”视窗中单击右键,【Select】->【Select All】,选择场景中的全部要素;

选择Inspector”视窗中的“Blocks”选项卡;

将“shapeCreation”属性设置为“false”,通过单击“Off/On”开关。

此操作将在街区(blocks)中创建地块形状的功能设置为不可用。

【CityEngine教程文档】 ---02 街道教程_第6张图片

小知识:当你处理较大数据量的道路网时,此功能可以用来阻止街道的形状创建以提高软件性能。选择一些道路和结点,在它们的“Inspector”视窗中的“Shapes”选项卡中,将“shapeCreation”的参数设置为false,能够使这些街道线和结点无法生成道路和路口。


交互式街道编辑

已生成的道路网能够进行交互式优化:

在空白区域创建更多的街道,选择一条或临近的几条街道,在街道生长对话框中调整你要生成的街道数,并单击【apply】按钮就会自动在该条路段上自动生成相应数量的街道(随机生成)。

选择你希望删除的街道,通过菜单栏中的【Edit】->【Edit】进行删除;

手工创建新的街道,使用“Create Street”工具(快捷键:G);

转换道路,设置道路宽度,修改道路弯曲,使用“Edit Street”工具;

使用变换调节器来实现单一或一组道路的转换,旋转及伸缩。

【CityEngine教程文档】 ---02 街道教程_第7张图片


在Inspector视窗中修改道路图形的属性

选中一个或多个道路段;

打开“Inspector”视窗中的“Segment”选项卡;

通过设置“streetWidth”参数,修改道路宽度;


【CityEngine教程文档】 ---02 街道教程_第8张图片 


高度再调整

场景中的地形海拔看起来有些高。

在“Scene Editor”视窗中,选中地形图层;

打开图层属性“Layer Attributes”组;

将高程属性的最大高度值“max height”由250改为220。

【CityEngine教程文档】 ---02 街道教程_第9张图片

小知识:你同样可以修改其他图层的属性。如果你有另外一个不同的高程图,选择你的新地图,“viewport”视窗中的地形也会随之改变。

现在你需要根据新的地形让街道网重新适应地形:

在“Scene Editor”视窗中选择街道网图层;

打开图形适应地形话框:【Graph】->【Align Graph to Terrain...】;

选择图形适应地形方式 :“Project All”;

选择地形图层;

单击【Finish】排列图形元素。

【CityEngine教程文档】 ---02 街道教程_第10张图片


使地形适应形状

使用【Layer】->【Align Terrain to Shapes...】功能,地形会发生变化并与形状贴合。

选中场景中的全部街道图形;

打开图形对齐对话框:【Layer】->【Align Terrain to Shapes...】;

使用默认设置,单击【Finish】结束。

【CityEngine教程文档】 ---02 街道教程_第11张图片

当地形图层的线框图被激活之后,适应后地形图的改变看起来会更明显些。

在“scene”视窗中单击街道网格图层前的眼睛图标,使其不可见,再选中地形图层

在“Inspector”视窗的图层属性(Layer Attributes)组中,将线框图的透明度(Wireframe Alpha)设置为0.3

3D视窗设置中,使线框图模型处于激活状态(viewport视窗上方的工具条)或者按一下“7”键

小知识:改变光线的方向,同样能够使地形的细节显示得更清楚些。

【CityEngine教程文档】 ---02 街道教程_第12张图片

【CityEngine教程文档】 ---02 街道教程_第13张图片

小知识:快速验证修改效果的方法,是在“Inspector”视窗中切换“elevationDelta”的激活状态(在地形图层选中的状态下)

【CityEngine教程文档】 ---02 街道教程_第14张图片

小知识:用来构建地形的原始高程图并没有被修改


地形分辨率

当使用一张高程图创建地形的时候,高程图的分辨率决定地形图的分辨率。可以在“Inspector”视窗的“layer attribute”组中对分辨进行手工调整(在地形图层选中状态下)


较高的分辨率有助于提高对齐后的地形图的精确度

小知识:需要注意,地形图层设置较高的分辨率会降低3D视窗的显示性能(取决于你电脑的显卡性能)

 

你可以直接打开“Tutorial_02_Streets/scenes/streetTutorial_01.cej”查看本教程第一部分的结果。

 

第二部分:使用CGA规则生成街道模型

教程设置

你可以继续在已经完成的场景中进行接下来的学习,或者直接打开“Tutorial_02_Streets/scenes/streetTutorial_01.cej”场景。

小知识:为了更清楚的看到道路图层,通过单击“Scene”视窗中的眼睛图标来隐藏地形图层。

【CityEngine教程文档】 ---02 街道教程_第15张图片


道路形状类型

可以看到图中有5中不同类型的街道形状被创建了,这些形状已经被赋予了"start rule(初始规则)",在“Inspector””视窗中显示了被选中形状的“start rule(初始规则)。

下图中以不同演示区分了不同类型的道路模型。初始规则是规则文件十分重要的一部分。

【CityEngine教程文档】 ---02 街道教程_第16张图片


应用规则文件

现在执行最后一步:创建真实的3D街道模型。应用CGA规则“rules/simpleStreets.cga”到街道形状上。每一个不同类型的街道形状都有一个独特的CGA初始规则作用在其上。这些初始规则的描述如下。

街道(Street):根据路宽应用街道贴图;

人行道(Sidewalk):应用人行道贴图,分布道路小品如行道树、路灯等;

十字路口(Crossing):应用道路底色贴图;

交叉路口(Junction):同十字路口;

连接入口(JunctionEntry):同十字路口。

查看“simpleStreets.cga”规则文件的细节,规则语法。参考CGA模型语法教程进一步学习该语法。

在“Scene”视窗中选择“Streetnetwork”图层

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

框选一些街道模型

单击上方工具条中的生成按钮

【CityEngine教程文档】 ---02 街道教程_第17张图片

你同样可以打开“Tutorial_02_Streets/scenes/streetTutorial_02.cej”场景,生成街道,以查看本部分教程示例的结果。


你可能感兴趣的:(文档,教程,CityEngine)