CGA 更改日志

 

CityEngine 2024.0. | CGAC 2.4

新功能

  • 现在可以导入 Visual CGA 设计 (*.vcga)。 您可以在 import 语句中调用其初始规则并覆盖其属性和扩展节点。
  • 默认扩展实现转发:现在可以在新的扩展规则中重用已导入规则集中扩展规则的默认实现。 以下代码模式定义了扩展规则 MyExt,只要未将其覆盖,其将使用 imp.Ext 的默认实现。

    import imp:"imp.cga"( Ext -> MyExt )
    extension MyExt --> imp.Ext

    对于较早版本的 CGA,此代码会导致无限递归。

新注记

对现有功能的更改

  • convexify 操作:
    • 将保留输入几何的拓扑,并且现在完全连接生成的凸多边形。 :单个凸多边形(通常通过后续组件分割创建)现在可以包含共线折点。 可以使用 cleanupGeometry 操作将其移除。
    • 现在,将保留现有组件标签
  • geometry.isConcave 函数和常规凹度分类:改进了共线折点的处理。 共线折点现在一致地分类为凸折点。
  • material.{colormap|...|metallicmap}.rw 属性:将旋转中心从 (0.5, 0.5) 更改为 (0,0)。
  • CGA 编译器:不再允许使用名称相同但参数数量不同(重载)的扩展规则

修复缺陷

  • readStringTablereadFloatTable:修复了当读取不存在的表时导致崩溃的问题(仅限 Linux)。
  • setupProjection 操作:
    • 修复了为材料(例如 material.colormap.su)定义了 uv 缩放时未正确考虑 widthOffsetheightOffset 的漏洞。
    • 修复了投影轴 scope.zx 未考虑偏移值的漏洞。
  • CGA 编译器:
    • 修复了对导入语句的 @Hidden 注记的错误处理。 :在较早版本 CityEngine 的 UI 或者使用较早版本 CityEngine SDK 的客户端应用程序中,隐藏导入在使用 CityEngine 2024.0 创建的 RPK 中将不会被隐藏。
    • 修复了未将注记分配给 import 语句,而是分配给后续语句的漏洞。

SDK 3.2.9903 CGAC 2.3

新函数

CityEngine 2023.1 | CGAC 2.2

新功能

  • 借助新的自动标签功能,所选操作可自动将语义信息应用于输出几何组件:
    • setbacksetbackToAreasetbackPerEdgeshapeLUOsplitAndSetbackPerimeter 操作:每条输出边将标记为 "setback.front""setback.side""setback.back""setback.remainder"
    • roofGableroofHiproofPyramidroofRidgeroofShed 操作:每个输出面将标记为 "roof.bottom""roof.side""roof.top"
    • extrude 操作:每个输出面将标记为 "extrude.bottom""extrude.side.inner""extrude.side.outer""extrude.top"
    • envelope 操作:每个输出面将标记为 "envelope.bottom""envelope.side.base""envelope.side.slope""envelope.side.inner""envelope.top"
    • taper 操作:每个输出面将标记为 "taper.bottom""taper.side"

可以使用 compsetbacksetbackToAreasetbackPerEdge 操作和 comp 函数中的新 isTagged 选择器来查询组件标签。

新操作

新函数

新属性

对现有功能的更改

  • compsetbacksetbackToAreasetbackPerEdge 操作和 comp 函数:
    • 可以在逻辑选择器表达式中组合现有选择器(例如 left || right)。
    • 用户定义的函数和所有内置函数都可以在逻辑选择器表达式中使用。
    • 添加了新的 isTagged 选择器。
  • CGA 编译器:
    • 已导入规则文件必须具有 *.cga 扩展名。
    • 现在,当删除 CGA 文件时,同时将删除工程 bin 文件夹(默认隐藏)中相应的已编译规则文件 (*.cgb),因为不再需要这些文件。
    • importstyle 标识符不得包含“$”字符。

修复缺陷

  • comp 操作:修复了即使未选择任何组件,使用组合运算符 (=) 创建了新形状的漏洞。
  • compsetbacksetbackToAreasetbackPerEdge 操作,comp 函数:修复了函数调用被错误解释为选择器的漏洞。
  • 图层属性(仅限 CityEngine):print 函数:修复了非常大的整数值的输出。
  • CGA 编译器:
    • 修复了样式中的漏洞。 在某些情况下,以默认样式以外的样式定义的参数化函数会导致在生成时崩溃。
    • 修复了更改规则文件名或导入标识符中的大小写导致编译持续失败并且更改不再有效的状态(仅限 Windows)的漏洞。
    • 改进了编辑 CGA 文件时自动更新相关的 CGA 文件。 之前,在处理导入时,编辑 CGA 文件可能会导致性能降低。 现在可以正确考虑 CGA 文件之间的相关性。
    • 修复了创建错误的已编译规则文件 (*.cgb) 并导致生成错误的漏洞。 每当定义与 sttileUV 操作具有相同签名的规则时,都会发生这种情况。

SDK 3.0.8961| CGAC 2.1

修复缺陷

针对体积的 scatter 操作以及 inside、overlaps、touches 函数:忽略了三角形面上的孔洞,由此导致结果错误。 现在已修复此漏洞。

CityEngine 2023.0 | CGAC 2.0

编译器升级

编译器已更新至新的主要版本 2.0。 使用 CityEngine 2023.0 创建的规则包与更低版本的 CityEngine 或者任何与 CityEngine 2023.0 不兼容的 CityEngine SDK 客户端不兼容。 请使用最新版本的 ArcGIS Pro 和 CityEngine 插件。

新功能

  • 新的动态导入功能允许在调用规则时导入和初始化规则集。 可以使用运行时评估值来配置覆盖。

新注记

