CityEngine中的模型轴概念
CityEngine规则建模-常用函数和语法 PPT
e:边 | v:点} selector (keyword) front, back, left, right, top, bottom 前后左右上下(模型轴
系),常用 vertical(垂直), horizontal(水平), aslant(有坡度的),
规则---随机规则
形式: PredecessorShape --> percentage%: Successor1 percentage%: Successor2 ... else: SuccessorN
nutant
大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
常用函数—— p
Lot--> extrude(10) pModel pModel--> p(f){side: ColorsSideFacade | top: ColorfTopFacade}
常用函数——color
功能:给模型着色
注:符号“ * ”代表重复执行,“ ~ ”代表一个近似值
练习:简单规则的编写
练习:简单规则的编写
参考规则
Lot--> extrude(10) extrudeModel
extrudeModel--> p(f){side:SplitModel | top: ColorfTopFacade }
特点:与无参函数比较类似,其结果返回给模型标识
示例规则: Lot--> extrude(10) pModel
规则---带参规则
形式: PredecessorShape(Parameters) --> Successor
特点:与有参函数比较类似,根据需要传递改变后继模型外 观的信息
《CityEngine城市建模解决方案》问答集锦
2012年,Esri推出了全新的三维规划建模软件CityEngine,为创造鲜活的三维数字城市提供了全新的解决方案。
CityEngine利用规则批量生成建筑模型,同时保留原有GIS 数据的位置和属性信息,并与ArcGIS一体化集成,给我们带来了“所见即所得”的三维数字城市建模方案。
8月技术公开课《CityEngine城市建模解决方案》问答集锦问:关于讲座中古建筑,使用3Dmax建立的部件,是通过怎样的规则生成整个高精度模型的,这个规则是系统自带的还是用某些算法?答:CityEngine的原理其实就像搭建积木一样,把模型拆分再组合,其中可能用到一些模型部件成为整个模型的组成部分。
问:破损建筑物是如何实现的?如何编写规则呢?答:破损建筑物也是规则驱动生成的,在CityEngine软件中就自带了规则编辑器,只要在里面编辑就可以了。
问:CityEngine不需要复杂的编程就可以建立规则吗?答:是的,需要有一些编程基础,这样比较快。
但是规则的编写方法,还是比较简单的。
如果大家对规则的开发比较感兴趣可以看看这篇文章:/arcgis_all/article/details/10095767问:CityEngine可否输出3ds带动画呢?答:CityEngine可以导出3ds,但是没有动画功能。
问:有带内部结构的cad图,可以建成3维模型吗?最终要在系统中能查询楼的各个部位。
答:带内部结构的建筑可以生成,CityEngine2012提供的官方示例第15个演示有建筑内部结构建模,比如墙体结构。
问:CityEngine可以导入cad吗?答:CityEngine可以导入dxf。
当然,也可以将cad转成shape,再导入CityEngine,在讲座中讲到的“控规模板”基础数据就是这样实现的。
问:内部结构,可以显示透视图吗?答:CityEngine主要用于内容制作,至于透视视图可以通过应用平台来控制,比如模型的透明度或可见性。
使用CityEngine构建三维城市-徐汝坤
CityEngine创建道路—规划道路
道路附属设施 – 行道树 – 路灯 – …….
CityEngine创建道路—城市道路
CityEngine创建道路—城市道路
CityEngine创建道路—高速公路
CityEngine创建道路—高铁
里程
高铁隧道 19%
高铁边坡 2%
高铁桥 25%
高铁接地 54%
CityEngine历史
• 2013年12月 , Esri CityEngine 2013(最新版本)
– 深入的ArcGIS集成 – 更强的功能扩展 – CityEngine SDK – 植物库的提供
CityEngine技术优势
• GIS数据的支持
– 使用GIS矢量数据作为建模的基础数据,比如宗地、建筑物边界,道路 中心线等数据都可以直接加载到Esri CityEngine中使用
道路数据的接地
接地工具:Align Graph to Terrain 地形整平工具:Align Terrain to Shapes
道路规则建模的基础
道路的创建
规划中对道路的描述 – 一块板 – 两块板 – 三块板 – பைடு நூலகம்块板
CityEngine创建道路—规划道路
道路结构 – 人行道 – 一块板 – 两块板 – 三块板 – …….
CityEngine历史
2011年7月,ESRI公司总裁Jack Dangermond先生在圣地 亚哥的Esri国际用户大会上向数万名与会者宣布收购瑞士 Procedural公司。
2011年10月,成立Esri苏黎世研发中心,为工作集中在城 市设计、建模以及GIS集成方面
2011年 11月,Esri CityEngine 2011 2012年 6月,Esri CityEngine 2012 2013年12月 , Esri CityEngine 2013
CityEngine 城市建模新选择
CityEngine城市建模新选择
CityEngine 城市建模的主要流程
•最好带有坐标文件
•最好有已知空间参考信息
创建场景
二维数据转三维数据
面矢量数据的转换
二维数据转三维数据
模型的批量生成
小品模型的批量生成
道路模型的批量生成
建筑模型的批量生成
建筑模型的批量生成
影像获取所需要的参数:
屋顶纹理的影像获取
屋顶影像纹理的获取
给顶部赋影像纹理
//约束贴图的面的方向以及贴图所代表的实际大小
//设置贴图方式与引入贴图的路径
//UV平移
//设置V向翻转
模型的导出
模型的导出
小结
欢迎移步到体验区体验精彩纷呈的GIS世界
影像服务,让遥感应用无所不在
Next ……。
10-CityEngine规则建模-规则及规则执行原理
规则执行的基本原理--Successor
模型操作
• 改变当前模型的形状(位置、大小、颜色、外观等); • 拷贝当前的模型并指定一个新的形状标识; • 将新的模型(CGA Shapes)添加的模型树上(shape tree); • 如果有新的规则模型继续匹配,否则做为模型树的叶子; • 所有的叶子构成最终模型;
------规则的基本知识
规则的基本知识
规则和规则文件
− CityEngine中规则和规则文件的概念 − 规则文件的创建和使用
规则的执行
• 规则执行的顺序 • 模型树
规则和规则文件
规则和规则文件
规则 规则文件 规则编辑器 练习:规则文件的创建和使用
规则
规则就是一组语句,该语句描述了当前对象的变化过程,并把变化的结果赋给一个或 多个对象。
终止,即使在该规则文件中出现B规则,也不会挂靠在B节点上。
规则执行练习
A-->B. t('3,0,0) C C-->D. s('3,0,0) E E --> i("cylinder.obj") F.
说明:s(sx,sy,sz)是缩放函数
CGA Shapes
CGA Shapes是指由规则创造产生的模型或者模型的组成部分,可以简称为模型。
功能描述 显示选中节点处的模型的范围 显示选中节点处的模型的枢轴点 显示选中节点处的模型的修剪面 选中节点处的模型实体化 显示选中节点模型的原始轴点
练习:利用模型查看窗口查看模型的元素
主要作用:
cityengine自己总结的教程
1、单击a键,可以在Viewport视窗中全图显示新建的道路网。
工程:可以理解为一个项目当中所有与CityEngine相关的资源,包括规则、场景、纹理、模型、数据、及其他相关设置。
场景:一个工程中可以有多个场景。
场景中有多个图层。
规则:CityEngine的核心部分,存储在规则文件.Cga中。
通过对 Lot 或 street进行赋予规则可以生成3D模型。
CGA文件:CityEngine中建筑使用CGA文件进行描述的。
一个 CGA 文件可以有多条规则组成,这些规则定义了真实的建筑几何如何生成。
在一个CGA 文件被赋予一个shape之后,建筑模型开始生成。
为了使用方便,默认的项目工程包含的文件夹如下:Assets 文件夹:存放模型零件与纹理图片。
Data 文件夹:存放道路或地块数据,例如:.shp,.dxf,.osm。
Images文件夹:存放场景快照。
Maps文件夹:存放地图图层来源的影像、图片数据。
例如:".jpg", ".png", ".tif"。
Models:导出的3D 模型默认存放位置。
试用版只支持模型导出。
Rules:存放规则文件.cga。
Scenes:存放场景文件.cej。
Scripts:存放脚本文件。
2、CGA计算机生成建筑(Computer Generated Architecture)的缩写。
3、数据导入将(命名一定腰英文,才可以导入)直接复制粘贴到data文件下,然后见.shp格式的数据直接拖到Viewport窗口中即可。
贴材质道路贴图设置:纹理教程TileUV 对贴图进行放大缩小。
可以点击此按钮进行贴图设置setupProjection(0, scope.xz, '1, '1, -18, 36)贴图向左移动贴图向左移动rotateUV(0, -73)旋转的角度。
CityEngine导出的FBX模型在MAX变小
CityEngine导出的FBX模型在MAX变小
问题描述
从CityEngine导出的fbx格式的模型导入到3ds Max时,其模型尺寸与CityEngine中显示的尺寸差别较大。
看下图显示的模型触点处的Z值坐标(模型轴点在底面中心上):
而导出的obj模型在导入到3ds Max时则不存在这个问题,注意下图中的Z值坐标(与上图同一个模型且模型轴点在底面中心上):
原因分析
主要是Max在模型导入fbx时有一个设置:
在高级选项的单位中,导入时“自动”选项默认勾选即文件单位默认为米。
这个时候注意左上方的比例因子为0.01,所以按默认导入到3ds Max时会出现模型尺寸比例上不对的情况。
解决方案
在导入fbx的高级选项的单位栏中,不勾选“自动”,文件单位选择厘米即可。
如下图:
此时比例因子变为1,为模型的正常尺寸。
导入Max后的截图如下:
说明
本文中针对fbx模型导入到3ds Max时模型尺寸发生变化的问题进行了测试,或许CityEngine导出的其它格式在进入其它编辑渲染平台时也会出现类似问题,可据此找出症结所在。
CityEngine规则建模-常用函数和语法
常用函数——extrude
功能:挤出一个高度,使模型从面状变为体块
概要:
• extrude(height) • extrude(axisWorld, height)
参数说明:
• height:拉伸的高度。默认沿模型的Y轴拉伸 • axisWorld:设定拉伸轴线,使用世界坐标系的轴作为拉伸轴线。其可选参数为:
规则语法
规则(函数)
• 标准规则 • 带参规则 • 随机规则 • 条件规则 • 递归规则
属性 自定认函数 注释(comments)
规则---标准规则
形式:
• PredecessorShape --> Successor
特点:与无参函数比较类似,其结果返回给模型标识
示例规则: Lot-->
参数说明:
• s (string):文本类型的颜色值(16进制)例如:"#rrggbb" • r,g,b (float,float,float):浮点类型的颜色值,每个值的取值在0到1.0之间
常用函数——color
Lot-->
• extrude(10) CompModel
CompModel-->
注意2:具有不同参数个数的带参规则(前缀一样)比较类似于函数的重载,在 CityEngine认为这样的规则为不同的规则
规则---带参规则
示例规则: Lot -->
• color(1,0,0) • Footprint(20)
Footprint(height)-->
• extrude(height) • Envelope.
• comp(f){side: ColorsSideFacade | top: ColorfTopFacade}
CityEngine课程五
课程课程五五:导入基本模型 内容部分一部分一::导入SHP/GDB 格式的模型 部分二部分二::导入OBJ 格式的模型 部分三部分三::导入导入立体模型立体模型 部分四部分四::导入导入标签模型标签模型第一第一部分部分部分::导入Shp/GDB 格式的模型·创建一个新的场景 File>New…>CityEngine>CityEngine scene 。
·在文件列表(File Navigator )一栏中找到本次需要导入的“footprints.shp ”文件,它的存放位置是“data/shp_footprints ”。
·将“footprints.shp ”拖拽到Viewport 窗口中·导入的数据不用定义投影:使用“Raw data in meters ”(原始的数据以单位米来显示) 对象属性CityEngine 在导入有属性的shapefile 文件 ·选择其中一个对象 ·它的属性会在监视器(Inspector)中的“object Attributes ”选项卡中显示出来分配规则并生成模型我们将会在导入的模型地基文件中生成模型。
规则文件“extrude.cga”使用了对象的“height(高度)”这一属性,地基文件上的模型会被“挤压”出来。
打开规则文件查看它的代码:attr height = 10@StartRuleLot --> extrude(height)·在Viewport窗口中选择所有的模型地基文件·将规则文件拖拽过去·看到生成的模型·或者,直接打开“footprints_from_shp.cej”也能看到最终的场景。
将File Geodatabase导入到CityEngine中导入File Geodatabase与导入Shapefile很相似:创建一个新的场景文件File>New...>CityEngine>CityEngine scene。
CityEngine中的shape轴概念
CityEngine中的shape轴概念
1 Shape轴
在CityEngine的文档中暂时还没看到对于轴的说明,但是我们可以通过一些例子来对CityEngine中轴的定义有一个了解。
先看看以下的图片:
图中出现了两个轴,在右下角的是场景的轴(以下简称为主轴);在Shape的右上角的是Shape自己的轴(以下简称为Shape轴)。
从这一张图我们可以看出Shape图形是具有其自身的轴,这个轴并不是跟主轴平行的,而这个轴也明显的影响这我们在插入模型的效果的。
为了了解这个轴的情况,我们用更多的例子去测试。
我们再看两个个图片:
两幅图片中的数字表示了节点的排序,从这个例子我们不难看出Shape轴的X坐标轴是沿着Shape的第一条边延伸的,同时确定另一条与Shape垂直的坐标轴,从而确定Shape 轴的三维坐标。
在图上我们还可以看到另一个信息,就是Shape轴的Y坐标轴(绿色)跟Shape不在同一个平面上的,这样我们也可以断定Shape轴与主轴的YZ坐标是相反的。
2 Shape范围(Scope)
我们继续看上一节中的图片:
在图中的黄色框就是当前矩形的范围,我们可以明显的看出Shape范围并不是以主轴为参考的,而是以Shape轴为参考的。
10-CityEngine规则建模-规则及规则执行原理
规则执行练习
A-->B. t('3,0,0) C
– B复制了A,做为叶子模型 – 当前对象经过平移操作并对平移后的对象指定模型 标识C – B、C为叶子模型构成了最终模型 – A做为中间节点(支干模型)在执行结束后消亡
说明:t(tx,ty,tz):是平移函数 说明:模型标识B后面“.”( Terminal Shapes )代表规则的终止,即使在该规则文 件中出现B规则,也不会挂靠在B节点上。
Lot--> s('0.8,'1,'0.8) center(xz) extrude(20) Envelope
规则文件
规则文件包含了一系列的规 则决定模型如何生成。
语言:CGA(Computer Generated Architecture) 文件后缀:.cga
规则编辑器
创建:File→New… → Select a wizard… → CGA Rule File
------规则的基本知识
规则的基本知识
规则和规则文件
− CityEngine中规则和规则文件的概念 − 规则文件的创建和使用
规则的执行
– 规则执行的顺序 – 模型树
规则和规则文件
规则和规则文件
规则 规则文件
规则编辑器
练习:规则文件的创建和使用
规则
规则就是一组语句,该语句描述了当前对象的变化过程,并把 变化的结果赋给一个或多个对象。
PredecessorShape:规则名称,代表执行前的模型对象 -->:表示执行;
Successor:形状操作和模型标识
CityEngine规则建模-常用函数和语法 PPT
e:边 | v:点} selector (keyword) front, back, left, right, top, bottom 前后左右上下(模型轴
系),常用 vertical(垂直), horizontal(水平), aslant(有坡度的),
nutant
大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
常用函数—— p
Lot--> extrude(10) pModel pModel--> p(f){side: ColorsSideFacade | top: ColorfTopFacade}
常用函数——color
功能:给模型着色
规则---随机规则
形式: PredecessorShape --> percentage%: Successor1 percentage%: Successor2 ... else: SuccessorN
主要作用:用以随机生成不同外观的模型
注意1:随机语句外不能出现任何语句 注意2:必须以else结尾,else前面的percentage的和不得超
使对象的拉伸有共同的方向常用函数常用函数extrudeextrudepmodel常用函数常用函数extrudeextrudeselectoroperatoroperationsselectoroperatoroperationsselectorkeywordfrontbackleftrighttopbottom前后左右上下模型轴系常用vertical垂直horizontal水平aslant有坡度的nutantside除水平部件外的其它部分常用函数常用函数pp大家有疑问的可以询问和交流大家有疑问的可以询问和交流可以互相讨论下但要小声点可以互相讨论下但要小声点pfside
CityEngine在三维城市建设中的应用
CityEngine在三维城市建设中的应用摘要CityEngine做为一种批量生成城市的软件在三维城市的建设方面有很大的优势,本文在某校区三维建设的基础上,主要介绍CityEngine的工作机制、工作流程以及CGA规则建模。
关键词三维城市;CityEngine;CGA规则建模0 引言随着社会对城市信息化测绘体系的需求、数字城市建设的兴起,三维城市的建设成为不可缺少的部分。
三维城市对城市空间信息的良好表达和便捷管理,使得三维城市获得了广泛的应用。
1 CityEngine简介CityEngine是Procedural公司的用于快速生产三维城市的软件,其设计者是瑞士苏黎世工学院的Pascal Mueller,设计之初是基于城市建筑的一种程序化建模技术,其后曾被用来作为生成大型城市场景的辅助软件。
1.1 CityEngine的产品架构及特性CityEngine2012作为ArcGis10.1的插件被提供,也可以作为单独的软件使用。
CityEngine2012提供了Web Scene viewer的发布浏览功能,也可以发布到ArcGIS Online。
CityEngine以工程来组织项目,工程中包含了所有的相关资源,包括CGA 规则文件、场景、纹理、模型、数据、及其他相关设置。
CityEngine以图层来组织管理GIS数据,主要包括地形图层、纹理图层、地图图层等。
在CGA规则文件生成方面,CityEngine提供了可视化的CGA建模编辑器、CGA脚本编辑器、交互式CGA生成工具三种方式,使得CGA的生产手段更多,更为灵活便捷;在三维模型创建方面,提供了交互式3D建模,能够直接手工建模,能够对模型和纹理进行细化调整,是一种类似于SketchUP的十分简洁的建模方式;在三维模型的交互式编辑方面,提供了可视化的参数接口设置,用户可以通过修改参数控制大多数模型的属性。
CityEngine支持ArcGIS所有的地理投影,支持Esri Shapfile 、File Geodatabase、KML、Tin 、multipath等GIS数据以及众多行业标准的3D格式。
CityEngine小区模型制作初探
在CE里要进行模型的制作很重要的一个方面是判断模型与面之间的对应关系,基于这个问题对前期的数据处理、贴图实现与面的判断做了初探。
下面就这几个问题分别做下诠释。
1. 起点、方向在ArcGIS与CityEngine中的区别。
首先看一下在ArcGIS中Ploygon数据对点读取的方式:顺时针方向(左上为起点)逆时针方向(左上为起点)从上图我们不难看出无论是采用顺时针方向还是逆时针方向,ArcGIS对数据点的记录并没有差别,也就是说在ArcGIS里面的记录只与起点有关与方向无关。
那么这两个数据在读到CityEngine里会是怎么样的呢,下面有一段代码通过索引的方式来推测一下CityEngine对数据的读取是怎样的。
case comp.index==0:NILelse:BuildingSideFacade-->case comp.index==1:NILelse:Building从上面的结果可以看出CityEngine里对面的读取是按逆时针读取的,由于ArcGIS里对数据的记录与方向无关决定了导入到CE的ARCGIS数据与我们在ArcGIS里制作时的方向是无关的(只与起点相关)。
Rooftexture-->setupProjection(0,scope.xy,4,4)texture("Roof_01.png")projectUV(0)上面是对屋顶贴图的实现的规则文件及贴图后的效果,从效果做如下几点推测:在贴图的过程中,每个面会自动的赋予一个二维的轴向即X、Y;λ可以通过贴图的尺寸合理的控制其与实际的比例,也可以通过面实际的宽高(scope.sx\scope.sy)来控制其合理性。
λ3.根据国内的模型极具对称的特色,想谈一下中心面的获取的问题(奇数个面)。
首先对中心面个人做一个定义:简而言之就是在一组面中居于中心的面为中心面。
中心面的获取可以方便的建立起贴图与模型位置之间的关系,对于模型贴图的实现有至关重要的作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CityEngine中的模型轴概念
3 模型轴除了Shape轴以外,三维模型也是有自己的轴,我们可以在预览图中看到模型的轴,如下图:
由上图我们也可以看出模型轴与主轴的YZ坐标是相反的。
另外,这个模型轴是可以根据参考轴的不同而旋转。
如下图:
图中是分别显示了Shape轴和模型轴的效果,我们可以看出,当我们把模型通过i(geometryPath)方法插入到Shape后,CityEngine会自动以Shape轴为参考,将模型轴旋转到与Shape轴一样,然后以Shape范围为参考对模型进行缩放,以确保模型范围与Shape 范围一致。
由于Shape的Y坐标是0值,所以模型在缩放的时候其Y坐标将无法按照Shape 范围来拉伸。
CityEngine会自动将模型在Y坐标方向上拉伸,在CityEngine的帮助文档中提到了这个拉伸公式,拉伸值的公式如下:
4 更改参考轴
在上一节我们提到了模型的轴可以根据参考轴旋转,那如何设置参考轴呢?在CGA文件中,当我们使用i(geometryPath)方法插入模型的时候,模型会将它自身的轴旋转匹配到Shape 轴。
这样就会出现上一节的图中的效果,模型的朝向被改变了。
在CGA的函数库中,有一个alignScopeToAxes()函数,这个函数的可以在保证模型不被旋转的情况下,改变参考轴,从而改变模型的范围。
如下例子:
以上代码,我先把alignScopeT oAxes()注释了,其意思就是将84.dae模型插入到Shape 上,并以Shape轴为参考对模型进行缩放旋转,效果如下图:
在上两个图中可以看出模型被旋转,导致模型的朝向与Shape没能匹配。
下面,我们修改CGA文件的代码,将alignScopeT oAxes()的注释去掉,我们在看看效果:
从上两个图我们可以看出模型已经没有以Shape轴为参考旋转了,而是以主轴为参考进行旋转,由于模型在其建立的时候已经是按照主轴的坐标构建的,所以其朝向是自然与Shape 的朝向匹配的。
另外,虽然模型并没有以Shape轴为参考旋转,但是我们可以看到的是模型依然以Shape范围为参考所放了。
通过上面的例子,我们可以总结,CityEngine在加载模型时是以参考轴为准旋转模型,以
Shape范围为参考缩放模型,通过双参考机制来控制模型的大小和朝向。
参考轴的变化还可以通过使用setPivot(axisMapSelector, cornerIndex)方式,首先我们需要了解setPivot的两个参数的定义:
axisMapSelector:表示新轴的定义。
源轴是xyz,如果新轴定义为xyz的话表示轴没有变化;当新轴定义为zxy,表示源轴的x坐标转换为新轴的z坐标,源轴y坐标转换为x坐标,源轴的z坐标转换为y坐标。
cornerIndex:是一个0到7的整数范围值,其意义是表示Shape范围的8个点,如下图:
如上图所示,如果Shape范围是一个立方体的话,CityEngine会以Shape范围的节点为起点,以顺时针方向为各终点编号。
这些节点就是转换参考轴时的参考原点。
在这8个节点,上,它们都具有不同的轴,如下图:
有上面三个图片我们可以看出节点的轴是由原点的轴决定的,先将原轴转换为新轴,在重新定义各节点的轴。