版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CityEngine城市三维建模入门教程配套课件第一章CityEngine概述
第二章街道建模
第三章手动三维建模
第四章CGA规则建模
第五章对象选择与视域分析
第六章数字模型导入与导出
第七章使用Python脚本语言课程目录CATALOG课程目录与教程目录对应关系CATALOG第一章CityEngine概述,对应教程:第1章CityEngine概述第二章街道建模,对应教程:第2章街道建模第三章手动三维建模,对应教程:第3章手动三维建模第四章CGA规则建模,对应教程:第4章CGA规则建模、第5章CGA形状编辑操作、第6章CGA纹理贴图操作、第7章CGA属性及属性设置、第8章CGA程序结构与规则函数、第9章CGA常用内置函数、第10章CGA注解与样式第五章对象选择与视域分析,对应教程:第11章对象选择与视域分析第六章数字模型导入与导出,对应教程:第12章数字模型导入与导出第七章使用Python脚本语言,对应教程:第13章使用Python脚本语言注:本课件中出现“教程”视为配套图书《CityEngine城市三维建模入门教程》的简称。第一章概述1.1CityEngine发展概述1.2CityEngine建模特点1.3CityEngine软件界面1.4CityEngine工程组织方式1.5CityEngine图层介绍及操作CATALOGCityEngine最早可追溯到2001年的瑞士苏黎世联邦理工学院和中影公司联合发表的《ProceduralModelingofCities》论文,该研究提出并探讨了使用程序模拟城市的可行性。2008年,瑞士Procedural公司正式发布了第一个商业版本的CityEngine2008。随后,该公司在2009年和2010年先后推出了CityEngine2009版本和CityEngine2010版本。2011年,美国环境系统研究所公司(ESRI)收购了Procedural公司,并将软件更名为EsriCityEngine。同年,ESRI公司成立了苏黎世研发中心,专注于城市设计、三维建模和地理信息系统(GIS)集成。自2011年11月至2016年6月,ESRI公司每隔一年更新一版。在这六年的发展中,EsriCityEngine与ArcGIS深入集成,全面支持地图投影坐标系,支持FileGDB文件和Shapefile文件,增加建模规则,扩展植物库,改善用户界面,使其具有更好的用户体验。1.1CityEngine发展概述在2017年,ESRI公司推出了EsriCityEngine2017版本。相比之前的版本,该版本呈现了一个完全改进的图形用户界面,引入了全新的工具栏图标集,更新了窗口选项卡和其他用户界面元素外观,提供了非常重要的测量工具,重新设计了光标以突出显示当前活动的工具状态,实施了新颖的3D导航系统,改进及扩展了CGA规则函数,完善了数据导入和导出功能,增强了虚拟现实(VR)体验,提高了软件的易用性。在此之后,EsriCityEngine2018版本进一步丰富了手动建模工具和程序建模函数库,完善了新建高程数据工作流,改进了对ArcGIS平台的支持和对虚幻引擎(UnrealEngine)的支持。另外,检查器和视窗也有显著改进。随后,EsriCityEngine2019版本再次丰富了手动建模工具和程序建模函数库,同时改进了检查器窗口和3D数据的导入/导出,支持虚幻工作室(UnrealStudio)和Web3D场景,集成了ArcGISUrban。1.1CityEngine发展概述在2020年,ESRI公司将EsriCityEngine更名为ArcGISCityEngine,并发布了2020版本。随后,ESRI公司在2021年又发布了ArcGISCityEngine2021版本。至此,CityEngine已成为ArcGIS系列的正式组成部分,也体现了CityEngine与ArcGIS产品无缝协作的目标。ArcGISCityEngine相比EsriCityEngine2019版本在软件界面和操作方面并无显著区别,只是在渲染材质,支持外部模型以及模型编辑方面有所改进,主要体现在改进了对基于物理渲染(PBR)材质的显示,对Pixar公司的开源通用场景描述(USD)数据格式的支持,增加了交互式设计的工具选项。另外,在软件操作界面上提供了对中文的支持,在CGA规则中增加了对数组的支持,对CSV文件的支持。截止目前,ESRI公司已推出ArcGISCityEngine2023版本。1.1CityEngine发展概述各版本的详细特点请点击以下网址查看:/en/cityengine/latest/whats-new/cityengine-release-notes.htm1.2CityEngine建模特点(1)使用GIS数据作为背景底图在大规模场景的城市建模中,所有的地理实体都可以用GIS数据描述,CityEngine全面支持GIS数据。(2)使用CGA规则进行程序建模在大规模场景内,使用CGA规则建模,可以显著提高3D建模效率,降低建模成本。对于重复性出现的建模任务,可使用Python进一步简化工作流程,加快建模进度和保证建模质量。(3)使用属性和注解自定义用户界面通用性的CGA规则可作为CityEngine的插件,比如双跑直行楼梯规则通过修改台阶和中间平台的尺寸参数可适应几乎全部的直跑楼梯和双跑直行楼梯建模,而台阶和中间平台的尺寸参数可通过使用CGA规则的属性和注解将其作为接口显示在检查器的规则面板中,也就是说允许用户在检查器中自定义参数界面,以适应当前的楼梯建模任务。1.2CityEngine建模特点1.3CityEngine软件界面CityEngine界面大致可分为主菜单、工具条、导航器(Navigator)、场景编辑器(SceneEditor)、CGA规则编辑器、模型视图(如3DView、TopView)、检查器(Inspector)、控制台(Console)。文件编辑
选择
图层
图形
形状
分析
搜索
脚本窗口ArcGIS城市帮助主菜单主要包括:文件(File)、编辑(Edit)、选择(Select)、图层(Layer)、图形(Graph)、形状(Shapes)、分析(Analysis)、搜索(Search)、脚本(Scripts)、窗口(Window)、帮助(Help)。主菜单主菜单各工具的介绍见教程第4页。工具条主要包括选择、导航摄像机、变换工具、坐标系、数值输入框、街道建模工具、形状建模工具、CGA生成模型、测量、视域分析和环境设置等内容。工具条测量视域分析环境设置选择导航相机变换工具坐标系数值输入框街道建模工具形状建模工具CGA生成模型1.3CityEngine软件界面工具条中各工具的详细介绍见教程第8页。导航器导航器用于查看和管理项目文件。在该面板中,通过使用鼠标右键快捷菜单,可对文件或图像进行基本的操作处理。场景编辑器在导航器中用鼠标左键双击场景文件,会打开场景编辑器,用于对场景中的各个图层组、图层及对象进行编辑和管理。每个图层右侧提供了设置颜色(SetColor),锁定(Lock/Unlock)和显隐(SetVisibility)操作。规则文件编辑器在导航器中用鼠标左键双击CGA规则文件,会打开规则文件编辑器,用于对CGA规则进行编辑。该编辑器会高亮显示CGA关键字并提供语法错误检查。导航器场景编辑器规则编辑器1.3CityEngine软件界面模型视图CityEngine提供了多种模型视图,包括:3D视图(3DView),顶面视图(TopView),正面视图(FrontView)、侧面视图(SideView)等。默认情况下,只显示3D视图,如需创建其他视图可通过主菜单Window->NewViewport完成。1.3CityEngine软件界面模型视图中各操作的详细介绍见教程第11页。检查器检查器(Inspector)是查看和修改CityEngine对象的主要工具。根据所选对象的类型,检查器呈现相应的交互界面以提供对对象属性的完全访问权限。CityEngine提供了控制台(Console)面板,用于实时输出CGA命令或Python脚本产生的文本,同时也支持Python命令的输入。在控制台顶部工具栏显示了控制台不同类型的切换操作。控制台类型主要包括:CGA控制台,Python输出控制台和Python输入控制台。控制台状态条CityEngine的状态条主要用于实时显示当前的内存使用情况,这在进行大规模场景的模型转换时非常有用,此外还会显示当前的场景坐标系。1.3CityEngine软件界面1.4CityEngine工程组织方式CityEngine的工程(Project)由多个文件夹及文件构成。当新建一个工程时,通常会自动产生“assets(资产)”,“data(数据)”,“images(图像)”,“maps(地图)”,“models(模型)”,“rules(规则)”,“scenes(场景)”,“scripts(脚本)”等文件夹。资产:用于存放建模中所使用的所有纹理图片和静态模型。在使用CGA规则时,会调用此文件夹中的资产文件。在建模中,可通过双击资产文件在预览窗口(Preview)中预览外观。数据:此文件夹可包含任意补充数据。如导入的矢量数据,每个场景的仪表板(Dashboard)配置文件以及每个图层的高程增量文件等。在建模中与之相关的资料文件,如插图和草图,也可放在此处。图像:其他图像(如视图快照文件)存储在此处。地图:用于存储创建地图图层所使用的地图图像。如遥感影像,高程数据或障碍物图。CityEngine支持多种位图文件格式,如“*.jpg”,“*.png”,“*.tif”等。模型:CityEngine导出3D模型的默认位置。规则:用于存储CGA规则文件(*.cga)。双击CGA文件可直接在CGA编辑器中打开。场景:用于存储CityEngine的场景文件(*.cej)。双击场景文件将关闭当前场景并打开新选择的场景。脚本:用于存储Python脚本文件(*.py)。1.4CityEngine工程组织方式通常,CityEngine中的工程由多个场景组成,每个场景包含多个方案(Scenario),每个方案包含多个图层(可以为单个或多个地图图层、图形图层、形状图层、静态模型图层、分析图层)。特定的图层(如形状图层)通过调用CGA规则文件来构建三维模型。1.5CityEngine图层介绍及操作CityEngine中的图层主要包括图形(Graph)图层、形状(Shape)图层、静态模型(StaticModel)图层、分析(Analysis)图层和地图(Map)图层。形状(Shape)是CityEngine场景中的基础要素。无论是街道建模还是街区建模,抑无论是手动建模还是规则建模,形状都是最重要的实体。创建形状对象可以使用导入外部矢量数据的方式,也可以使用形状建模工具直接创建。形状图层图形(Graph),简称图,由边和结点构成。在地理信息系统中,如果将街道抽象为线要素,则边由街道中心线构成,结点由中心线的交叉点构成。街道相互串联构成了街道网络,它代表了城市的脉络,描述了城市的布局。图形图层静态模型(StaticModel)是指由第三方建模软件生成的三维模型,通常为单体或小品模型(如建筑物、植物、人物、动物等)。导入静态模型生成的图层称为静态模型图层。静态模型在CityEngine中不可被编辑,此其顶点不能被移动,纹理不能被更改,也不能使用规则进行驱动。对于复杂、难以建模的模型,如人物、植物、动物、车辆、水法等通常可采用静态模型导入的方式,丰富场景模型。静态模型图层分析(Analysis)图层是采用视域分析(VisibilityAnalysis)工具生成的图层。分析图层1.5CityEngine图层介绍及操作地图图层CityEngine中的地图图层主要有两个作用:一是将图像数据(如遥感影像)作为地图对象添加到场景中;二是创建图像数据到各种属性(如坐标、分辨率、高程值等)的映射。地图图层包括五种类型:地形图层(Terrain),纹理图层(Texture),障碍图层(Obstacle),映射图层(Mapping)和函数图层(Function)。1.5CityEngine图层介绍及操作Layer图层操作CityEngine涉及图层的操作主要位于主菜单Layer中,包括:复制图层(DuplicateLayer)、合并图层(MergeLayers)、框架图层(FrameLayer)、复制图层组(DuplicateLayerGroup)、新建图层组(NewLayerGroup)、新建图形图层(NewGraphLayer)、新建形状图层(NewShapeLayer)、新建静态模型图层(NewStaticModelLayer)、新建分析图层(NewAnalysisLayer)、新建地图图层(NewMapLayer)、对齐地形到形状(AlignTerraintoShapes)、重置地形(ResetTerrain)、对齐静态模型到地形(AlignStaticModelstoTerrain)1.5CityEngine图层介绍及操作颜色锁定显隐CityEngine为场景(Scene)方案中的图层或图层组提供了设置颜色(SetColor),锁定(Lock/Unlock)和显隐(SetVisibility)操作。Scene图层操作1.5CityEngine图层介绍及操作在Scene图层上,使用鼠标右键打开快捷带单,可以实现图层的复制、剪切、粘贴、删除、重命名等基本操作。此外,在不同图层之间可以对形状要素使用标准的剪切、复制和粘贴操作。第二章街道建模2.1创建新项目2.2创建新场景2.3创建地形数据2.4创建街道图层2.5街道网络及属性2.6随机街道建模2.7手动街道建模2.8创建街区CATALOG2.1创建新项目在主菜单上点击File->New,打开New对话框,选择CityEngineproject,然后输入新项目名称,点击Finish,完成新项目的创建。2.2创建新场景在文件夹scenes上点击鼠标右键,点击New->CityEngineScene,进入新建场景对话框,设置场景路径、名称和坐标系后,点击Finish。创建后的空白场景如下图所示。点击Layer->NewMap
Layer,打开新建地图图层对话框,设置对应参数,点击Finish结束。2.3创建地形数据在场景中新建街道图层,可通过点击主菜单的Layer->NewGraphLayer实现。或在场景管理器(*Scene)的快捷菜单中选择New->NewGraphLayer实现。在已创建的街道图层上,应用手动街道建模工具可以绘制任意形状的街道。(a)(b)2.4创建街道图层街道网络的构成使用CityEngine的街道建模工具生成的街道图层由Network(网络)和Blocks(块或街区)组成,其中Network包括Edge/Segment(边/段)和Node(结点)。无论是边、结点还是块,都由若干Shape(形状)组成。2.5街道网络及属性Edge中的ShapeBlock中的ShapeNode中的Shape街道属性完整的街道由形状(Shape)、块(Block)、路段(Segment)和结点(Node)构成。因此当选择创建的街道全部要素后,会在检查器中查看到这四项属性,如果选择单个要素,只能查看到对应的单项属性。形状属性:提供了形状参数、规则、报告、对象属性、顶点和信息等内容。块属性:提供了块参数、对象属性、顶点和信息等内容。路段属性:提供了街道参数、对象属性、顶点和信息等内容。结点属性:提供了交叉点参数、对象属性、顶点和信息等内容。2.5街道网络及属性点击模型视图中的3D
View,使其成为活动窗口。在主菜单上点击Graph->GrowStreets,打开生成街道(GrowStreets)对话框,设置相应参数,点击Apply。设置街道类型,Organic:有机型,Raster:栅格型,Radial:辐射型2.6随机街道建模使用随机街道建模工具创建的街道效果。CityEngine中的手动街道建模工具全部放置在主菜单的图形(Graph)中,主要包括手绘街道(FreehandStreetCreation)、多边形街道(PolygonalStreetCreation)、编辑街道(EditStreets/Curves)、设置街道参数(StreetCreationSettings)、设置曲线硬直(SetCurvesStraight)、设置曲线平滑(SetCurvesSmooth)、曲线自动平滑(CurvesAutoSmotth)、生成桥梁(GenerateBridges)、简化图形(SimplifyGraph)、清理图形(CleanupGraph)、对齐图形到地形(AlignGraphtoTerrain)、调整街宽到形状(FitWidthstoShapes)其中手绘街道、多边形街道、编辑街道、清理图形及对其图形到地形等常用操作被布局在工具条上。2.7手动街道建模本课件仅讲解常用的手绘街道、多边形街道和编辑街道等工具的基本操作,其他工具的详细介绍见教程第34~41页。手动街道建模工具2.7手动街道建模手绘街道首先在文件夹scenes上用鼠标左键点击已创建好的Graph图层,然后激活3DView视图。点击主菜单Graph->FreehandStreetCreation工具,或在工具条上直接点击工具,然后在3DView视图中绘制街道。如果停止绘制,按ESC或Enter键结束。2.7手动街道建模使用创建手绘街道工具可以徒手绘制任意形状的街道。多边形街道首先在文件夹scenes上用鼠标左键点击已创建好的Graph图层,然后激活3DView视图或TopView视图。点击主菜单Graph->PolygonalStreetCreation工具,或在工具条上直接点击工具,然后在3DView视图中绘制街道,其他操作类似手绘街道。2.7手动街道建模编辑街道首先在文件夹scenes上用鼠标左键点击已创建好的Graph图层,然后激活3DView视图。点击主菜单Graph->EditStreets/Curves工具,或在工具条上直接点击工具,然后在3DView视图中用鼠标左键点击要编辑的街道要素。编辑街道工具可对街道结点(Node)和宽度(Width)进行编辑,并显示两种手柄:曲线手柄和街道宽度手柄。2.7手动街道建模(a)(b)首先在Scene面板中用鼠标左键点击已创建的Graph图层,然后激活3DView视图,用鼠标左键点击多边形街道(PolygonalStreetCreation)工具绘制由四条街道围成的街区。2.8创建街区和创建街道方式类似,创建街区既可以使用随机方式,也可以采用手动方式。随机创建街区过程如下。创建街区中各参数的详细说明见教程第43~44页。第三章手动三维建模3.1创建形状图层3.2手动建模工具3.3形状建模工具3.4变换工具3.5测量工具3.6手动三维建模示例CATALOG由于手动三维建模是针对形状(Shape)进行操作,因此需要在场景中新建形状或街道图层。使用鼠标左键双击已创建的场景文件,打开场景器*Scene及3DView窗口。然后在场景器的快捷菜单中选择New->NewShape/GraphLayer操作,并为之命名。也可以在主菜单上点击Layer->NewShape/GraphLayer按钮,新建形状及街道图层。3.1创建形状图层创建后的空白形状图层效果。CityEngine的主菜单提供了简单实用的手动建模工具,用于手动创建三维模型。在主菜单工具条上布局了常用的变换工具,街道建模工具,形状建模工具和测量工具。其中形状建模工具只能绘制基础简单的形状,如需绘制复杂的形状,需使用GIS软件完成。3.2手动建模工具主菜单中的手动建模工具多边形矩形圆形清理贴图对齐地形形状建模工具位于主菜单形状(Shapes)中,主要包括:多边形建模(PolygonShapeCreation),矩形建模(Rec.ShapeCreation),圆形建模(CircularShapeCreation),形状细分(Subdivide),分离面(SeparateFaces),形状融合(CombineShapes),形状合并(UnionShapes),形状裁剪(SubtractShapes),形状偏移(OffsetShapes),移除孔洞(RemoveHoles),反向法线(ReverseNormals),设置首边(SetFirstEdge),模型转形状(ConvertModelstoShapes),形状贴图(TextureShapes),形状清理(CleanupShapes)和对齐地形(AlignShapestoTerrain)等。其中,多边形建模,矩形建模,圆形建模,形状贴图,形状清理和对齐地形等常用工具被布局在主菜单快捷工具条上。3.3形状建模工具本课件仅对常用的多边形建模、矩形建模、圆形建模、形状切割、形状贴图、形状细分、形状融合、形状合并、形状裁剪、形状偏移等工具进行介绍,其他工具的详细说明见教程第48~63页。多边形建模使用多边形建模(PolygonShapeCreation)工具可绘制任意形状的多边形,通过推拉多边形可创建三维几何体。点击Scene场景中的Shape形状图层,点击多边形建模快捷工具(PolygonShapeCreation),在3DView视图中绘制多边形,如果需要精确绘制,可以联合数值输入框(NumericalInput)中的输入数值完成多边形的绘制。3.3形状建模工具在绘制多边形时,可通过按下键盘“A”键,使之在直线和弧段之间切换。当处于弧段模式下,可使用鼠标左键拖动蓝色球的位置来调整弧段方向,然后移动鼠标左键的位置来调整弧段半径。另外,通过滑动鼠标滚轮可以更改弧段的边数。(a)(b)多边形建模3.3形状建模工具使用多边形建模工具不仅可以绘制平面形状,还可以通过推拉的方式创建三维几何体。使用鼠标左键点击工具条上的多边形建模(PolygonShapeCreation)工具,然后将鼠标指针悬停在多边形的面或边上,此时会出现橙色的可拖动的球形手柄。用鼠标左键按住该橙色球向多边形的法线方向或切线方向进行推拉,可创建三维形状。当使用鼠标左键拖动球形手柄时,程序会自动捕捉附近的顶点。如果需要精确建模,可配合使用数值输入框(NumericalInput)。多边形建模矩形建模使用距形建模(RectangularShapeCreation)工具可绘制任意尺寸的长方形,通过推拉长方形可创建长方体。点击Scene场景中Shape形状图层,点击矩形建模(Rec.ShapeCreation)工具,在3DView视图中绘制距形,建模过程和多边形建模类似。3.3形状建模工具圆形建模使用圆形建模(CircularShapeCreation)工具可绘制任意尺寸的圆形,通过推拉圆形可构建圆柱体。点击Scene场景中Shape形状图层,点击圆形建模(CircularShapeCreation)工具,在3DView视图中绘制圆形,建模过程和多边形建模类似。3.3形状建模工具形状切割综合使用多边形建模工具,矩形建模工具和圆形建模工具可实现任意形状切割。(a)(b)(c)3.3形状建模工具(a)(b)形状贴图形状贴图(TextureShapes)工具用于向选定形状填充纹理图片。选择要填充纹理的形状,然后点击形状贴图按钮,打开ShapeTexturingTool对话框,设置相关参数,点击Assign完成填充。3.3形状建模工具形状细分形状细分(Subdivide)工具会根据输入形状计算出较小的形状。可以使用各种参数来实现不同的细分布局。该工具只能在静态形状上运行。选中要细分的形状,然后点击主菜单的Shapes->Subdivide…,打开细分对话框,设置相应参数,点击Apply完成操作。3.3形状建模工具形状细分参数说明形状细分方式主要包括:递归(Recursive)(左图)、偏移(Offset)(中图)、骨架线(Skeleton)(右图)和无细分(NoSubdivision)。递归细分偏移细分骨架线细分形状细分工具各参数的详细说明见教程第59页。形状融合形状融合(CombineShapes)工具会将独立的形状融合为统一整体。(a)(b)(c)3.3形状建模工具形状合并形状合并(UnionShapes)工具会将独立子形状合并为一个整体形状,该工具和形状融合工具不同,区别在于是否保留子形状的边界。3.3形状建模工具形状裁剪形状裁剪(SubtractShapes)工具用于将相互重叠的形状按重叠边线进行裁剪,裁剪结果和选中多边形的次序有关。(b)(a)(c)矩形A矩形B3.3形状建模工具形状偏移形状偏移(OffsetShapes)工具用于在初始形状上按偏移距离缩放初始形状,但会保留初始形状。(b)(a)(c)在圆形内执行形状偏移将产生圆环3.3形状建模工具3.4变换工具移动缩放旋转变换工具位于主菜单编辑(Edit)中,主要包括:形状移动(MoveTool),形状缩放(ScaleTool)和形状旋转(RotateTool)。变换工具被布局在主菜单快捷工具条上。在形状上选中要移动的要素,点击形状移动(MoveTool)按钮,会显示黄色球形手柄,用鼠标拖动手柄移动即可,如需精确移动,可在数值输入框输入x|y|z方向的偏移量。形状移动(a)(b)(c)移动面移动侧边移动顶点3.4变换工具形状缩放(ScaleTool)用于对形状进行缩小和放大,其具体操作和形状移动类似。选中要缩放的要素(体、面、边),点击形状缩放(ScaleTool)按钮执行操作即可。形状缩放缩放形状体缩放侧面缩放侧边(a)(b)(c)3.4变换工具形状旋转(RotateTool)用于对形状进行旋转,其具体操作和形状移动类似。选中要旋转的要素(体、面、边),点击形状旋转(RotateTool)按钮执行操作即可。形状旋转旋转形状体旋转面旋转边(a)(b)(c)3.4变换工具3.5测量工具测量工具位于主菜单编辑(Edit)中,用于辅助形状建模和3D空间分析,主要包括:测量距离(MeasureDistance),测量面积和路径(MeasureAreaandPath)。测量工具被布局在主菜单快捷工具条上。测量距离(MeasureDistance)工具用于测量形状中任意指定两点的距离。测量距离测量距离测量面积和路径(a)(b)测量面积和路径测量面积和路径(MeasureAreaandPath)工具用于测量形状中任意指定多边形的面积和路径长度(即多边形的周长)。(a)(b)3.5测量工具3.6手动三维建模示例——楼梯建模3m4.5m0.8m0.3m0.2m综合使用手动三维建模工具可构建复杂的三维模型。本课件对应的教程中给出了构建楼梯的详细过程(第67~70页),最终楼梯建模的效果如下图。第四章CGA规则建模CATALOG4.1CityEngine坐标系4.2创建和使用CGA规则文件4.3CGA基本语法4.4CGA形状编辑操作4.5CGA纹理贴图操作4.6CGA属性及属性设置4.7CGA程序结构与规则函数4.8CGA常用内置函数4.9CGA注解与样式4.1CityEngine坐标系在CityEngine的三维建模中,无论是手动建模还是CGA规则建模都会涉及到坐标系,它不仅定义了模型的位置、方位,还控制着模型创建过程中每个面及边点的定位,纹理贴图的大小和位置。CityEngine的坐标系部署在场景中,可在3D视图中进行可视化。CityEngine提供了五种不同的坐标系,分别是世界坐标系、场景坐标系、对象坐标系、枢轴坐标系、范围坐标系。世界坐标系世界坐标系(WorldCoordinateSystem)是指整个场景所处的全局空间直角坐标系,它以格网中粗十字线交点为原点,它定义了每个形状相对该原点的空间坐标位置,其空间范围最广。世界坐标系具有三个分量,分别为x、y、z轴。其中y轴指向向上,x轴指向正东,z轴指向正南。它们可在视图设置中,通过显示坐标轴、格网和罗盘进行可视化。世界坐标系的轴向在3D视图中和CityEngine坐标系(CityEngineCS)的轴向一致。4.1CityEngine坐标系场景坐标系场景坐标系(SceneCS)是指整个场景所处的地理坐标系,它通常以地球赤道和投影带的中央经线的交点为原点,它定义了每个形状相对该原点的地理空间参考,其空间范围限于投影平面内。场景坐标系具有三个分量,分别为x、y、z轴。其中z轴指向向上,x轴指向正东(经度向),y轴指向正北(纬度向)。它们可在视图设置中,通过显示坐标轴、格网和罗盘进行可视化。场景坐标系的轴向在3D视图中可通过视图设置(Viewsettings)->查看坐标系(Viewcoordinatesystem)进行查看。4.1CityEngine坐标系通常,每个形状都具有一个局部坐标系,用于标识自身的坐标方向,便于使用变换工具进行处理,称之为对象坐标系(ObjectCoordinateSystem)。其原点设置在初始形状的首边的第一个点上,并且轴向定义为x轴沿着第一条边,y轴沿着第一面的法线,z轴垂直于xy平面。对象坐标系对象坐标系具有位置和方向属性,可通过initialShape.origin.p{x|y|z}属性获取对象相对于世界坐标系原点的位置,通过initialShape.origin.o{x|y|z}获取对应方向。4.1CityEngine坐标系枢轴坐标系4.1CityEngine坐标系枢轴坐标系(PivotCoordinateSystem)用于描述对象中每个子形状的位置状态,它基于对象空间坐标系定义了每个子形状相对于对象坐标系原点的位置。枢轴坐标系的原点设置在子形状首边的第一个点上,并且沿着首边的方向定义为x轴,沿着第一面的法线方向定义为y轴,沿着xy平面的法线方向定义为z轴。枢轴坐标系具有枢轴属性,可通过pivot.p{x|y|z}属性获取枢轴位置,通过pivot.o{x|y|z}获取枢轴方向。每个形状都有一个关联的范围坐标系(ScopeCoordinateSystem)。他基于枢轴空间坐标系定义了形状的边界框尺寸。典型的形状变换会在范围坐标系上运行。范围坐标系具有范围属性,可通过scope.t{x|y|z}属性获取形状的平移向量,通过scope.r{x|y|z}获取形状的旋转向量,通过scope.s{x|y|z}获取形状的尺寸向量,通过scope.elevation获取形状的高度。范围坐标系4.1CityEngine坐标系各坐标系之间的关系世界坐标系(原点)对象坐标系(原点)枢轴坐标系(原点)范围坐标系范围坐标系枢轴坐标系对象坐标系世界坐标系场景坐标系()4.2创建和使用CGA规则文件在rules文件夹上,点击鼠标右键选择New->CGARuleFile,打开CGARuleFile对话框,输入文件名,点击Finish结束。编辑新创建的规则文件代码如下。version
"2019.0"//版本号@startRule//显式声明起始规则//Lot为起始形状Lot-->extrude(10)//拉伸10m
color("#00FF00")//填充绿色
X.
//X.为终端形状选择绘制的矩形地块,点击Inspector属性框中的Shape面板,设置Rules相应参数,或在主工具条上点击分配规则文件(Assignrulefile)按钮选择规则起始结点。点击主工具条中的Generate按钮,生成三维模型。(a)(b)在形状图层上使用矩形建模工具绘制尺寸为20m*20m的矩形形状。
CGA规则的表达CGA规则的基本思想是用多个新形状替换具有特定形状符号的旧形状,基本语法:PredecessorShape-->SuccessorPredecessorShape为前驱形状,由形状符号标识,“-->”表示执行规则,Successor为后继形状,由形状操作和形状符号构成。形状操作会更改当前形状,形状符号会创建当前形状的副本(带有新的形状符号),并将其作为活动形状添加到形状树中。如果存在新形状符号的规则,则随后导出新形状,否则它将成为叶子形状。4.3CGA基本语法注意:CGA规则区分字母大小写B形状C形状定义下面CGA规则:A->Bt(30,0,0)C.在上述规则执行过程中,首先创建A形状的副本,并将其形状符号设置为B和C。其中B形状没有任何的操作,C形状具有平移t()操作,即将其沿x轴移动30个单位。如果没有匹配B形状的规则,则生成过程结束,但此时B形状会提示“未定义规则(UndefinedRule)”的警告。C形状后面加了“.”表示该形状为终端形状,之后再有关于C形状的规则不再执行。执行上述规则相当于对模型A进行了复制和平移操作。
CGA起始规则每一个CGA规则文件都有一个或多个起始规则入口,用于显式标识规则的起始运行,基本语法:@StartRuleLot-->SuccessorLot为CGA规则初始形状符号缺省名称,可以任意定义。当存在多个规则时,应使用注解@StartRule为起始规则作显式声明。Successor为后继形状。4.3CGA基本语法//初始形状:20m*20m@startRule//显式声明起始规则Lot1-->AA-->extrude(20)@startRule//显式声明起始规则Lot2-->extrude(15)B@startRule//显式声明起始规则Lot3-->extrude(10)color(1,0,0)C.Lot1初始形状生成了A形状A形状执行了拉伸操作(A形状后面没有形状符,默认为A形状)Lot2初始形状生成了B形状,B形状执行了拉伸操作Lot3初始形状生成了C形状,C形状执行了拉伸和着色操作,且C形状为终端形状,标识该形状规则的终止CGA起始规则示例在编写CGA规则之前,CityEngine提供了version关键字来定义为其编写规则的版本号,以此检测潜在的代码不兼容性。这种不兼容性主要由新功能函数和现有功能函数的不匹配导致。尽管前者相对来说没有太大问题,但后者通常是不希望的,仅在需要纠正明显的错误或其它缺点时才会发生。有关潜在不兼容性的警告会写入日志。关于CGA版本之间的更改的描述,可参见CGA更改日志。版本号4.3CGA基本语法行注释:在注释内容前面使用//
或#
字符。段落注释:在注释内容前后使用/*…*/
字符。行内注释:在CGA语句中对需要注释的内容添加/*…*/
字符。CGA提供了三种注释方式,分别是行注释、段落注释和行内注释。version
"2019.0"
//版本号//行注释,使用C注释符#行注释,使用Python注释符/*段落注释,使用C注释符*/@StartRule//@注解符,显式声明规则起始形状
Lot-->//Lot为起始形状
extrude/*拉伸10m*/(10)
X.
//X.为终端形状
CGA注释4.3CGA基本语法4.4CGA形状编辑操作拉伸操作extrude()操作用于将形状沿着面法线或拉伸类型指定的方向进行拉伸,通常将地块向上挤出一个高度,基本语法:
extrude(distance)extrude(extrusionType,distance)参数说明见教程第84页。//初始形状:20m*20m矩形Lot-->
extrude(y,20)
A.颜色操作color()函操作用于给形状着色,基本语法:
color(s)color(r,g,b)color(r,g,b,o)@StartRuleLot-->
extrude(20)
color("#FFCC00")A.
@StartRuleInit-->
extrude(20)
color(0.5,1,0,0.4)B.
参数说明见教程第85页。4.4CGA形状编辑操作锥体操作taper()操作用于将形状沿着面法线拉伸为锥体形状,基本语法:taper(distance)//初始形状:20m*20m矩形Lot-->
taper(20)
color(0.5,0.5,0.5)
A.参数说明见教程第86页。4.4CGA形状编辑操作内部矩形操作innerRectangle()操作用于寻找几何体中平行于scopeY轴和scopeX轴几何范围面积最大的矩形,基本语法:
innerRectangle(alignment){selectoroperatoroperations|selectoroperatoroperations}参数说明见教程第86页。4.4CGA形状编辑操作//初始形状:20m*20m,不规则矩形Lot-->
innerRectangle(edge){shape:extrude(10)
color(0.5,0.5,0.5,0.3)
A.
|remainder:color(0,1,0)B.
}原生四边形操作primitiveQuad()操作用于在当前形状范围内生成一个四边形几何体,基本语法:primitiveQuad()primitiveQuad(width,length)参数说明见教程第87页。4.4CGA形状编辑操作//初始形状:20m*20m,不规则矩形Lot-->
primitiveQuad(10,15)
extrude(10)
color(0,1,0,0.3)
X.原生圆形操作primitiveDisk()操作用于在当前形状范围内生成一个圆形几何体,基本语法:primitiveDisk()primitiveDisk(nVertices)primitiveDisk(nVertices,radius)参数说明见教程第88页。4.4CGA形状编辑操作//初始形状:20m*20m,不规则矩形Lot-->
primitiveDisk(16,6)
extrude(10)
color(0,1,0,0.3)
X.原生立方体操作primitiveCube()操作用于在当前形状范围内生成一个长方体,基本语法:primitiveCube()primitiveCube(width,height,depth)参数说明见教程第88页。4.4CGA形状编辑操作//初始形状:20m*20m,不规则矩形Lot-->
primitiveCube(8,8,8)
color(0,1,0,0.3)
X.原生球体操作primitiveSphere()操作用于在当前形状范围内生成一个球体,基本语法:primitiveSphere()primitiveSphere(sides,divisions)primitiveSphere(sides,divisions,radius)参数说明见教程第89页。4.4CGA形状编辑操作//初始形状:20m*20m矩形Lot-->
primitiveSphere()
color(0,1,0)
X.原生柱体函数primitiveCylinder()操作用于在当前形状范围内生成一个圆柱体,基本语法:primitiveCylinder()primitiveCylinder(sides)primitiveCylinder(sides,radius,height)4.4CGA形状编辑操作//初始形状:20m*20m矩形Lot-->
primitiveCylinder(16,5,10)
color(0,1,0)
X.参数说明见教程第90页。原生锥体操作primitiveCone()操作用于在当前形状范围内生成一个圆锥体,基本语法:primitiveCone()primitiveCone(sides)primitiveCone(sides,radius,height)参数说明见教程第91页。4.4CGA形状编辑操作//初始形状:20m*20m矩形Lot-->
primitiveCone(16,5,10)
color(0,1,0)
X.插入外部模型操作i()操作用于插入外部3D模型(一般是单体或小品模型)到当前形状中,基本语法:i(geometryPath)i(geometryPath,upAxisOfGeometry)i(geometryPath,upAxisOfGeometry,insertMode)参数说明见教程第91页。4.4CGA形状编辑操作//初始形状:20m*20m矩形Lot-->i("models/tree/tree.obj")
T.组件操作comp()操作用于从模型中分离出满足一定条件的面、边或点模型,基本语法:comp(compSelector){selectoroperatoroperations|selectoroperatoroperations...}
4.4CGA形状编辑操作参数说明见教程第92页。//初始形状:40m*40m矩形Lot-->
extrude(40)
comp(f){
front:color(1,0,0)FrontFacade.
|top:color(0,0,1)TopFacade.|side:color(0,1,0)SideFacade.
}前面侧面顶面切割操作split()操作用于将形状沿着特定方向切割为若干子形状,CityEngine提供了两种切割类型,分别为基于笛卡尔空间和纹理空间。其中,笛卡尔空间中的spit()操作,基本语法:split(splitAxis){size1:operations1|size2:operations2|...|sizen-1:operationsn-1}split(splitAxis){size1:operations1|size2:operations2|...|sizen-1:operationsn-1}*split(splitAxis,adjustSelector){size1:operations1|...|sizen-1:operationsn-1}split(splitAxis,adjustSelector){size1:operations1|...|sizen-1:operationsn-1}*4.4CGA形状编辑操作参数说明见教程第96页。//初始形状:40m*40m矩形Lot-->
extrude(40)
split(y){20:color(1,0,0)A.
|15:color(0,0,1)B.|~5:color(0,1,0)C.
}切割操作示例//初始形状:40m*40m矩形Lot-->
extrude(40)
split(y){20:color(1,0,0)A|15:color(0,0,1)B|~5:color(0,1,0)C.
}A-->
split(y){~5:D.}*B-->
split(x){2:E.|{4:E.}*|2:E.}切割面积操作splitArea()操作用于将形状按面积大小切割为若干子形状,基本语法为:
splitArea(splitAxis){area1:operations1|...|arean-1:operationsn-1}splitArea(splitAxis){area1:operations1|...|arean-1:operationsn-1}*splitArea(splitAxis,adjustSelector){area1:operations1|...|arean-1:operationsn-1}splitArea(splitAxis,adjustSelector){area1:operations1|...|arean-1:operationsn-1}*参数说明见教程第100页。4.4CGA形状编辑操作//初始形状:40m*40m矩形Lot-->
splitArea(x){'0.5:extrude(20)A.|'0.3:extrude(10)B.|~5:extrude(15)C.
}偏移操作offset()操作用于将多边形内缩与外放,基本语法:
offset(offsetDistance)offset(offsetDistance,offsetSelector)参数说明见教程第101页。4.4CGA形状编辑操作//初始形状:40m*40m矩形Lot-->
primitiveDisk(32,18)
offset(2,border)
extrude(10)
color(1,0,0)
X.退步操作setback()操作用于多边形的内缩,基本语法:setback(setbackDistance){selectoroperatoroperations|selectoroperatoroperations...}setback(setbackDistance,uvSet){selectoroperatoroperations|selectoroperatoroperations...}4.4CGA形状编辑操作参数说明见教程第102页。//初始形状:40m*40m矩形Lot-->
setback(5){side:Garten
|remainder:Building
}
/*设置后退距离5米,后退的这部分作为绿地Garten,剩余的作为Building*/
Garten-->color("#00ff00")
extrude(1)X.
Building-->offset(-2,inside)
extrude(20)Y.退步操作示例L型操作shapeL()操作用来绘制L型形状,基本语法:shapeL(frontWidth,leftWidth){selectoroperatoroperations|selectoroperatoroperations}4.4CGA形状编辑操作参数说明见教程第105页。//初始形状:40m*40m矩形Lot-->
shapeL(20,10){shape:building|remainder:grass
}building-->
extrude(20)color(“#6892D7”)grass-->
extrude(1)color(0,1,0)U型操作shapeU()操作用来绘制U型形状,基本语法:shapeU(frontWidth,rightWidth,leftWidth){selectoroperatoroperations|selectoroperatoroperations}4.4CGA形状编辑操作参数说明见教程第106页。//初始形状:40m*40m矩形Lot-->
shapeU(20,10,5){shape:building|remainder:grass
}building-->
extrude(20)color("#6892D7")grass-->
extrude(1)color(0,1,0)O型操作shapeO()操作用来绘制O型形状,基本语法:
shapeO(frontWidth,rightWidth,backWidth,leftWidth){selectoroperatoroperations|selectoroperatoroperations}4.4CGA形状编辑操作参数说明见教程第107页。//初始形状:40m*40m矩形Lot-->
shapeO(16,10,8,4){shape:buildingremainder:grass
}building-->
extrude(20)color("#6892D7")grass-->
extrude(1)color(0,1,0)随机点操作scatter()操作用于在一定范围内生成一定数量的随机点,基本语法:scatter(domain,nPoints,distributionType){operations}scatter(domain,nPoints,gaussian,scatterMean,scatterStddev){operations}4.4CGA形状编辑操作参数说明见教程第109页。//初始形状:40m*40m矩形@startRuleLot-->
scatter(surface,10,gaussian,center,20){
tree
}
tree-->
s(4,8,4)
i("models/tree/tree.obj")
color(0,1,0)镜像操作mirror()函数用于将当前形状进行镜像处理,基本语法:
mirror(xFlip,yFlip,zFlip)4.4CGA形状编辑操作参数说明见教程第115页。//初始形状:40m*40m矩形Lot-->
i("models/tree/tree.obj")
color(0,1,0)
mirror(false,true,false)(a)(b)平移操作t()操作用于将形状沿指定长度进行平移,基本语法:t(tx,ty,tz)//初始形状:40m*40m矩形Lot-->
extrude(20)
color(1,0,0,0.5)
t(-30,0,30)
X.参数说明见教程第116页。4.4CGA形状编辑操作缩放操作s()操作用于将形状沿指定大小进行缩放,基本语法:
s(xSize,ySize,zSize)
s(‘xSize,‘ySize,‘zSize)4.4CGA形状编辑操作参数说明见教程第117页。//初始形状:40m*40m矩形Lot-->
extrude(20)
color(1,0,0,0.5)
s(20,20,20)
X.旋转操作r()操作用于将形状沿指定角度进行旋转,基本语法:r(xAngle,yAngle,zAngle)r(centerSelector,
xAngle,yAngle,zAngle)4.4CGA形状编辑操作参数说明见教程第118页。#初始形状:20m*5m矩形Lot-->
extrude(10)
split(y){
1:r(0,120*split.index/split.total,0)X.
}*居中操作center()操作用于设置变换后的形状处于初始形状的中心,基本语法:center(axesSelection)参数说明见教程第120页。4.4CGA形状编辑操作//初始形状:40m*40m矩形Lot-->
s('0.6,'1,'0.6)
extrude(20)
center(xz)
A.NIL操作NIL操作用于从形状树中删除当前形状,基本语法:NIL//初始形状:20m*20m矩形Lot-->
split(x){2:extrude(10)X.|1:NIL
}*4.4CGA形状编辑操作单坡屋顶操作roofShed()操作用于生成单坡屋顶形状,基本语法:roofShed(angle)roofShed(angle,index)4.4CGA形状编辑操作参数说明见教程第121页。//初始形状:20m*10m矩形Lot-->
extrude(10)
comp(f){top:Top|side:X.
}Top-->
roofShed(20,0)color(1,0,0)双坡屋顶操作roofGable()操作用于生成双坡屋顶形状,基本语法:
roofGable(angle)roofGable(angle,overhangX)roofGable(angle,overhangX,overhangY)4.4CGA形状编辑操作参数说明见教程第122页。//初始形状:20m*10m矩形Lot-->
extrude(10)
comp(f){top:Top|side:X.
}Top-->
roofGable(20,1,0.5)color(1,0,0)四坡屋顶操作roofHip()操作用于生成四坡屋顶形状,基本语法:roofHip(angle)roofHip(angle,overhang)4.4CGA形状编辑操作参数说明见教程第123页。//初始形状:20m*10m矩形Lot-->
extrude(10)
comp(f){top:Top|side:X.
}Top-->
roofHip(20,1)color(1,0,0)金字塔屋顶操作roofPyramid()操作用于生成金字塔屋顶形状,基本语法:roofPyramid(angle)4.4CGA形状编辑操作参数说明见教程第124页。//初始形状:20m*10m矩形Lot-->
extrude(10)
comp(f){top:Top|side:X.
}Top-->
roofPyramid(20)color(1,0,0)设置投影操作setupProjection()操作用于设置纹理的大小及纹理对应的纹理坐标系图层,基本语法:setupProjection(uvSet,axesSelector,texWidth,texHeight)setupProjection(uvSet,axesSelector,texWidth,texHeight,widthOffset,heightOffset)setupProjection(uvSet,axesSelector,texWidth,texHeight,widthOffset,heightOffset,uwFactor)4.5CGA纹理贴图操作参数说明见教程第130页。投影UV操作projectUV()操作根据相应的投影矩阵来创建所选UV集合的纹理坐标,基本语法:projectUV(uvSet)4.5CGA纹理贴图操作参数说明见教程第13
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 延安大学西安创新学院《大学生心理健康》2021-2022学年第一学期期末试卷
- 延安大学《传热学》2022-2023学年第一学期期末试卷
- 学习策略与思维导图应用计划
- 三年级数学计算题专项练习及答案集锦
- 四年级数学(简便运算)计算题专项练习与答案
- 四年级数学(简便运算)计算题专项练习与答案
- 班级心得交流的有效性计划
- 仓库作业流程再造的尝试计划
- 班级趣味体育活动的设计与安排计划
- 项目质量管理计划
- 2024年婴幼儿发展引导员(高级)职业技能鉴定考试题库(含答案)
- 跨学科融合的劳动教育新生态
- 基础模块3 Unit3 Artificial Intelligence单元测试-2025年中职高考英语一轮复习讲练测(高教版2023修订版·全国用)
- 财务主管岗位招聘面试题与参考回答(某大型国企)
- 第12课《实现人生价值》第1框《树立正确的价值观》同步课堂课件-【中职专用】《哲学与人生》
- 2024至2030年中国纯氢燃气轮机市场现状研究分析与发展前景预测报告
- 主题三:红色之美第10课《巾帼英雄-赵一曼》(教学设计)川教版四年级上册综合实践活动
- 人教版部编五年上道德与法治7《中华民族一家亲》说课稿
- 陕煤集团笔试题库及答案
- 手术科室对麻醉医生工作满意度调查表
- 中职甘肃地理知识点总结
评论
0/150
提交评论