对现有功能的更改

  • offset 操作:更改了每个面的生成偏移几何的拓扑结构:在边界面的边界处,将不再创建重复折点。
    注:

    由此将更改生成的折点数,并且相邻的边界面现在共享一条公共边。 后续 comp(f) 将根据 trim 属性在这些边上创建修剪平面。

  • 新创建的 CGA 文件不再包含自动生成的标头(仅限 CityEngine)。
  • CGA 编译器:
    • 规则文件名中不再允许使用以下字符:$(美元)、[(左括号)、;(分号)、.(点,.cga 后缀除外)。 此外:?"*<>|\(仅限 Linux)。
    • import 功能在许多方面得到了改进:
      • 属性覆盖和保护:如果已导入属性不存在或者已被覆盖或保护,则将显示错误。
      • 属性覆盖的行为已得到改进。 依赖于其他属性的属性覆盖定义的评估现在遵循相应其他属性的覆盖定义。 以前,情况并非始终如此,具体取决于属性名称的字母顺序。 此更改将使属性评估具有确定性。 但是,在某些情况下,属性将被评估为不同的值,由此导致与以前版本不同的行为。
        注:

        如果属性覆盖导致循环,则现在会检测到这些循环并导致编译错误。 虽然这些规则确实可以在旧版本上编译和运行,但结果不一致。 引用被覆盖属性本身的属性覆盖的特殊情况仍然可能存在。 这对于使用隐式属性传播的代码模式非常重要,例如:

        import imp:"imp.cga" 
        attr x = .. imp.x ..
        仍然是有效代码。

      • 如果在属性覆盖中使用概率表达式,则随机数生成器会受到覆盖出现顺序的影响。 这可能会导致意外行为,即当添加另一个随机评估的覆盖时,属性可能会更改其随机值。 此问题已得到修复;但是,此修复可能会更改现有模型,即使初始形状的 seedian 相同也是如此。
    • 不再允许覆盖位于二级导入中的属性,即在已导入规则文件中导入的属性。 例如,在 import 语句 import imp1:"rule.cga" ( imp2.x = 1 ) 中:imp2.x 的属性覆盖无效。
    • 规则定义中的标识符不得包含多个导入标识符。 例如,在 imp1.imp2.Lot-->Rule 中,第二个导入标识符 imp2 无效。 具有导入标识符的规则仅在 Default 样式中有效。
    • 未定义的规则不得包含多个导入标识符。 例如,在 Lot-->imp1.imp2.Undefined 中,第二个导入标识符 imp2 无效。

修复缺陷

  • setbacksetbackPerEdgesetbackToArea 操作:
    • 修复了大型负索引选择器的错误模换行。
    • 选择器 bottomtopobject.bottomobject.topworld.downworld.upworld.side 现在可以按照预期运行。
  • 新增了对读取位于长绝对路径的资产和纹理的支持(仅限 Windows)。
  • CGA 编译器:
    • 修复了首次使用不同编译器版本的规则文件时的漏洞;例如,在新 CityEngine 版本中使用现有工作空间或工程时。 首次生成可能会导致错误或不正确的结果。 从 CityEngine 2023.0 开始,当遇到不同的编译器版本时,规则文件始终能够正确地进行重新编译。
    • 修复了一个漏洞,其中已编译规则文件 (*.cgb) 在错误位置创建,而非在工程的 bin 文件夹(默认情况下隐藏)中创建。 当 cga 文件位于链接文件夹或 rules/rules 文件夹中时,将会出现这种情况。
    • import 功能在许多方面得到了改进:
      • 具有许多导入的规则文件可能会达到内部限制,从而导致编译错误(“常量池大小大于限制”)。 此问题已得到修复。 现在可以处理许多导入。
      • 修复了位于二级导入(即在已导入规则文件中导入的规则文件)中的错误和警告的标记位置。
      • 改进了扩展规则覆盖的报告类型不匹配。
      • 修复了属性覆盖中类型不匹配的错误消息和错误标记位置。
      • 修复了导入循环的错误消息和错误标记位置。
      • 修复了在跨工程进行导入时,导入覆盖中资产查找失败的问题。
      • 修复了当导入规则未以默认样式定义,而是以另一种样式定义时,错误调用已导入规则的问题。
      • 修复了一个漏洞,即当在导入规则文件中定义函数时,在已导入规则文件中调用缺失函数未发出无此类函数错误。
      • 修复了一个漏洞,即当导入标识符和函数名称匹配时,对已导入函数的调用被误解为对内置函数的调用。
      • 修复了一个漏洞,即未针对内置或 CGA 实用程序库函数,而是针对具有匹配签名的用户定义函数执行已导入规则文件中的调用。 此修复可能会更改现有本地编辑内容。
      • 修复了在导入语句中指定未知样式时,错误的错误标记和未处理的错误。

文档

  • setback 操作:新增了未记录的选择器 uv.uMinuv.uMaxuv.vMinuv.vMax 的描述。

CityEngine 2022.1 | CGAC 1.19

新操作

splitAndSetbackPerimeter 操作。

修复缺陷

  • offset 操作:修复了使用 inside 选择器,但由于偏移过大(负)而未创建内部面时出现的错误几何。 现在,在这种情况下,将保留原始几何。
  • deleteHoles 操作:修复了删除非平面形状中的孔洞时的错误几何。
  • comp 操作:修复了选择具有非平面孔洞的面组件时的错误几何。
  • split 操作:修复了包含错误操作名称的警告。
  • 本地编辑内容:
    • 修复了深度递归函数中罕见的崩溃。
    • splitsplitArea 操作:修复了嵌套重复分割模式(重复中的重复)中的崩溃。

CityEngine 2022.0 | CGAC 1.18

新功能

  • 可以使用 start 标识符调用带有 start 关键字的规则。
  • 可以在 import 语句中重新定义带有 extension 关键字的规则。

对现有功能的更改

  • resetMaterial 操作:添加了一个允许重置几何材料的重载。
  • CGA 编译器:声明的名称不能以点结尾,即不再允许使用“Example. -->”。

修复缺陷

  • readMaterial 函数:修复空地图(空字符串表示“无纹理”)。
  • alignScopeToGeometry 操作:修复了 faceSelector 设置为 largest 时的崩溃问题。 在当前几何面积为零时,将发生此情况。
  • CGA 编译器:
    • 规则不再允许使用关键字 attrconst
    • 改进了具有许多导入的大型规则文件的性能。
    • 移除了出现在某些语法错误消息中的换行符。
  • 图层属性(仅限 CityEngine):修复了调用已弃用 getObjectAttr 函数的错误。

SDK 2.6.8135 | CGAC 1.17

对现有功能的更改

  • setbacksetbackToAreasetbackPerEdgeshapeLUO 操作:提高了退缩面凸折点处附加到相邻边的可能性。 这避免了在改变退缩距离时出现间距的情况。 如果退缩面不能连接到边缘,则将向内切割相应的侧面以避免突起。
  • i 操作:对于坐标非常大 (> 10,000) 的资产,其现在在插入和导出时处理方式不同。 这显著提高了数值精度。 但是,此类资产不再被视为实例化。

修复缺陷

CityEngine 2021.1 | CGAC 1.17

新功能

  • 支持读取 IFC 资产。

新函数

对现有功能的更改

  • 字符串串连运算符:字符串现在可以与数组串连
  • envelope 操作:现在保留资产组。
  • splitArea 操作:现在保留资产组和资产表面材料。
  • scatter 操作:散点组名设置为"builtin:point"。
  • CGA 编译器:
    • 局部变量:不再支持在局部变量定义中使用 comp 函数并且将导致编译器时间错误。 而是使用包含 comp 函数的单独函数。
    • 未使用的规则和函数不再写入 CGB。 除了减少 CGB 大小之外,这还避免了对内置操作和函数集的不必要依赖,从而最大限度地提高了旧程序运行时版本的兼容性。
    • 删除了未使用声明(属性、函数、常量函数、规则)的警告。 这是因为声明可能通过导入被另一个规则文件引用。 CGA 编辑器中提供了新选项“查找未使用的声明”。

修复缺陷

  • envelope 操作:修复了错误的结果范围转换。 这发生在应用了范围旋转的非平面形状上。
  • 渲染 (CityEngine)、convexifySetback 操作:修复了在一些自接触和自相交多边形情况下导致错误 uv 坐标和法线的漏洞。
  • splittriminsertAlongUV:修复了存在面材料时罕见的崩溃。
  • CGA 编译器:
    • 已修复导致未处理错误的漏洞。 当递归函数也以另一种风格定义时,这种情况很少发生。
    • 修复了一个漏洞,即在导入中,未检测到跨样式的属性和函数的不匹配返回类型。 这导致在切换样式时崩溃。

CityEngine 2021.0 | CGAC 1.16

新功能

  • 可以使用 with 关键字定义局部变量。
  • 支持读取 DWG 资产。

新操作

新函数

对现有功能的更改

修复缺陷

  • offset 操作:在发生故障的情况下,可以避免崩溃或避免生成退化几何。 该状况将在存在正偏移距离和共线折点的极少数情况下发生。
  • geometry.angle 函数:已修复错误的方位角。 该方位角曾错误地偏移了 180 度。
  • 修复了一个问题,即对于具有 1 个面的初始形状,几何的组名称未设置为 initialShape.name
  • setbacksetbackToAreasetbackPerEdge 操作:避免为 O 形退缩几何创建不必要的边。
  • roofHiproofGableroofPyramidroofShed 操作:修复了导致出现错误几何或在极少数情况下导致带有孔洞的形状上出现错误范围的错误。
  • roofShed 操作:
    • 修复了对负索引的错误考量。
    • 修复了导致凹面上出现自相交屋顶的漏洞。
  • taper 操作:修复了带有孔洞的非平面形状上错误对齐的几何。
  • splitString 函数:空字符串的分割现在返回 [""] 而非空数组。
  • filesSearch 函数:如果没有找到匹配的文件,则该函数现在会返回一个空字符串 "",这是空字符串列表的正确表示。 之前将返回与带有一个空字符串元素的字符串列表相对应的字符串“;”。
  • isinf 函数:修复了非数字值的漏洞:isinf(ln(-1)) 曾错误地返回 true,现在将返回 false
  • CGA 编译器:
    • 修复了无响应的编译器。 当导入的规则文件具有许多函数和样式且包含对不存在的函数的调用(没有此类函数错误)时,就会发生这种情况。
    • findFirst (builtin)、findFirst(实用工具库)函数:修复了极少数情况下编译时间较长的问题。
    • 已改进实用工具库函数的类型不匹配消息。
    • maxminclampreplace 函数:修复了极少数情况下当函数也被用作用户定义时的错误类型不匹配错误。
    • 修复了极少数情况下针对与内置函数具有相同名称和参数计数的定义的错误未使用警告。
    • 修复了当规则名称等于参数名称时未调用规则的漏洞。
    • 修复了不正确的重复参数的错误标记位置。

CityEngine 2020.1 | CGAC 1.15

新功能

  • 支持读取 USD 资产。

新函数

对现有功能的更改

  • CGA 编译器:语法错误(“非预期令牌”)会停止编译进程。 在改正语法错误之前,不会显示定义错误或类型不匹配错误。

修复缺陷

  • 已提高枢轴和范围计算中的数值精度。
  • comp(f):已改善具有许多面的形状的性能。
  • convert 函数:以下转换无法正确进行:
    • convert(pos, object, scope|pivot, ...)
    • convert(pos, world, scope|pivot|object, ...)
    • convert(orient, pivot, scope, ...)
  • split 操作:已修复导致切割片面中缺少面或存在非法孔面的自动封闭切口缺陷。
  • 在初始化阶段(attrconst 计算)出现的运行时错误现在会在“问题”视图中显示。
  • print 函数:初始化阶段(attrconst 计算)的输出现在会打印到 CGA 控制台。
  • CGA 编译器:
    • 已修复在单独行中声明导入覆盖时的错误。
    • 已修复极少数情况下与内置签名匹配的定义的缺少类型检查。
    • 已修复非法父样式的不正确错误消息。
    • 已修复大规则文件达到内部限制时无法正确显示错误的缺陷。
    • 已修复缺少 styleId 的样式的未处理错误。
    • 已修复存在多行字符串时的不正确错误。
    • 已修复重复定义错误标记的缺少工具提示。

CityEngine 2020.0 | CGAC 1.14

新函数

新属性

对现有功能的更改

  • envelope 操作:
    • 已添加用于获取每条边的基本高度和角度数组的版本。
    • 已修复极少数边界情况中的不确定行为。
  • array initialization 函数:已添加用于创建多行 2d 数组的注记。
  • 索引运算符:
    • 通过索引数组或逻辑数组访问元素。
    • 已添加 2d 数组的行和列索引。
  • index 函数:此函数已弃用。 改用 findFirst 函数。
  • readTextFile 函数:不再支持 .csv 扩展名(请参阅新的 readTable 函数)- 如果要以文本的形式读取 .csv 文件,需要将其重命名为 .txt。
  • array initializationsplitStringcomp 函数:返回的数组大小有限。 可在程序运行时首选项中进行配置(默认值:100000)。
  • texture 操作:不存在 alpha 通道时,重置不透明度贴图。
  • strabs 函数:支持数组。
  • @Enum@Range 注记:现在可以将这些注记应用于数组属性,以指定数组元素的枚举值或范围。
  • @Enum 注记:现在可通过属性动态指定枚举值。
  • CGA 编译器:
    • 导入:每个导入必须以 import 关键字为开头。 注记必须置于 import 语句之前。 之前,只能在一个 import 关键字之后设置多个导入和注记。
    • 条件和随机函数以及文字可以直接在行内用作参数。 以前,这对于某些操作和运算符不可行。
    • 规则标识符不得包含连续的点 ("Example -->")。

      不再允许点后有数字 ("Example.1 -->")。

    • "1.==1" 等表达式使用短浮点记法 "1.",运算符之前没有空格(在此示例中为 "=="),将解释为新的元素数组运算符(在此示例中为 ".==")。
    • tstileUVsetupProjection 操作:无法再调用用户定义的规则过载(类型不同),但是会导致类型不一致。

修复缺陷

  • array initialization:已修复通过串连字符串数组和空字符串文字初始化字符串数组时出现的崩溃。
  • bool 函数:已从 inf/nan 检查中排除浮点-布尔转换(程序运行时首选项)。
  • setupProjection 操作:已修复在世界坐标量级非常大或者偏移值非常大的情况下出现的模糊纹理和不连续纹理。
  • find 函数:已修复 matchString 为空时的错误索引。
  • strprint 函数:已修复打印负无穷大的符号。
  • CGA 编译器:
    • 已提高类型推断的性能。 已改进类型不匹配消息。
    • 已修复一些递归函数定义的不正确编译错误。
    • 一元加号运算符:已修复类型检查。 之前,可以将一元加号运算符应用于字符串和布尔值。
    • 已修复在极少数情况下生成不必要的遮挡物的缺陷。
    • 编译器现在会在大规则文件达到内部限制时发布错误。 之前,这会在生成时导致崩溃。
  • 图层属性(仅限 CityEngine):
    • p(概率)函数和随机函数:已修复错误的反转考虑参数概率百分比。 修复之前,函数会返回 true(对于 prob<0percentage<0%)和 false(对于 prob>1percentage>100%)。
    • find 函数:已修复发现 matchString 重复出现的缺陷。 例如发现 "aba" 在 "ababa" 中出现 2 次。
  • 已修复生成包含孔和大量折点的形状时的性能问题。

其他

CityEngine 2019.1 | CGAC 1.13

新函数

对现有功能的更改

  • set 操作:已添加数组属性的设置操作。
  • RPK 创建不再支持使用拼写错误(小写/大写错误)的注记(仅限 CityEngine)。
  • 所有内部上下文/遮挡查询:已提高涉及许多形状时的性能(仅限 CityEngine)。
  • CGA 编译器:
    • 数组现在可以是 const 或 attr。
    • 如果无法确定递归函数定义的返回类型,将出现新的编译错误“函数调用循环”。 函数递归必须包含一个条件和至少一个停止条件。 否则,将导致无限的函数调用循环。
    • 不再编译对类型错误(类型不一致)的操作的调用,除非定义了具有相同签名的规则。 之前,会发布“未定义规则”警告。
    • 不再允许具有一个参数的属性(streetwidth 除外)。
    • 将发布具有预期类型的更有用的类型不一致错误,而不是无此类函数错误。
    • 更具选择性的未使用警告。 同样会为没有参数的未使用属性和函数显示。 如果出现错误,不会发布未使用警告。
    • 对因另一个函数中类型不一致而未解析的函数的调用将作为信息而不是错误进行报告;表示这是一个原有错误。 这有助于确定错误的来源。 在 CityEngine 中,信息问题级别的可视化可在首选项中进行配置(常规 > 编辑器 > 文本编辑器 > 注记)。
    • 如果注记名称拼写错误(小写/大写错误)或如果使用了已弃用注记、函数或操作,将发布警告。

修复缺陷

  • CGA 函数的最大递归级别:已修复所选递归级别过高时的崩溃。 可通过属性 /cgaenv/maxFuncCallDepth 或 CityEngine 首选项(常规 > 程序运行时 > 最大函数调用深度)设置最大递归级别。
  • roofShed(byHeight) 操作:已修复某些情况下的错误高度。
  • print 操作、print 函数:已修复打印空字符串(仅限 )时打印 2 个换行符。
  • CGA 编译器:
    • 已修复递归函数定义。 之前,在某些情况下会显示不正确的编辑错误(1. 使用多个函数进行递归循环;2. 条件;3. comp 函数,具体取决于涉及的表达式的顺序)。
    • 已缩短代码包含错误时的响应时间。
    • 如果可以在任何样式中找到匹配的规则定义,则不会显示未定义规则警告。
  • 图层属性编译器:
    • getObjectAttr 函数(已弃用):已修复在条件中的使用。 之前,在某些情况下,会报告不正确的错误(具体取决于涉及的表达式的顺序)。
    • getObjectAttr 函数(已弃用):同名(以文字的形式给出时)对象属性的自动类型匹配。 这仅适用于同一函数或属性定义。
    • 已修复编辑文本后不更新编辑器中的问题标记的缺陷。

CityEngine 2019.0 | CGAC 1.12

新操作

新函数

新属性

  • 材料属性
    • material.emissive.{r|g|b}material.metallicmaterial.roughness
    • material.{emissive|occlusion|roughness|metallic}map 和对应的 {su|sv|tu|tv|rw}
    • material.opacitymap.mode

对现有功能的更改

修复缺陷

  • convexify 操作:已修复具有孔的形状上的错误结果。
  • softenNormalssetNormals(auto) 操作:计算孔边界上的折点的正确软法线。 仅当将阈值角设置为小于 180 度的值时,才会出现此漏洞。
  • comp(v)comp(e) 操作:计算孔边界上折点/边组件的范围 z 轴的正确方向。
  • comp(v)comp(e)alignScopeToGeometry 操作:已修复应用于边或折点时的结果范围。
  • roofHiproofGable 操作:已纠正初始形状包含共线折点时屋顶面的生成顺序和第一条边。
  • roofGable 操作
    • 已修复初始形状包含几乎相同的折点时后续操作或函数崩溃。
    • 已纠正初始形状包含多个面时修剪平面生成。
  • cleanupGeometry 操作:已修复折点合并崩溃。 当孔折点位于属于另一个孔和包围面的折点的容差范围内时,会发生这种情况。
  • 内部几何清理(仅限 CityEngine):保留孔的第一条边。
  • 已修复朝反向法线方向应用法线贴图和凹凸贴图时的缺陷(仅限 CityEngine 渲染)。
  • setback 操作:已改进凹陷折点处的结果。
  • CGA 编译器:

CityEngine 2018.1 | CGAC 1.11

对现有功能的更改

  • setback 操作:退缩面的第一条边位于初始面的轮廓上。 对于其余面,第一条边最靠近初始形状的第一条边。 这一修复可能更改现有模型。
  • alignScopeToGeometry 操作:已修复使用 world.lowest 时的数值不稳定性。 如果有多个面或边作为最低组件候选项,则将选择索引最低的面或边。 这一修复可能更改现有模型。
  • innerRectangle 操作:已修复数值不稳定性。 如果有多个矩形作为最大矩形候选项,则将选择与形状质心的距离最低的矩形。 这一修复可能更改现有模型。

修复缺陷

  • setback 操作:
    • 避免创建狭长面,尤其是在具有短边的圆角处。
    • 已修复无效 uv 集的可能崩溃。

CityEngine 2018.0 | CGAC 1.10

已更改基本行为

可以更改其随机值

  • 如果添加了另一个属性 B 来调用 A
  • 如果已将对另一个属性 B 的调用添加到 A,同时会随机评估 B。

此修复可能会更改现有模型,即使初始形状的 seedian 相同也是如此。

新操作

新函数

对现有功能的更改

  • acosasinsqrt 函数:如果参数超出有效范围,将发布警告。

修复缺陷

  • CGA 编译器
    • 编译器现在会在所有样式中检查是否存在同名的属性和函数的匹配返回类型。 之前,不一致的返回类型会导致在文件预览中切换样式或显示所有样式时崩溃。
    • 现在还会检查所有样式中规则和函数的匹配参数类型是否有未使用的定义。
    • 编译器现在会检查所有样式的定义类型(属性、常量、函数或规则)是否一致。
    • 已修复不兼容版本警告中错误的行引用。 对于导入其他规则文件的规则,会发生上述情况。
  • comp 操作
    • 为每个组 (g) 和材料 (m) 组件重新评估随机数生成器。 在此修复之前,rand 会为所有组件返回相同的值。
    • 组组件 (g):已修复带孔的网格每个面的错误材料。
  • trimi 操作:修剪平面现在会考虑资产中的孔。
  • trimisplit 操作:修剪平面和分割现在考虑每个面的材料。
  • split 操作:已修复当分割位置处存在面积接近零的面时缺少填充面。

CityEngine 2017.1 | CGAC 1.9

新注记

新函数

对现有功能的更改

  • cleanupGeometry 操作:合并折点:现在会在容差范围内合并孔的折点。 因此,相邻孔可以合并成一个孔,并且可以移除小孔。
  • @Range 注记的先前使用已弃用。 改用新的参数化版本的 @Range 注记和新的 @Enum 注记。
  • CityEngine 支持 @Angle@Distance@Percent 注记。

修复缺陷

  • 遮挡查询:已提高查询几何位于遮挡物形状的表面上时的精度。
  • 所有内部上下文/遮挡查询:已修复查询不考虑遮挡物/上下文形状并因此返回错误值的缺陷。 对于在第一次评估通过(两次通过生成过程)中未遇到的标注(包括空标注),会发生上述情况。
  • cleanupGeometry 操作:
    • 合并折点:防止创建小孔和反转面。
    • 移除重复面:正确考虑孔。
    • 移除共面的面之间的共享边:已提高孔的总体稳定性和结果。
    • 移除面积较小的退化面:为了降低影响,在最后应用。
  • CGA 编译器:已修复名称和值在注记 @Annotation(name=value) 中不正确匹配的问题。
  • scatter 操作:可通过相对坐标指定高斯标准差。
  • tileUV 操作:已修复在面积接近零的几何中创建无效 UV。

CityEngine 2017.0 | CGAC 1.8

新操作

新函数

对现有功能的更改

修复缺陷

  • setback 操作:在某些情况下,会在凹陷形状上创建自相交面。 这可能导致后续操作失败。
  • comp 操作:
    • 合并的 (=) 面组件分割现在考虑每个面的材料。
    • 已修复具有相对相邻面的边的错误边组件分割。
    • 已修复合并的 (=) 折点和边组件分割的错误结果。
    • 已修复(已弃用)noStreetSide 组件分割选择器处理。
  • geometry.areageometry.isOriented 函数:已纠正负范围大小的范围选择器(例如,如果 scope.sz < 0,前侧将变为后侧)。
  • alignScopeToGeometry 操作:zUp 模式:已修复仅由折点组成的网格的错误枢轴(例如,通过折点分割或分散)。
  • CGA 编译器:
    • 会避免覆盖常量,否则会发送错误。
    • 已修复不兼容版本警告中错误的规则行引用。
    • 已修复在修复错误后无法正确编译规则文件的问题。
    • 已修复编译错误的错误规则行引用。
  • insideoverlapstouches 函数
    • 已修复封闭形状不接触并与内部的另一个几何重叠的缺陷。
    • 内部遮挡:已修复将作为当前形状的子项的组件分割形状视为遮挡的缺陷。
    • 相互遮挡:已修复不考虑在常量或函数中定义的遮挡查询的缺陷。
    • 已修复在极少数情况下因三角形面积接近零而错误地返回 true 的缺陷。
    • 相互遮挡:已修复在内部幽灵树生成器件通过 component splitoffset 操作创建遮挡物形状的缺陷,同时会为相互遮挡错误地考虑。
    • 已修复导出中的正确行为。
  • set 操作:已修复缺陷:尝试设置 initialShape.pz 属性会导致不一致行为(与 initialShape.pa 不匹配)。
  • alignScopeToAxesrotateScopemirrorScopesetPivotcleanupGeometryreduceGeometryconvexifysplit 操作:正确考虑源自 split 操作的未调整范围。
  • offset 操作:现在保留资产材料和组。
  • scatter 操作:点数为负或为零时将发布警告。
  • insideoverlapstouchesgeometry.angle 函数,alignScopeToGeometryalignScopeToAxes 操作:已针对由折点或边组成的形状修复(源自 compscatter 操作)。
  • assetApproxRatioassetApproxSizeassetBestRatioassetBestSizeassetFitSizefileRandomimageApproxRatioimageBestRatiofileSearch 函数:已修复在 RPK 中使用时导致错误的资产查找的缺陷。

CityEngine 2016.1 | CGAC 1.7

对现有功能的更改

  • innerRectangle 操作:
    • 已提高整体性能。
    • 现在还会为折点计数较高的大凹面查找正确的最大矩形。
    • 边模式不会考虑可以忽略的短边。
    • 更准确地考虑附近的共线边。
    • 会阻止非常细的剩余地产面。

修复缺陷

  • trimi 操作:已修复修剪平面在凹面上的各种问题。
    • 已修复部分网格无法修剪掉的问题。
    • 已修复修剪的网格包含不必要的边的问题。
    • 已修复屋顶面上的修剪网格包含孔的问题。
  • cleanupGeometryreduceGeometry 操作:已修复范围包含旋转部分时的错误结果。
  • cleanupGeometry 操作:已修复会导致不一致网格的缺陷,该缺陷可能导致某些后续操作(例如 setNormals(soft)softenNormals)崩溃。
  • offset 操作:已修复具有孔的面上未定义的负向偏移行为。
  • envelope 操作:已修复折点共线时可能导致崩溃的缺陷。
  • getGeoCoord 函数:X、Y 选择器:已修复非公制坐标系转米的转换。
  • innerRectangle 操作:
    • 已提高剩余地产计算的稳定性。
    • 已修复矩形边与面的共线折点重合时失败的剩余地产计算。
    • 已修复极小的面上错误和错误的最大矩形。
    • 已提高在边模式下矩形对齐的精度。
  • roofHiproofGable 操作:
    • 已解决会在精确的矩形地块以及具有共线折点的精确矩形地块上导致错误结果的问题。
    • 已解决具有悬臂和小山形墙的屋顶的问题,其中缺少修剪平面并且面组件的范围错误。
  • comp 操作:已修复相邻面不共面时的错误边组件分割。
  • CGA 编译器:已修复与使用导入的属性传播/覆盖有关的多个问题:
    • 现在可以正常导入用于导入另一个规则并传播属性的规则。
    • 已修复覆盖未在一级导入中定义的二级(更高级别)导入中的属性的问题。
    • 已修复无法指定未在一级导入中定义的二级(更高级别)导入的新属性值的问题。
    • 已修复用于覆盖二级(更高级别)导入中的另一个属性的属性未传播到一级导入的问题。
  • 已修复 Linux 和 OSX 上的 CGB 解码器初始化问题。

CityEngine 2016.0 | CGAC 1.6

新操作

对现有功能的更改

  • setNormals 操作:
    • 使用 softenNormals 功能的新模式“自动”。
    • 计算一致性法线的新模式“一致”。
  • innerRect 操作已弃用。 改为使用 innerRectangle 操作。
  • cleanupGeometry 操作:模式全部/面:移除所有重复面/反面,有一个除外(与方向无关)。
  • i 操作:
    • 用于指定几何向上轴的新参数 upAxisOfGeometry
    • 用于指定几何在范围内的对齐和定位的新参数 insertMode。 选项 keepSizeAndPosition 相当于使用 s(0,0,0)
  • "builtin:cube" 和 "builtin:cube:notex" 已弃用。 改为使用 primitiveCube
  • extrude操作:
    • 参数 axisWorld 已弃用并更改为参数 extrusionType
    • 新类型 face.normalvertex.normalworld.upworld.up.flatTop
    • x, y, z, world.x, world.yworld.z 已弃用。 使用类型 world.up 而不是轴 world.y
  • roofGableroofHiproofPyramidroofShed 操作:
    • 可使用给定高度生成屋顶。
    • 用于在屋顶生成 byAnglebyHeight 之间进行切换的新参数 valueType
  • roofShed 操作:对于位于具有一个面的形状上的棚屋屋顶,不会生成水平修剪平面、四坡、天沟和屋脊边。 之前,对于具有多个面的形状也是如此。

修复缺陷

CityEngine 2015.2 | CGAC 1.5

修复缺陷

  • getGeoCoord 函数:已修复选择器“纬度, 经度”无法返回某些坐标系的正确 WGS84 坐标的缺陷。

CityEngine 2015.1 | CGAC 1.5

新功能

  • 支持读取 FBX 资产。

修复缺陷

  • comp 操作:已修复在执行 comp(f) 后导致面未对齐的数值问题。
  • cleanupGeometry 操作:使其行为在对材料按网格和材料按面的几何进行边清理时相同。

CityEngine 2015.0 | CGAC 1.5

新函数

对现有功能的更改

  • split 操作:
    • 不再允许缺失大小。 例如,不再编译 split(x) { A }。 正确的等效项为 split(x) { ~1: A }
    • 大小表达式中的函数不再需要额外的括号。
  • @Hidden 注记:已更改不同导入之间的传播。 隐藏的导入会以递归的方式隐藏其所有导入。
  • uid 形状属性已弃用。 改为使用 getTreeKey 函数。

修复缺陷

  • 已修复 cgb 解码器中无法读取包含大量属性/规则/分割的已编译 cga 文件的缺陷。
  • Vertexmerger:已修复阻止孔折点与其他面的折点合并的缺陷。
  • float() 函数:使字符串-浮点转换与区域设置无关。
  • split 操作:已增强内部网格清理以减少内存加载,并修复了导致不必要的折点合并的缺陷。
  • roofHip 操作:避免重复折点。
  • offsetroofGableroofHip 操作:提高了具有共线折点的面上的偏移/屋顶构造稳定性,并修复了内存激增缺陷。
  • cleanupGeometry 操作:已修复在对材料按面的几何进行边清理时导致非法材料分配的缺陷(“填充孔渲染缺陷”)。
  • 已修复标量属性和地图属性同名时的未定义行为。
  • CGA 编译器:具有大量参数的参数规则和函数不会再使编译器/CityEngine 挂起。

CityEngine 2014.1 | CGAC 1.4

修复缺陷

    • CGA 编译器:已修复样式代码生成中导致 .cgb 文件中出现混合样式的缺陷。
    • 偏移roofGableroofHip 操作:提高进行孔处理的面中非法孔处理的稳定性(孔折点与封闭面的折点相同 - 吊架)。

    操作。

CityEngine 2014.1 | CGAC 1.3

新操作

  • deleteHoles

新函数

  • geometry.nHoles 函数。
  • geometry.isClosedSurface 函数。

新 CGA 实用工具库函数

  • listTerminate 函数

新功能

对现有功能的更改

  • 已更改递归检测的默认值:
  • 最大派生深度:介于 99 到 1024 之间。
  • 最大派生宽度:介于 50000 到 100000 之间。
  • 最大函数调用深度:介于 256 到 1024 之间。
  • 已优化函数内存开销(即,现在在崩溃之前可以超出默认限值的交叉函数更多 - 实际限值取决于平台和函数)。
  • Collada 读取器:新增了对具有孔的面的支持。
  • str 函数和 printreport 操作:使浮点-字符串转换与区域设置无关(现在可能以不同的方式格式化某些数字)。
  • 内部几何清理:已提高对非法孔(重叠孔、错误的折点顺序)的处理。

修复缺陷

  • extrude 操作:已修复进行孔处理的面。
  • convexify 操作:已修复多条边长度相同时的面一致性。
  • envelope 操作:已修复导致“开放体积”的边界情况。
  • alignScopeToGeometry 操作:已修复点/边形状支持:范围大小设置为 1 而不是 0,枢轴方向未设置为折点/边法线,已修复在边几何上使用非法边索引时的崩溃。
  • setbackshape{L|U|O} 操作:已修复内存泄漏。
  • split 操作:已修复孔处理(在某些情况下生成的非法孔)。
  • offsetroofGableroofHiproofShed 操作:提高进行孔处理的面中非法孔(吊架)处理的稳定性。
  • assetInfoassetsSortRatioassetsSortSize 函数:已修复未知/无法加载的资产的行为。
  • 材料形状属性:material.XXXmap 会在未找到纹理时返回 "builtin:unknowntexture.png"
  • 已修复(已弃用)noStreetSide 组件分割选择器处理。
  • 已修复与边/点几何法线(仅限 CityEngine 渲染)有关的缺陷。
  • 已修复在空白几何中进行边处理时的缺陷。
  • i 操作:已修复处理未知资产时导致崩溃的竞争条件。
  • 已修复导致崩溃的内部非法指针访问。
  • printprintset 操作:已修复 nan 处理(避免检查)并移除了过多的换行符(布尔)。
  • str 函数:已修复 inf/nan 处理。
  • listRange 函数:已修复读取(非法)非 ´;´ 终止字符串列表处理时的缺陷。
  • 已提高内部弧度-度转换精度。
  • AssetErrors:报告已插入资产几何转换中的警告。
  • 已修复修剪/分割中的折点合并问题(未合并相同折点)。
  • CGA 编译器:
    • 已修复延伸中的缺陷(不总是传播属性值)。
    • 已修复导入中的缺陷(复制了错误的属性,保护所选属性而不保护所有属性)。
    • 已修复当规则与 CGA 实用工具库函数同名时导致编译错误的缺陷。

CityEngine 2014.0 | CGAC 1.2

新功能

  • offsetroofGableroofHiproofShed 操作:面中现在支持孔。
  • setback 操作:用于选择 uv 集和基于 uv 的新选择器 uv.left, uv.right, uv.bottom, uv.top 的新语法;不再删除 uv 坐标和折点法线,但是会针对新内部折点进行插入。
  • tileUV 操作:将 textureWidthtextureHeight 参数设置为 0 时,可防止接触该坐标。

对现有功能的更改

  • 导入:已简化属性值传播逻辑。

修复缺陷

  • 导入:在某些情况下,解析跨工程导入中的资产会失败(从同一目录中导入 cga 文件的导入)。 已在 cga 编译器 (CGAC) 中修复此问题,因此应更新现有 rpk。
  • assetApproxRatioassetApproxSizeassetBestRatioassetBestSizeassetFitSizefileRandomimageApproxRatioimageBestRatio 函数:已修复从其他工程导入时导致错误的资产查找的缺陷。
  • geometry.angle 函数:已修复导致错误结果的缺陷。
  • fileSearch 函数:
    • 以前,当前工程中的提示会以相对路径记法进行报告;这同样更改为绝对工作空间路径。
    • 已修复在属性初始化中使用非法正则表达式时的崩溃。
    • 引号中的空格换行
  • initialShape 属性在 const / attr 函数中使用时会返回错误值。
  • comp 操作:对于具有孔的面,边界、内部选择器和 = 运算符存在缺陷。
  • imageInfo 函数:不会再在文件名为空时崩溃。
  • imagesSortRatio 函数:不会再在文件列表为空时崩溃。
  • split 操作:已修复在某些情况下导致检测到 uv 分割的最后一个叶的缺陷。
  • inside 函数:已修复导致错误结果的缺陷。
  • 已修复与垂直距离较远的初始形状的内部模型遮挡有关的缺陷:忽略 y 上的相邻距离以查找可能的遮挡。

CityEngine 2013.1 | CGAC 1.1

已更改基本行为

  • attr/const 函数评估顺序:在之前的 CGA 版本中,attr 和 const 函数不会提前评估,即在第一次使用时进行。 请记住,attr 和 const 函数仅评估一次。 此方法会导致非直观行为,即更改某些规则的代码可能更改 attr 的值。 请牢记,某些函数(很显然,还有形状属性)取决于当前形状的几何,某些甚至会更改当前形状的状态(例如 rand)。 因此,const 函数的(非)评估可能影响规则执行。 从 2013.1 开始,所有 attr/const 函数将在应用开始规则之前在 seedian 派生自初始形状 seedian 的初始形状上进行评估。 不会影响初始形状的随机数生成器。 尽管新方法会使 CGA 编码更加直观,但是与较早的版本相比,会更改行为。
  • inf/nan 检查:在先前的 CGA 版本中,会在运行时测试一系列操作和函数浮点参数是否为非数字/无穷大 (nan/inf) 值。 在大多数情况下,此类值将替换为 0 并发布警告。 在其他情况下,操作会中止。 CGA 2013.1 引入了统一的 inf/nan 行为:内置功能的所有浮点参数的检查可以设置为“忽略”(= 不检查)、“中止并显示错误”或“替换为零”(请参阅 Grammarcore 首选项)。 默认行为为“替换为零”,与经典行为最为接近。 尽管 CGA 2013.1 提供了有关 inf/nan 值的更多调试功能,但是行为与先前版本不同。
  • 内部遮挡和报告、打印输出、CGA 错误报告:在解析内部遮挡查询期间,会删除(并重新评估)一些形状和子形状树。 report 操作按照此类形状的规则(以及 print 操作和函数的输出及所有 CGA 错误/警告)发布的报告将连同这些形状一起删除。 尽管新行为更加合理(每个报告/打印输出/错误都与模型等级中的形状相关联),但是它与先前版本中的不同。

新 CGA 实用工具库函数

新功能

对现有功能的更改

  • report 操作:适用于所有许可。
  • report 操作:更高效的新实施 - 生成的几何可能与先前版本不同。
  • fileExists 函数:现在针对所有 builtin 返回 true。
  • material.color.rgb 属性:返回十六进制字符串(请参阅 color 操作),而不是介于 [0,1] 之间的三浮点字符串。
  • listClean 实用工具函数:现在会过滤空白条目。
  • listIndex 实用工具函数:支持通配符。
  • envelope 操作:已弃用无方向参数的签名。

修复缺陷

  • alignScopeToGeometry 操作:提高有关错误几何的稳定性(修复崩溃)并优化面材料支持。
  • assetApproxRatioassetApproxSizeassetBestRatioassetBestSizeassetFitSizefileRandomimageApproxRatioimageBestRatio 函数:已修复从其他工程导入时导致错误的资产查找的缺陷。
  • assetApproxRatio 函数:已修复 axisSelectorRatio 参数(使用 yz 时崩溃)。
  • assetsSortSize 函数:已修复 axisSelectorSize 参数(忽略 yz)。
  • envelope 操作:
    • 已修复 baseHeights 之一等于 maxHeight 时缺少顶面。
    • 支持非平面的面。
    • 已修复多个数值问题(崩溃、错误几何)。
  • i 操作和初始形状处理:添加了零角度移除并优化面材料支持。
  • print 函数:在每个调用后添加换行符(与在打印操作中一样)。
  • compenvelopeenvelopegeometry.areageometry.isOriented 操作/函数:street.xxx 选择器:不会在没有为索引 0 但为其他索引定义了 streetWith 属性时回退到 object.xxx 选择器。
  • 折点合并器(导出 + 导入到诸多操作):提高有关错误几何的稳定性(修复崩溃)。
  • 三角仪(导出、渲染和导入到诸多操作):正确处理几乎相同的折点(导致不一致几何和崩溃)。
  • 已修复与导入有关的一系列编辑器缺陷,最重要的是阻止设置导入的通用属性的缺陷。

CityEngine 2012.1

新操作

新函数

新属性

  • uid 属性

新 CGA 实用工具库函数

新功能

对现有功能的更改

修复缺陷

  • comp 操作:将合并 (=) 运算符与边和折点 (e|v) 搭配使用会导致未定义行为。已修复。
  • geometry.isOriented 操作:world.x 选择器反转。已修复。
  • i(修剪)和 split 操作:已修复导致不一致几何的一些缺陷并针对较大几何提高了性能。 这还将在折点合并器打开时提高导出速度。
  • alignScopeToAxes 操作:现在,如果当前形状几何为空(例如,在分散或 comp(e|v) 操作后),并且多网格几何不会再失去材料,则该操作同样适用。

CityEngine 2011.1

新函数

新属性

新功能

  • 新增对通用几何属性的支持:每个属性可具有其自己的属性副本,值将传递给后续属性。 可使用 set 操作设置值。
  • 新增对样式的支持:可以将规则和属性捆绑在一起并命名以形成样式。 所有样式均派生自默认样式。 这与 OOP 中的继承有点相似。
  • 导入规则文件时,现在可以保护属性并且可选择样式。
  • color 操作:新增采用三浮点的过载。
  • geometry.area 函数:新增 object.front、streetSide 和 noStreedSide 选择器。
  • 现在可以在 push [ 和 pop ] 操作之间使用 case 块,即新范围可以是条件范围。
  • CGA 执行追踪以进行调试,请参阅 Grammarcore 首选项
  • alignScopeToAxes 操作:新增 x 和 z 选择器。

对现有功能的更改

  • 材料属性
    • 如果未修改形状材料属性:返回第一个几何资产网格材料的属性(即,始终返回当前值;在先前版本中,始终返回形状材料值)。
    • 移除了 material.ambient.a 属性
    • 已弃用 material.color.a(替换为 material.opacity)和 material.map{3,4,5}(替换为 material.specularmapmaterial.opacitymapmaterial.normalmap)属性
    • 已将 material.bump 更改为 material.bumpValue
    • 对透明度处理所做的基本更改:现在始终忽略 material.colormap 的 alpha 通道;必须使用 material.opacitymap 纹理图层设置 alpha 贴图;同样,必须使用 material.opacity,而不是 material.color.a;渲染:CityEngine GL 预览现在会删除 alpha < 0.1(之前为 0.3)的碎片。注:将在所有材料后渲染具有不透明度的所有材料。
    • 可通过将文件名设置为空字符串禁用纹理(即,texture("") 或 set(material.opacitymap, ""));在先前版本中,这会导致使用 "builtin:unknowntexture.png";默认材料纹理设置为空字符串,而不是“不可用”。
    • 如果找不到纹理,纹理名称始终设置为 "builtin:unknowntexture.png"。 对于拼写错误的 "builtin:XXX" 纹理同样如此(在先前版本中,设置为 "builtin:default")。
  • "builtin:cube" 现在只有 uv 集 0(色彩映射表)的纹理坐标(在先前版本中,为 3:uv 集 0、1、2)。
  • 对于渲染和导出,现在未定义的 uv 集默认设置为 0(如果定义了 0),即如果 material.opacitymap 设置为有效纹理,但是 uv 集 3 未定义,将重用 uv 集 0 中的坐标。 之前,这仅适用于高光贴图。 另请参阅纹理:基本知识
  • 已返工 fileSearch 函数(以及实用工具库中的所有相关函数):
    • 搜索逻辑现在更加严格(如果 searchQuery 不是绝对工作空间路径,请相对于当前工程的资产和根文件夹进行匹配(在先前版本中,会尝试与所有文件夹和子文件夹进行匹配))
    • 优化性能
  • 几何资产读取器:已扩展一致性检查,以处理具有折点边的面,并删除了非平面的面检查。
  • 已移除 createShape 操作中的“删除完全修剪掉的形状”优化:在较早版本中,如果新形状完全位于启用的修剪平面后面,则不会创建这些形状。

修复缺陷

  • scatter 操作:高斯分布:已修复右侧/底部情况的错误平均值计算;在某些情况下会导致无限循环。
  • 折点合并器现在会考虑拓扑(即,折点合并选项导出和所有 cga 操作均适用于 O 形)。
  • setbackshapeLUO 操作已得到改进,修复了诸多问题。 值得注意的是,shapeO 现在更加稳定。
  • 已修复带参数的用户定义函数中的致命未检测到递归错误。
  • uv split 操作:
    • 已修复无 uv 集的几何崩溃。
    • 已修复精度缺陷。
  • innerRect 操作:已修复范围包含旋转时的形状放置。
  • 现在可正确处理自相交面(scatteruv split 操作和渲染)。
  • roofHip 操作:已修复特定情况下的崩溃(带悬垂,在共线折点上)。
  • 已修复 comp.sel(仅包含最后一个单词,例如 "front" 而不是 "object.front")。
  • 已修复 convexify 缺陷:检查生成的面中是否存在为零的面积,移除退化面 - 在某些情况下会导致后续操作崩溃。
  • rotate 操作:已修复范围情况缺陷(绕枢轴旋转,而不是范围)。
  • convert 函数:已修复 convert(x|y|z)scopepivotorientx, y, z 缺陷(区分大小)。
  • 材料按面资产:已改进支持,现在删除零面积面时不会删除材料。
  • 分割/修剪修复:恰好沿边切割情况,点数 >1(O 形等)。
  • 已修复内部遮挡几何缓存缺陷(导致错误结果)。
  • Collada 读取器:
    • 现在将忽略线和点(在较早版本中,它们被视为面)
    • 现已优化由纹理和非纹理面组成的网格的处理(非纹理面的所有折点会收到 (0,0) uv)。
  • 图像读取器现在可正确处理 16 位灰度纹理。
  • geometry.area 速度更快且更加稳定。

CityEngine 2010.3

新操作

新功能

  • comp 操作:新增 world.xxxobject.xxxstreetSide 选择器。
  • geometry.area() 函数现在支持组件分割样式选择器,以仅计算一部分几何面的面积。

对现有功能的更改

  • extrudetaper 操作:负高度不再更改枢轴,但会导致负范围大小。

修复缺陷

  • 已修复修剪负大小范围缺陷。
  • color 不会接触 alpha(之前将其设置为 1.0)。
  • comp 操作:已纠正负范围大小的范围选择器(例如,如果 scope.sz < 0,前侧将变为后侧)。
  • convexifyinnerRect 操作:已修复与共线折点有关的数值问题:在操作之前将其移除。
  • mirrorScope 操作:已修复导致错误平移的缺陷。
  • roofShed 操作:已修复多面形状上棚屋屋顶的折点索引。
  • offset 操作:已修复未生成内部/边界几何(由于偏移过大)并使用相应的选择器时的缺陷。
  • 已修复编译器缺陷:之前会错误解析以 &const& 或 &attr& (例如,construction)开头的函数。

CityEngine 2010.2

新操作

新函数

新功能

  • split 操作现在支持在 uv(纹理坐标)域中进行分割,包括支持“无扭曲”域(unitSpace 表面参数化)。
  • offset 操作:新重载允许仅保留 insideborder 面。
  • setupProjection 操作:新重载允许向设置范围添加平移偏移。

对现有功能的更改

  • extrudetaper 操作现在保留纹理坐标。
  • extrudetaperroofGableroofHiproofPyramidroofShed 操作不再设置枢轴,而是尽可能保留范围的 x 轴方向(即,范围和枢轴方向现在不同)。
  • alignScopeToGeometry 操作:现在支持负索引(模,即 -1 是最后一个面/边;之前为未指定的行为)。
  • comp(e) 操作:边现在具有定义索引,即边 0 一定是第一个面的第一条边。
  • roofGableroofHiproofShed 操作现在可以保证在任何情况下将第一个屋顶面置于输入面的第一条边上,并且如果当前几何仅由一个面组成,则将所有屋顶面置于对应边上。
  • setupProjection 操作:已弃用 setupProjectionuvSet, axesSelector, width, height, uwFactor 重载)。
  • 已更改递归检测:控制形状树宽度而不是活动结点

