admin 管理员组

文章数量: 887021


2023年12月16日发(作者:标签云导航图片)

cityengine2012 教程5 : 导入原始图形

教程5 : 导入原始图形

目录:

Part 1:从shape或者GDB导入图形(shape)

Part 2:从OBJ导入图形(shape)

Part 3:导入容量

Part 4:导入地标作为图形(shape)

Part 1:从shape或者GDB导入图形(shape)

导入shapefile文件到cityengine

新建一个场景文件

在数据导航窗口找到‘data’ /shp_footprints/目录下的‘’文件

把这个数据拖入到视窗中

导入数据但不设置投影(使用‘Raw data in meters’)

对象属性:

数据的属性伴随着文件被导入

选择单一的图块,在右边查看对象属性(‘Object Attributes’)

指定规则文件并更新模型

现在我们将生成简单的半成品模型在输入的图形上。规则文件‘’用来定义拉伸对象的高度属性到定义的高度。

打开规则文件,你就发现以下代码:

l

在视窗中选择所有的shape图形

通过拖拽指定规则

查看建筑物的更新状态

或者通过打开场景‘footprints_from_’来查看结果。

从geodatabase(GDB)导入数据

从GDB导入数据和从shapefile导入数据是相似的:

新建一个场景文件File > New ... > CityEngine > CityEngine scene,在数据导航窗口,定位到数据文件夹data中的 ‘’ 文件。

注意GDB数据是作为一个文件夹存在的

把 ‘’ 文件拖拽到视窗中

在弹出的窗口中,选择要导入的图层(layer)

在导入过程中,将会让你选择场景投影。它会根据GDB文件自带的信息来给出投影信息。

点击完成,导入数据。

提供的数据集Geodatabase与之前的Shapefile内容相同。你现在可以应用与上述Shapefile相同的步骤。

用其他CGA属性导入带有Z值的多段线

新建场景文件:’File > New ... > CityEngine > CityEngine scene’

在数据导航窗口找到‘data/sphereCity_shp/’目录下的’

把它拖拽到视窗中,‘’ 文件没有投影文件(.prj),因此cityengine需要用户来定义坐标系;下一个窗口选择场景投影;

两个使用同一个投影,即‘Raw Data in meters’,通过使用相同的投影,数据就不会被从新投影。

新的图层(‘Shapes sphereCity’)将会出现在窗口中。

因为这个图层有Z值属性,所以在3D视窗中,他的效果是这样的:

属性:

在这个数据集中有两个特殊的属性被定义:

1) 属性 ‘ruleFile’

2) 属性 ‘startRule’

这种特殊的语法在你的GIS数据建立的时候就被定义了,而不是在导入后才被指定的,这样一来,可以省去手动改写他们的时间,这是一种特殊的导入方式。

在GIS软件中打开他的属性表应该是这样的:

在球面上选择一个图块

它的属性就会显示在Inspector窗口中

Rule File 和 Start rule在导入时已经被自动赋予了

随着Rule File 和 Start rule已经被指定,我们可以直接更新模型了

选择球面上所有的shape

更新(generate)模型

让我们来选择单一的一个shape来改面他的规则文件:

在窗口中选择一个模型(model)

Inspector窗口中,rule file后面点击select。

在set Start Rule 窗口中选择‘Commercial’作为新的规则,点击ok,结果如下:

Part 2 从OBJ导入shapefile

OBJ导入

新建一个场景文件:File > > CityEngine > CityEngine scene

定位到‘data/obj/’目录下的‘pompeii_’ 文件

右击文件,选择导入

OBJ导入窗口中,不要勾选‘Import as static model’,点击finish,结果如下。

指定规则文件并更新模型

在输入的图形上,我们将会做一些简单的拉伸,规则文件‘’用来定义拉伸对象的高度(height)属性到定义的高度。

选择所有的图形

在文件导航窗口,定位到规则文件夹中的‘’

拖拽到图形上

规则文件将会把模型拉伸到10的高度

