要访问 CityEngine 中的教程,请单击帮助 > 下载教程和示例...。 在选择教程或示例后,系统会自动下载工程并将其添加到工作空间。Python 脚本接口显著增强了 CityEngine 的可能性。 本教程介绍了 Python 控制台和编辑器的基本用法,并提供了一些有关 CityEngine 任务自动化的示例。有关详细信息,请参阅 CityEngine Python 参考。 Python 控制台和编辑器要开始此过程,请完成以下步骤:Python 控制台完成以下步骤以打开新的 Python 控制台: 输入 ce.setSelection。 如果命令完成弹出窗口尚未打开,则按 Ctrl+Space 键使其显示。 输入 ce.setSelection(ce.getObjectsFrom(ce.scene, ce.withName("*Broadway*"))) 命令。 按 Enter 键。 Python 编辑器一旦计划使用更长和更高级的 Python 命令或一组命令,在 CityEngine 中使用 Python 编辑器会很有帮助。 在 Python 模块对话框中,浏览到工程的脚本文件夹。 输入 myHelpers 作为新 Python 模块的名称。
单击完成。 选择模块:主模板。单击确定。 在行 ce = CE () 之后添加新的 selectByAttribute(attr, value) 函数。 确保在主函数上方插入代码。 在脚本的主要子句中使用特定的参数调用它。 确保主要块位于文件末尾。 要执行脚本,请在 Python 编辑器中按 F9 键。从控制台运行脚本另外,您可以通过完成以下步骤来经由 Python 控制台调用帮助器脚本: 通过以下方式在控制台中使用任意参数调用您的帮助程序函数: 扩展 scripting.py 脚本要扩展 scripting.py,请完成以下步骤: 重新启动 CityEngine 后,将自动加载 myHelpers 模块。 您可以通过以下方式在控制台中调用选择函数: 更改街道宽度通常,您可能想增加许多路段的街道宽度属性。 一旦出现无法在 GUI 中轻松完成此操作的情况,则 Python 脚本可以提供帮助。打开 Tutorial_10_Python_Scripting/scenes/02_PythonScripting.cej 场景。创建新的 Python 脚本incrementStreetWidths() 函数此函数使用用户指定的值来增加所有选定街段的 streetWidths 属性。首先,函数定义: 您需要获取所有选定的路段并将其循环。 要计算新的街道宽度,请首先使用 ce.getAttribute() 命令获取当前值。 注意带有 /ce/street/ 前缀的属性名称的语法;这将访问对象的用户属性。 最后,通过添加用户提供的参数增量并将新值分配给路段,来计算新的街道宽度。 整个参数。 在脚本的主要块中,添加函数调用,然后选择增量。 选择一组街段。通过在 Python 编辑器中按 F9 来运行 Python 脚本。使用 @noUIupdate 加快速度如果选择了很多路段,则执行以前的脚本可能需要一些时间。 这是因为 CityEngine 中的脚本执行将在单独的线程中运行,并且在每个命令之后都会更新 GUI 和 3D 视口。 在这种情况下,在每次调用 setAttribute() 之后,将更新街道网络,并重新绘制 3D 视口。尽管这对此示例很方便,但是正常执行需要更快。 这可以通过在函数定义上方添加 @noUIupdate 标记来实现。 使用这种方式标记的函数将在执行期间阻止 GUI 更新,因此根据其功能,将按因子加快执行速度。multiplySegmentWidths() 函数此函数同时设置几个属性,即 streetWidth、sidewalkWidthLeft 和 sidewalkWidthRight。 用户可以指定一个要乘以宽度的因子。 帮助程序函数 multiplyAttribute 对不同的属性进行乘法运算。 完成 Python 函数 在脚本的主要块中,添加函数调用,然后选择一个乘数。 选择一组街段。通过在 Python 编辑器中按 F9 来运行 Python 脚本。从控制台运行在导入脚本模块后从 Python 控制台调用上述函数,而不是在 Python 编辑器中设置函数参数。 从 FBX 文件设置照相机本节显示如何通过从 Maya 导出的 FBX 将静态照相机数据导入 CityEngine。打开 Tutorial_10_Python_Scripting/scenes/02_PythonScripting.cej 场景。将照相机导出到 FBX (Maya)如果没有 Maya,则可以跳过以下步骤,并使用现有 data/camera.fbx 文件。在导出对话框中,确保按照以下屏幕截图中的设置进行设置:照相机导入脚本解析 FBX 文件 设置 CityEngine 照相机获取 视口,并调用位置和旋转集函数。 主要功能 调用主要块 通过在 Python 编辑器中按 F9 来运行 Python 脚本。您的照相机应按以下屏幕截图中的位置放置: 动画:生成建筑物Python 脚本可用于自动化生成或导出过程。 以下示例显示如何通过设置建筑物属性并导出结果模型集来生成建筑物动画。打开 Tutorial_10_Python_Scripting/scenes/03_PythonScripting.cej 场景。生成建筑物规则文件包含用于更改建筑物维度的属性。 与其手动设置这些值,我们不如编写一个脚本来更改这些值并批量生成模型的不同版本。动画脚本创建一个新的 Python 主模块 my_grow_building.py。def growBuilding该函数提供了一个在两个范围内循环的时间线,并调用了 setAttribute 函数。 def doStep在地块对象上,修改了两个属性的高度和宽度。 def Generate以下内容可生成建筑物: main在脚本的主要子句中调用 growBuilding。 批量生成建筑物批量导出对生成的模型有信心后,添加一个名为 Export 的附加函数,并确保该函数位于主要子句之前。 替换 doStep() 中的 Generate 调用。 您可以在 /models/ 文件夹中找到导出的模型。 编写资产库规则文件如果您拥有大量资产,那么查看所有资产可能会有所帮助。 本节显示如何自动生成 CGA 规则文件,而该文件将显示工程的资产。打开 Tutorial_10_Python_Scripting/scenes/03_PythonScripting.cej 场景。Python 脚本将编写具有以下结构的规则文件: 这用于几何资产和纹理图像。 创建一个新的 Python 主模块 asset_lib.py。 添加新函数 writeCGALib。 编写标题信息、起始规则 Lot 和几何规则。 迭代资产文件夹中的所有 .obj 文件,并为每个资产准备规则调用 Geometry(assetpath)。 为纹理资产编写了类似的规则。 编写资产加载程序规则。 打开 .cga 文件的文件句柄,然后编写 cga 内容。 添加新的 assignAndGenerateLib() 函数。 它将生成的 .cga 文件分配给场景批次并生成模型。 最后,在主要子句中调用两个函数: 生成库模型在 Python 编辑器中,打开 asset_lib.py 文件,然后按 F9。 使用 startup.py 自动执行 CityEngine 任务您可以使用 python 自动执行较大或重复的任务。 例如,您可能想根据整个县的宗地信息自动生成模型。要自动执行任务,请执行以下操作:创建一个配置文件以定义作业参数。 该教程包含位于 \data\jobConfig.cfg 中的示例。 将函数 run(cfg) 和 getCfgValue(cfg,name) 添加到 automationJob.py 以便使用存储在配置文件中的参数来运行自动化作业。建议使用单独的 CityEngine 工作空间进行自动化。 在系统上创建一个新的 C:\Automation Workspace 文件夹。 将 /scripts/startup.py 文件从教程工程复制到新的 C:\Automation Workspace 根目录。打开命令行并在自动化工作空间中启动 CityEngine 并移交作业定义和参数: 作业完成后,\models 文件夹包含 Footprints.kmz 输出文件,该文件显示在 ArcGIS Earth 的下方。
有关此主题的反馈?