修复缺陷

  • 如果参数不是浮点,则不会编译递归函数。
  • replace 函数:之前仅替换第一个事件,现在会替换所有事件。
  • splittrim 操作:
    • 现在处理凹面。
    • 现在处理大小为负的范围。
  • 已修复内部遮挡缺陷(在某些情况下,会针对错误的组件预分割体积进行检查)。
  • geometry.isPlanar 函数:如果是共线边,则会报告非平面性。
  • innerRectconvexifyroofHiproofPyramid 操作和 roofShed 操作:已修复数值问题。
  • alignScopeToGeometry 操作:world.lowest 选择器:如果所有折点的 y 坐标恰好位于 0.0 上,则结果是随机的。
  • comp 操作:如果 "=" 运算符与已旋转范围搭配使用,生成的形状会具有错误的范围和枢轴位置。
  • center 操作:如果范围已旋转,则无法正常执行。

CityEngine 2010.1

SR1 新函数

SR1 对现有功能的更改

  • 已修复签名匹配缺陷(例如,alignScopeToGeometry 的假语法错误)
  • 已修复导入的规则文件中的错误资产搜索路径
  • 已修复 cgalib replace() 问题
  • 已修复 translate(rel, object, ...) 操作缺陷
  • 已修复导致在拉伸和 roofXXX 操作中出现未配准折点的缺陷(连接到非常薄的要素)。
  • 已修复多面拉伸中的缺陷:在特殊情况下,会删除某些面