Shapes 和Static Models对比

OBJ和Collada(交互3D数字资产交换方案)DEA(3D模型)文件可以被导入成shape或者Static Models。

Shape:它是CGA产生的基础,最好的证明就是footprint data

Static Models:导入后可以被定义尺寸,旋转和翻译,但是不能使用CGA进行进一步处理,典型的例子就是地标模型。

如果你想看最后的结果,可以打开场景文件’footprints_from_’ 来查看。

Part 3 导入卷

把卷作为图形导入

在一些情况下,在其他应用中模拟卷会比在cityengine中简单,这个教程就是要告诉我们一个原始的建筑物模型是怎么模拟三维,可以被导入cityengine中,并且他的墙壁是怎么通过CGA规则定义的。

注意:一个类似的工作流程可以呗应用于多种数据形式,如:shp,gdb,DAE(collsda),但是OBJ数据不可以。

导入

下图中的3D建筑物模型是用传统方法建立的,并且被导出成OBJ文件

Cityengine中导入OBJ文件

新建一个场景文件:File > > CityEngine > CityEngine scene

定位到‘data/obj/’目录下的‘Building_’ 文件

右击文件,选择import

OBJ导入窗口中,不要勾选‘Import as static model’,点击finish,结果如下。

一个新的图层 ‘Building_1’被添加进来,并且数据显示在三维模式下。

编写规则文件

这个叫做‘Building_1’的建筑物已经被定义了一个名叫‘Building’的start rule。因此我们需要将‘Building’规则文件变成start rule。我们需要使模型的坐标系统与Y轴的系统对齐。这个可以通过CGA命令alignScopeToAxes()实现。然后我们就可以通过分割的不同部分来识别不同的面,我们使用顶视图来查看房顶面,我们这一步所要做的就是,改变房顶颜色使我们能够更好的识别它。

Building -->

alignScopeToAxes(y)

comp(f){top : color("#ff0000") Roof. | side : Facade. }

选择场景中的图形

在文件导航窗口,rule目录下找到‘importedVolume_01_’ 规则文件。

把它拖拽到模型上,更新(generate),更新后,你看到的应该是这个效果。

其中红色为屋顶,灰色是墙壁,我们能够更好的来分辨它。

一旦各个面能够被正确识别,我们就可以继续进行规则设置了。尽管这些面是在cityengine之外创建,他们的方向不一定是我们需要他们为我们的规则操作。对于表面建模,我们需要CGA的alignScopeToGeometry(zUp, auto)语法来创建。通过这个操作,表面图形的视野将会和最低的边界一致。这将确保我们所有表面面向相同范围。

Facade -->

alignScopeToGeometry(zUp, auto)

split(y){3.5 : Groundfloor | {~3 : Floor}* }

规则文件‘importedVolume_02_’包含了我们将要做的事情,请在语法帮助的情况下,查看该规则文件中的代码,尝试理解。

制定这个规则文件,更新来查看结果。

或者你可以打开场景‘volume_from_’ ,来查看最终的结果。

Part 4:导入地标文件

在这个案例中,你有一个数据集,它已经被提前建模,并且赋予纹理,你也可以把它导入到你的场景中。

注意:支持的格式是Wavefront .obj, Collada .dae, .kml and .kmz.(后两个格式有地理参考坐标)

导入dae文件

新建场景

定位到数据: ‘data/dae/’目录下的‘building_’

右击,import 不选择统计模型(Import as static model),点击完成。

转换Static Models到shape

在这个案例中吗,你导入了Static Models数据,并且你可以继续使用CGA继续变成操作,你可以将他们转换成shape。

右击这个模型,然后选’Convert Models to Shapes’

已经被赋予CGA语法的也可以转换数据格式

应用CGA规则一旦被需要,shape文件可以长久使用CGA规则

制定规则文件‘’

更新模型

有4中类型供你选择

你也可以打开场景文件来查看最终结果,‘landmark_as_’。


本文标签: 文件 数据 导入 规则