新操作

新函数

新功能

对现有功能的更改

  • initialShape.startRule 是新功能,用于替换弃用的 initialShape.symbol
  • 资产和文本搜索:现在始终相对于规则文件搜索插入的资产(或文本),并且搜索位置已发生变化。 不再应用任何搜索启发式算法,例如,资产 "assets/windows/window1.obj" 必须以 i("windows/window1.obj") 的形式插入;在较早版本中,i("window1.obj") 会找到该文件(但是可能是另一个文件,文件名相同,但是位于工作空间中的其他位置)。
  • s 操作:负大小现在会导致镜像几何(具有反转法线),而不是隐式平移。 使用负大小的规则转换很直接:使用正值并添加 t 操作,例如此 cga 代码 s('1,'1,-1.2) OpeningWall("door") Door 必须转换如下:s('1,'1,1.2) t(0,0,-1.2) OpeningWall("door") Door
  • 已修复插入的对象资产的反向面和网格顺序 - 面 id 已反转(组件分割!)
  • initialShape.symbol 属性:已删除签名字符串 (''${}'')
  • alignScopeToGeometry:(a) 新面选择器 world.lowestlargestany。(b) 新边选择器 world.lowestlargest 和新语法(面和边选择器和索引的组合)。 (c) 已弃用 alignScopeToGeometry(upAxis, faceIndex)alignScopeToGeometry(upAxis, auto)
  • innerRect 操作:(a) 现在作用于几何的每个面(而不仅仅是第一个面)。 (b) 处理凹面(首先进行凸化,然后在最大矩形上计算内接矩形)。 (c) 仅保留与 x 轴对齐的矩形面。
  • 无法再在 s, r, t 运算中使用 ~ 运算符 - 它不起任何作用。
  • 现在可以使用 setupProjection 运算符 ~ 和 '。
  • setPivot:不再支持 "yUp" 和 "zUp" 选择器(使用 xyzyzx)。

修复缺陷

  • 遮挡:(a) 已修复导致错误结果的缺陷 (b) 已修复内部遮挡内存泄漏 (c) 已修复可能导致导出模型不一致的缺陷。
  • geometry.isConcave 函数:已修复导致错误结果的数值问题。
  • 已更改 const 表达式计算 - 始终进行计算 → 数字一致,以及如果被检查器值覆盖
  • 组件分割:已修复资产包含多个网格/材料时导致材料丢失的缺陷。
  • setupProjection 操作:已修复导致错误结果的一些数值问题。
  • 对象资产读取器现在会处理负索引(最大文件数)
  • color 不会接触 alpha(之前将其设置为 1.0)。
  • 优化导入规则文件的名称冲突处理。
  • 类型处理更加严格,之前仅在生成期间检测到的一些错误现在会在编译时检测到。
  • split 操作:在某些情况下(拉伸几何),会重复纹理坐标,而不是进行分割。

CityEngine 2009.3

新功能

对现有功能的更改

  • 支持修剪平面沿凹面。 修剪平面不再无限大,可通过 Grammarcore 首选项控制其范围。
  • roof 操作已弃用。
  • offsetUV 操作已弃用(现在为 translateUV)。
  • setupUVbakeUV 已弃用(改为使用 setupProjectionprojectUV 操作)。
  • extrudeprojectUVroofHiproofShed 现在会处理多面初始形状。
  • inside、overlaps、touches 函数:(1) 新增 interintraall 选择器。 (2) 特殊配置(“面完全被体积侧面覆盖”)现在包含在 inside 条件中。
  • 用于控制无限递归检测的新设置:(1) 限制函数调用深度,(2) 限制活动形状数量(检测 shapetrees-breadth-explosion),请参阅 Grammarcore 首选项

修复缺陷

  • alignScopeToAxes()(仅限无选择器默认情况)无法正常运行,已修复。
  • 非布尔表达式在 case 语句中不再有效(之前会导致运行时错误)。
  • 已修复与在 imported cga 文件中使用 convert() 有关的缺陷。
  • setupUV()bakeUV() 之间使用 alignScopeToAxes()alignScopeToGeometry() 会导致错误的纹理坐标,已使用新操作修复。
  • 已修复刻意阻碍 convert() 等操作的欧拉角度提取缺陷。
  • extrude 操作:已修复第一个面的索引。
  • convert 函数:convert(orient, scope, world | object, ...) 无法正确进行
  • 组件分割:(1) 在空白选择上使用索引时不会再发生崩溃。 (2) 交叉边/折点组件分割不起作用(导致空白选择),已修复
  • inside、overlaps、touches 函数:已修复多个缺陷(错位的相交体积、错误的接触结果、缺失的内部遮挡物)。

CityEngine 2009.2

新功能

对现有功能的更改

  • 对象坐标系:形状枢轴现在相对于 initialShape.origin,而不再是相对于世界坐标系。
  • extrude(axis, h):轴选择器 (x | y | z) 已弃用;新选择器 (world.x | world.y | world.z) 将操作后的枢轴方向更改为与 extrude(h) 后的相同。
  • alignScopeToGeometry:“自动”模式:(1) 如果所有边均位于同一 y 坐标上,将采用最长边,(2) 已修复在极少数情况下的未定义行为的缺陷。

CityEngine 2009.1 及更早版本

不支持较早版本。