CityEngine 2023.0 | CGAC 2.0
编译器升级
编译器已更新至新的主要版本 2.0。 使用 CityEngine 2023.0 创建的规则包与更低版本的 CityEngine 或者任何与 CityEngine 2023.0 不兼容的 CityEngine SDK 客户端不兼容。 请使用最新版本的 ArcGIS Pro 和 CityEngine 插件。
新功能
- 新的动态导入功能允许在调用规则时导入和初始化规则集。 可以使用运行时评估值来配置覆盖。
新注记
- @DisplayName 注记。
对现有功能的更改
- offset 操作:更改了每个面的生成偏移几何的拓扑结构:在边界面的边界处,将不再创建重复折点。
- 新创建的 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 无效。
修复缺陷
- setback、setbackPerEdge、setbackToArea 操作:
- 修复了大型负索引选择器的错误模换行。
- 选择器 bottom、top、object.bottom、object.top、world.down、world.up 和 world.side 现在可以按照预期运行。
- 新增了对读取位于长绝对路径的资产和纹理的支持(仅限 Windows)。
- CGA 编译器:
- 修复了首次使用不同编译器版本的规则文件时的漏洞;例如,在新 CityEngine 版本中使用现有工作空间或工程时。 首次生成可能会导致错误或不正确的结果。 从 CityEngine 2023.0 开始,当遇到不同的编译器版本时,规则文件始终能够正确地进行重新编译。
- 修复了一个漏洞,其中已编译规则文件 (*.cgb) 在错误位置创建,而非在工程的 bin 文件夹(默认情况下隐藏)中创建。 当 cga 文件位于链接文件夹或 rules/rules 文件夹中时,将会出现这种情况。
- import 功能在许多方面得到了改进:
- 具有许多导入的规则文件可能会达到内部限制,从而导致编译错误(“常量池大小大于限制”)。 此问题已得到修复。 现在可以处理许多导入。
- 修复了位于二级导入(即在已导入规则文件中导入的规则文件)中的错误和警告的标记位置。
- 改进了扩展规则覆盖的报告类型不匹配。
- 修复了属性覆盖中类型不匹配的错误消息和错误标记位置。
- 修复了导入循环的错误消息和错误标记位置。
- 修复了在跨工程进行导入时,导入覆盖中资产查找失败的问题。
- 修复了当导入规则未以默认样式定义,而是以另一种样式定义时,错误调用已导入规则的问题。
- 修复了一个漏洞,即当在导入规则文件中定义函数时,在已导入规则文件中调用缺失函数未发出无此类函数错误。
- 修复了一个漏洞,即当导入标识符和函数名称匹配时,对已导入函数的调用被误解为对内置函数的调用。
- 修复了一个漏洞,即未针对内置或 CGA 实用程序库函数,而是针对具有匹配签名的用户定义函数执行已导入规则文件中的调用。 此修复可能会更改现有本地编辑内容。
- 修复了在导入语句中指定未知样式时,错误的错误标记和未处理的错误。
文档
- setback 操作:新增了未记录的选择器 uv.uMin、uv.uMax、uv.vMin 和 uv.vMax 的描述。
CityEngine 2022.1 | CGAC 1.19
新操作
修复缺陷
CityEngine 2022.0 | CGAC 1.18
新功能
对现有功能的更改
- resetMaterial 操作:添加了一个允许重置几何材料的重载。
- CGA 编译器:声明的名称不能以点结尾,即不再允许使用“Example. -->”。
修复缺陷
- readMaterial 函数:修复空地图(空字符串表示“无纹理”)。
- alignScopeToGeometry 操作:修复了 faceSelector 设置为 largest 时的崩溃问题。 在当前几何面积为零时,将发生此情况。
- CGA 编译器:
- 图层属性(仅限 CityEngine):修复了调用已弃用 getObjectAttr 函数的错误。
SDK 2.6.8135 | CGAC 1.17
对现有功能的更改
- setback、setbackToArea、setbackPerEdge、shapeLUO 操作:提高了退缩面凸折点处附加到相邻边的可能性。 这避免了在改变退缩距离时出现间距的情况。 如果退缩面不能连接到边缘,则将向内切割相应的侧面以避免突起。
- i 操作:对于坐标非常大 (> 10,000) 的资产,其现在在插入和导出时处理方式不同。 这显著提高了数值精度。 但是,此类资产不再被视为实例化。
修复缺陷
- envelope、setback、setbackToArea、setbackPerEdge、shapeLUO 操作:修复了错误结果并提高了具有许多孔洞的形状的性能。
- innerRectangle 操作:修复了在极少数情况下存在的错误余数。
- offset 操作:改进了对具有共线折点的形状的支持。
CityEngine 2021.1 | CGAC 1.17
新功能
- 支持读取 IFC 资产。
新函数
- sortIndices 函数。
- sortRowIndices 函数。
- setElems 函数。
- readMaterial 函数。
对现有功能的更改
修复缺陷
CityEngine 2021.0 | CGAC 1.16
新功能
- 可以使用 with 关键字定义局部变量。
- 支持读取 DWG 资产。
新操作
- setMaterial 操作。
- resetMaterial 操作。
- roofRidge 操作。
- alignScopeToGeometryBBox 操作。
- footprint 操作。
新函数
- getMaterial 函数。
- sum 函数。
- listToArray、listFromArray 函数。
- geometry.groups 函数。
- geometry.materials 函数。
- filesSearch 函数:与 fileSearch 不同,此函数将返回一个字符串数组而非一个字符串列表。
- assetNamingInfos 函数:与 assetNamingInfo 不同,此函数将返回一个字符串数组而非一个字符串列表。
- 图层属性(仅限 CityEngine):isNull 函数。
对现有功能的更改
- i 操作和初始形状:改进了 0 面积面、0 长度边和 0 角度的自动移除。 现在清理的侵入性较小。
- roofShed 操作:现已支持负角度。 请注意,单坡屋顶的面和折点索引现在已经不同了。
- USD 读取器:增加了对 USDZ 文件的支持。
- convert 函数:添加了一个将坐标值作为数组的版本。
- assetsSortSize、assetsSortRatio、imagesSortRatio 函数:添加了将文件列表作为字符串数组而非字符串列表的版本。
- imageBestRatio、imageApproxRatio、assetBestSize、assetApproxSize、assetFitSize、assetBestRatio、assetApproxRatio 函数:无效的字符串选择器不会回退到默认值,但现在会导致运行时错误。
- ceil、floor、rint、isinf、isnan、isNull 函数:支持数组。
- comp、offset、extrude、roofHip、roofGable、roofPyramid、roofShed、taper、split、setback、setbackPerEdge、setbackToArea、shapeLUO、innerRectangle、convexify 操作:现在将保留资产组。
- extrude、taper、setback、setbackPerEdge、setbackToArea、shapeLUO、innerRectangle、convexify 操作:现在将保留资产面材料。
- comp(v) 操作:折点组件的材料现已设置为默认值。
- CGA 编译器:参数标识符中不得包含“$”字符。
修复缺陷
- offset 操作:在发生故障的情况下,可以避免崩溃或避免生成退化几何。 该状况将在存在正偏移距离和共线折点的极少数情况下发生。
- geometry.angle 函数:已修复错误的方位角。 该方位角曾错误地偏移了 180 度。
- 修复了一个问题,即对于具有 1 个面的初始形状,几何的组名称未设置为 initialShape.name。
- setback、setbackToArea、setbackPerEdge 操作:避免为 O 形退缩几何创建不必要的边。
- roofHip、roofGable、roofPyramid、roofShed 操作:修复了导致出现错误几何或在极少数情况下导致带有孔洞的形状上出现错误范围的错误。
- roofShed 操作:
- 修复了对负索引的错误考量。
- 修复了导致凹面上出现自相交屋顶的漏洞。
- taper 操作:修复了带有孔洞的非平面形状上错误对齐的几何。
- splitString 函数:空字符串的分割现在返回 [""] 而非空数组。
- filesSearch 函数:如果没有找到匹配的文件,则该函数现在会返回一个空字符串 "",这是空字符串列表的正确表示。 之前将返回与带有一个空字符串元素的字符串列表相对应的字符串“;”。
- isinf 函数:修复了非数字值的漏洞:isinf(ln(-1)) 曾错误地返回 true,现在将返回 false。
- CGA 编译器:
CityEngine 2020.1 | CGAC 1.15
新功能
- 支持读取 USD 资产。
新函数
- transpose 函数。
对现有功能的更改
- CGA 编译器:语法错误(“非预期令牌”)会停止编译进程。 在改正语法错误之前,不会显示定义错误或类型不匹配错误。
修复缺陷
- 已提高枢轴和范围计算中的数值精度。
- comp(f):已改善具有许多面的形状的性能。
- convert 函数:以下转换无法正确进行:
- convert(pos, object, scope|pivot, ...)
- convert(pos, world, scope|pivot|object, ...)
- convert(orient, pivot, scope, ...)
- split 操作:已修复导致切割片面中缺少面或存在非法孔面的自动封闭切口缺陷。
- 在初始化阶段(attr 和 const 计算)出现的运行时错误现在会在“问题”视图中显示。
- print 函数:初始化阶段(attr 和 const 计算)的输出现在会打印到 CGA 控制台。
- CGA 编译器:
- 已修复在单独行中声明导入覆盖时的错误。
- 已修复极少数情况下与内置签名匹配的定义的缺少类型检查。
- 已修复非法父样式的不正确错误消息。
- 已修复大规则文件达到内部限制时无法正确显示错误的缺陷。
- 已修复缺少 styleId 的样式的未处理错误。
- 已修复存在多行字符串时的不正确错误。
- 已修复重复定义错误标记的缺少工具提示。
CityEngine 2020.0 | CGAC 1.14
新函数
- 数组运算符。
- 冒号运算符。
- readStringTable、readFloatTable:用于读取 CSV 文件的函数。
- nRows、nColumns:用于访问数组维度的函数。
- floatArray、stringArray、boolArray:用于转换数组并创建空数组的函数。
- 图层属性(仅限 CityEngine):
- 支持 1D 数组。 不支持多行数组。
- 数组对象属性映射和采样:getFloatArrayObjectAttr、getStringArrayObjectAttr 和 getBoolArrayObjectAttr。
新属性
对现有功能的更改
- envelope 操作:
- 已添加用于获取每条边的基本高度和角度数组的版本。
- 已修复极少数边界情况中的不确定行为。
- array initialization 函数:已添加用于创建多行 2d 数组的注记。
- 索引运算符:
- 通过索引数组或逻辑数组访问元素。
- 已添加 2d 数组的行和列索引。
- index 函数:此函数已弃用。 改用 findFirst 函数。
- readTextFile 函数:不再支持 .csv 扩展名(请参阅新的 readTable 函数)- 如果要以文本的形式读取 .csv 文件,需要将其重命名为 .txt。
- array initialization、splitString、comp 函数:返回的数组大小有限。 可在程序运行时首选项中进行配置(默认值:100000)。
- texture 操作:不存在 alpha 通道时,重置不透明度贴图。
- str、abs 函数:支持数组。
- @Enum、@Range 注记:现在可以将这些注记应用于数组属性,以指定数组元素的枚举值或范围。
- @Enum 注记:现在可通过属性动态指定枚举值。
- CGA 编译器:
- 导入:每个导入必须以 import 关键字为开头。 注记必须置于 import 语句之前。 之前,只能在一个 import 关键字之后设置多个导入和注记。
- 条件和随机函数以及文字可以直接在行内用作参数。 以前,这对于某些操作和运算符不可行。
- 规则标识符不得包含连续的点 ("Example -->")。
不再允许点后有数字 ("Example.1 -->")。
- "1.==1" 等表达式使用短浮点记法 "1.",运算符之前没有空格(在此示例中为 "=="),将解释为新的元素数组运算符(在此示例中为 ".==")。
- t、s、tileUV、setupProjection 操作:无法再调用用户定义的规则过载(类型不同),但是会导致类型不一致。
修复缺陷
- array initialization:已修复通过串连字符串数组和空字符串文字初始化字符串数组时出现的崩溃。
- bool 函数:已从 inf/nan 检查中排除浮点-布尔转换(程序运行时首选项)。
- setupProjection 操作:已修复在世界坐标量级非常大或者偏移值非常大的情况下出现的模糊纹理和不连续纹理。
- find 函数:已修复 matchString 为空时的错误索引。
- str、print 函数:已修复打印负无穷大的符号。
- CGA 编译器:
- 已提高类型推断的性能。 已改进类型不匹配消息。
- 已修复一些递归函数定义的不正确编译错误。
- 一元加号运算符:已修复类型检查。 之前,可以将一元加号运算符应用于字符串和布尔值。
- 已修复在极少数情况下生成不必要的遮挡物的缺陷。
- 编译器现在会在大规则文件达到内部限制时发布错误。 之前,这会在生成时导致崩溃。
- 图层属性(仅限 CityEngine):
- 已修复生成包含孔和大量折点的形状时的性能问题。
其他
- CityEngine 3D 视口现在会渲染所有 PBR 材料属性和 material.opacitymap.cutoff 属性。
CityEngine 2019.1 | CGAC 1.13
新函数
- array initialization 函数(通过初始化列表创建数组)。
- 图层属性(仅限 CityEngine):getFloatObjectAttr、getStringObjectAttr、getBoolObjectAttr 函数:已添加用于对象属性映射和采样的类型函数。 getObjectAttr 函数仍受支持,但是已弃用。
对现有功能的更改
- set 操作:已添加数组属性的设置操作。
- RPK 创建不再支持使用拼写错误(小写/大写错误)的注记(仅限 CityEngine)。
- 所有内部上下文/遮挡查询:已提高涉及许多形状时的性能(仅限 CityEngine)。
- CGA 编译器:
- 数组现在可以是 const 或 attr。
- 如果无法确定递归函数定义的返回类型,将出现新的编译错误“函数调用循环”。 函数递归必须包含一个条件和至少一个停止条件。 否则,将导致无限的函数调用循环。
- 不再编译对类型错误(类型不一致)的操作的调用,除非定义了具有相同签名的规则。 之前,会发布“未定义规则”警告。
- 不再允许具有一个参数的属性(streetwidth 除外)。
- 将发布具有预期类型的更有用的类型不一致错误,而不是无此类函数错误。
- 更具选择性的未使用警告。 同样会为没有参数的未使用属性和函数显示。 如果出现错误,不会发布未使用警告。
- 对因另一个函数中类型不一致而未解析的函数的调用将作为信息而不是错误进行报告;表示这是一个原有错误。 这有助于确定错误的来源。 在 CityEngine 中,信息问题级别的可视化可在首选项中进行配置(常规 > 编辑器 > 文本编辑器 > 注记)。
- 如果注记名称拼写错误(小写/大写错误)或如果使用了已弃用注记、函数或操作,将发布警告。
修复缺陷
- CGA 函数的最大递归级别:已修复所选递归级别过高时的崩溃。 可通过属性 /cgaenv/maxFuncCallDepth 或 CityEngine 首选项(常规 > 程序运行时 > 最大函数调用深度)设置最大递归级别。
- roofShed(byHeight) 操作:已修复某些情况下的错误高度。
- print 操作、print 函数:已修复打印空字符串(仅限 )时打印 2 个换行符。
- CGA 编译器:
- 图层属性编译器:
- getObjectAttr 函数(已弃用):已修复在条件中的使用。 之前,在某些情况下,会报告不正确的错误(具体取决于涉及的表达式的顺序)。
- getObjectAttr 函数(已弃用):同名(以文字的形式给出时)对象属性的自动类型匹配。 这仅适用于同一函数或属性定义。
- 已修复编辑文本后不更新编辑器中的问题标记的缺陷。
CityEngine 2019.0 | CGAC 1.12
新操作
新函数
- readTextFile 函数
- geometry.boundaryLength 函数
- splitString 函数
- comp 函数
- 数组使用函数:索引、项目和大小
- 边属性函数:edgeAttr.getFloat、edgeAttr.getString、edgeAttr.getBool
新属性
- 材料属性:
- material.emissive.{r|g|b}、material.metallic、material.roughness
- material.{emissive|occlusion|roughness|metallic}map 和对应的 {su|sv|tu|tv|rw}
- material.opacitymap.mode
对现有功能的更改
- alignScopeToAxes 操作:已添加用于在对象坐标系中对齐的新轴选择器。
- print 操作和 print 函数:支持数组。
- comp 操作:面边的新组件选择器 fe。
- setback 操作:支持每条边的各个距离。
修复缺陷
- convexify 操作:已修复具有孔的形状上的错误结果。
- softenNormals、setNormals(auto) 操作:计算孔边界上的折点的正确软法线。 仅当将阈值角设置为小于 180 度的值时,才会出现此漏洞。
- comp(v)、comp(e) 操作:计算孔边界上折点/边组件的范围 z 轴的正确方向。
- comp(v)、comp(e)、alignScopeToGeometry 操作:已修复应用于边或折点时的结果范围。
- roofHip、roofGable 操作:已纠正初始形状包含共线折点时屋顶面的生成顺序和第一条边。
- roofGable 操作:
- 已修复初始形状包含几乎相同的折点时后续操作或函数崩溃。
- 已纠正初始形状包含多个面时修剪平面生成。
- cleanupGeometry 操作:已修复折点合并崩溃。 当孔折点位于属于另一个孔和包围面的折点的容差范围内时,会发生这种情况。
- 内部几何清理(仅限 CityEngine):保留孔的第一条边。
- 已修复朝反向法线方向应用法线贴图和凹凸贴图时的缺陷(仅限 CityEngine 渲染)。
- setback 操作:已改进凹陷折点处的结果。
- CGA 编译器:
- comp、setback 操作:使用浮点函数名称 "idx" 传递的索引选择器始终评估为 0。
- innerRectangle、shapeLUO 操作:不接受浮点型函数名称作为选择器。
- comp、split、setback、innerRectangle、scatter、shapeLUO 操作:已修复使用错误追踪规则的缺陷(规则名称相同的情况,数值后缀 + 运气不佳除外)。
CityEngine 2018.1 | CGAC 1.11
对现有功能的更改
- setback 操作:退缩面的第一条边位于初始面的轮廓上。 对于其余面,第一条边最靠近初始形状的第一条边。 这一修复可能更改现有模型。
- alignScopeToGeometry 操作:已修复使用 world.lowest 时的数值不稳定性。 如果有多个面或边作为最低组件候选项,则将选择索引最低的面或边。 这一修复可能更改现有模型。
- innerRectangle 操作:已修复数值不稳定性。 如果有多个矩形作为最大矩形候选项,则将选择与形状质心的距离最低的矩形。 这一修复可能更改现有模型。
修复缺陷
- setback 操作:
- 避免创建狭长面,尤其是在具有短边的圆角处。
- 已修复无效 uv 集的可能崩溃。
CityEngine 2018.0 | CGAC 1.10
已更改基本行为
- 随机评估 attr/const 函数:
随机数生成器的初始化会受到 attr/const 函数的相互依赖影响。 这可能导致不必要的行为,即使用概率函数 (rand, p)、随机条件或相关实用工具函数初始化的属性 A
可以更改其随机值
- 如果添加了另一个属性 B 来调用 A
- 如果已将对另一个属性 B 的调用添加到 A,同时会随机评估 B。
此修复可能会更改现有模型,即使初始形状的 seedian 相同也是如此。
新操作
新函数
对现有功能的更改
修复缺陷
- CGA 编译器
- 编译器现在会在所有样式中检查是否存在同名的属性和函数的匹配返回类型。 之前,不一致的返回类型会导致在文件预览中切换样式或显示所有样式时崩溃。
- 现在还会检查所有样式中规则和函数的匹配参数类型是否有未使用的定义。
- 编译器现在会检查所有样式的定义类型(属性、常量、函数或规则)是否一致。
- 已修复不兼容版本警告中错误的行引用。 对于导入其他规则文件的规则,会发生上述情况。
- comp 操作
- 为每个组 (g) 和材料 (m) 组件重新评估随机数生成器。 在此修复之前,rand 会为所有组件返回相同的值。
- 组组件 (g):已修复带孔的网格每个面的错误材料。
- trim、i 操作:修剪平面现在会考虑资产中的孔。
- trim、i、split 操作:修剪平面和分割现在考虑每个面的材料。
- split 操作:已修复当分割位置处存在面积接近零的面时缺少填充面。
CityEngine 2017.1 | CGAC 1.9
新注记
- @Enum 注记。
新函数
对现有功能的更改
修复缺陷
- 遮挡查询:已提高查询几何位于遮挡物形状的表面上时的精度。
- 所有内部上下文/遮挡查询:已修复查询不考虑遮挡物/上下文形状并因此返回错误值的缺陷。 对于在第一次评估通过(两次通过生成过程)中未遇到的标注(包括空标注),会发生上述情况。
- cleanupGeometry 操作:
- 合并折点:防止创建小孔和反转面。
- 移除重复面:正确考虑孔。
- 移除共面的面之间的共享边:已提高孔的总体稳定性和结果。
- 移除面积较小的退化面:为了降低影响,在最后应用。
- CGA 编译器:已修复名称和值在注记 @Annotation(name=value) 中不正确匹配的问题。
- scatter 操作:可通过相对坐标指定高斯标准差。
- tileUV 操作:已修复在面积接近零的几何中创建无效 UV。
CityEngine 2017.0 | CGAC 1.8
新操作
- label 操作。
新函数
- 新的基本函数:min、max 和 clamp。
- 用于颜色转换的新函数:colorHexToB、colorHexToG、colorHexToH、colorHexToO、colorHexToR、colorHexToS、colorHexToV、colorHSVToHex colorHSVOToHex、colorRGBToHex 和 colorRGBOToHex。
- 标注形状进行上下文查询的新函数:minimumDistance、contextCompare 和 contextCount。
对现有功能的更改:
- primitiveQuad、primitiveDisk、primitiveCube 操作:已移除折点法线,因为不会影响着色。 仍可以使用 setNormals 或 softenNormals 操作创建折点法线。
- CGA 编译器:已缩短命名冲突导致错误时的编译时间,尤其当存在具有许多参数的规则时。
- comp 操作:适用于组的新组件选择器 g,适用于材料的 m,以及适用于孔的 h。
- inside、overlaps 和 touches 函数:
- 用于对标注遮挡物形状执行遮挡查询的新可选标注标识符。
- 仅稍微超出遮挡物形状的几何也别视为在内部(因浮点限制,已调整阈值行为)。
- 表面也会在法线指向同一方向时接触。
- 支持由折点或边组成的形状(源自 comp 或 scatter 操作):
- geometry.isClosedSurface、geometry.isPlanar、geometry.isRectangular 函数:返回 false。
- geometry.nEdges 函数:对边进行计数。
- geometry.isOriented 函数:考虑折点/边法线。
修复缺陷
- setback 操作:在某些情况下,会在凹陷形状上创建自相交面。 这可能导致后续操作失败。
- comp 操作:
- 合并的 (=) 面组件分割现在考虑每个面的材料。
- 已修复具有相对相邻面的边的错误边组件分割。
- 已修复合并的 (=) 折点和边组件分割的错误结果。
- 已修复(已弃用)noStreetSide 组件分割选择器处理。
- geometry.area 和 geometry.isOriented 函数:已纠正负范围大小的范围选择器(例如,如果 scope.sz < 0,前侧将变为后侧)。
- alignScopeToGeometry 操作:zUp 模式:已修复仅由折点组成的网格的错误枢轴(例如,通过折点分割或分散)。
- CGA 编译器:
- inside、overlaps 和 touches 函数
- 已修复封闭形状不接触并与内部的另一个几何重叠的缺陷。
- 内部遮挡:已修复将作为当前形状的子项的组件分割形状视为遮挡的缺陷。
- 相互遮挡:已修复不考虑在常量或函数中定义的遮挡查询的缺陷。
- 已修复在极少数情况下因三角形面积接近零而错误地返回 true 的缺陷。
- 相互遮挡:已修复在内部幽灵树生成器件通过 component split 或 offset 操作创建遮挡物形状的缺陷,同时会为相互遮挡错误地考虑。
- 已修复导出中的正确行为。
- set 操作:已修复缺陷:尝试设置 initialShape.pz 属性会导致不一致行为(与 initialShape.pa 不匹配)。
- alignScopeToAxes、rotateScope、mirrorScope、setPivot、cleanupGeometry、reduceGeometry、convexify、split 操作:正确考虑源自 split 操作的未调整范围。
- offset 操作:现在保留资产材料和组。
- scatter 操作:点数为负或为零时将发布警告。
- inside、overlaps、touches、geometry.angle 函数,alignScopeToGeometry、alignScopeToAxes 操作:已针对由折点或边组成的形状修复(源自 comp 或 scatter 操作)。
- assetApproxRatio、assetApproxSize、assetBestRatio、assetBestSize、assetFitSize、fileRandom、imageApproxRatio、imageBestRatio、fileSearch 函数:已修复在 RPK 中使用时导致错误的资产查找的缺陷。
CityEngine 2016.1 | CGAC 1.7
对现有功能的更改
- innerRectangle 操作:
- 已提高整体性能。
- 现在还会为折点计数较高的大凹面查找正确的最大矩形。
- 边模式不会考虑可以忽略的短边。
- 更准确地考虑附近的共线边。
- 会阻止非常细的剩余地产面。
修复缺陷
- trim、i 操作:已修复修剪平面在凹面上的各种问题。
- 已修复部分网格无法修剪掉的问题。
- 已修复修剪的网格包含不必要的边的问题。
- 已修复屋顶面上的修剪网格包含孔的问题。
- cleanupGeometry、reduceGeometry 操作:已修复范围包含旋转部分时的错误结果。
- cleanupGeometry 操作:已修复会导致不一致网格的缺陷,该缺陷可能导致某些后续操作(例如 setNormals(soft) 或 softenNormals)崩溃。
- offset 操作:已修复具有孔的面上未定义的负向偏移行为。
- envelope 操作:已修复折点共线时可能导致崩溃的缺陷。
- getGeoCoord 函数:X、Y 选择器:已修复非公制坐标系转米的转换。
- innerRectangle 操作:
- 已提高剩余地产计算的稳定性。
- 已修复矩形边与面的共线折点重合时失败的剩余地产计算。
- 已修复极小的面上错误和错误的最大矩形。
- 已提高在边模式下矩形对齐的精度。
- roofHip、roofGable 操作:
- 已解决会在精确的矩形地块以及具有共线折点的精确矩形地块上导致错误结果的问题。
- 已解决具有悬臂和小山形墙的屋顶的问题,其中缺少修剪平面并且面组件的范围错误。
- comp 操作:已修复相邻面不共面时的错误边组件分割。
- CGA 编译器:已修复与使用导入的属性传播/覆盖有关的多个问题:
- 现在可以正常导入用于导入另一个规则并传播属性的规则。
- 已修复覆盖未在一级导入中定义的二级(更高级别)导入中的属性的问题。
- 已修复无法指定未在一级导入中定义的二级(更高级别)导入的新属性值的问题。
- 已修复用于覆盖二级(更高级别)导入中的另一个属性的属性未传播到一级导入的问题。
- 已修复 Linux 和 OSX 上的 CGB 解码器初始化问题。
CityEngine 2016.0 | CGAC 1.6
新操作
- softenNormals 操作。
- 具有对齐和剩余地产选项的 innerRectangle 操作。 它将替换已弃用的 innerRect 操作。
- primitiveQuad、primitiveDisk、primitiveCube、primitiveSphere、primitiveCylinder 和 primitiveCone 操作 primitiveCube 操作将替换已弃用的 "builtin:cube" 和 "builtin:cube:notex"。
- splitArea 操作。
对现有功能的更改
- setNormals 操作:
- 使用 softenNormals 功能的新模式“自动”。
- 计算一致性法线的新模式“一致”。
- innerRect 操作已弃用。 改为使用 innerRectangle 操作。
- cleanupGeometry 操作:模式全部/面:移除所有重复面/反面,有一个除外(与方向无关)。
- i 操作:
- 用于指定几何向上轴的新参数 upAxisOfGeometry。
- 用于指定几何在范围内的对齐和定位的新参数 insertMode。 选项 keepSizeAndPosition 相当于使用 s(0,0,0)。
- "builtin:cube" 和 "builtin:cube:notex" 已弃用。 改为使用 primitiveCube。
- extrude操作:
- 参数 axisWorld 已弃用并更改为参数 extrusionType。
- 新类型 face.normal、vertex.normal、world.up 和 world.up.flatTop。
- 轴 x, y, z, world.x, world.y 和 world.z 已弃用。 使用类型 world.up 而不是轴 world.y。
- roofGable、roofHip、roofPyramid 和 roofShed 操作:
- 可使用给定高度生成屋顶。
- 用于在屋顶生成 byAngle 或 byHeight 之间进行切换的新参数 valueType。
- roofShed 操作:对于位于具有一个面的形状上的棚屋屋顶,不会生成水平修剪平面、四坡、天沟和屋脊边。 之前,对于具有多个面的形状也是如此。
修复缺陷
- split、trim 和 i:已修复在折点或边位于对应的分割/修剪平面时导致错误结果的缺陷。
- geometry.isInstanced 函数:已针对内置图元("builtin:cube" 和 "builtin:cube:notex")修复。 同时支持 primitiveQuad、primitiveDisk、primitiveCube、primitiveSphere、primitiveCylinder 和 primitiveCone。
- roofHip、roofGable 操作:已修复在矩形形状上因出现双折点导致着色错误的缺陷。
- roofShed 操作:对于具有多个面、至少一个孔和一个非零边索引集的形状,已修复生成错误的棚屋屋顶的缺陷。
- cleanupGeometry 操作:已修复阻止面中的第一个折点合并的问题。
- geometry.area 和法线计算更加准确;浮点精度总体得到提高。
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
新函数
- getTreeKey 函数。
- isNull 函数。
对现有功能的更改
- split 操作:
- 不再允许缺失大小。 例如,不再编译 split(x) { A }。 正确的等效项为 split(x) { ~1: A }。
- 大小表达式中的函数不再需要额外的括号。
- @Hidden 注记:已更改不同导入之间的传播。 隐藏的导入会以递归的方式隐藏其所有导入。
- uid 形状属性已弃用。 改为使用 getTreeKey 函数。
修复缺陷
- 已修复 cgb 解码器中无法读取包含大量属性/规则/分割的已编译 cga 文件的缺陷。
- Vertexmerger:已修复阻止孔折点与其他面的折点合并的缺陷。
- float() 函数:使字符串-浮点转换与区域设置无关。
- split 操作:已增强内部网格清理以减少内存加载,并修复了导致不必要的折点合并的缺陷。
- roofHip 操作:避免重复折点。
- offset、roofGable、roofHip 操作:提高了具有共线折点的面上的偏移/屋顶构造稳定性,并修复了内存激增缺陷。
- cleanupGeometry 操作:已修复在对材料按面的几何进行边清理时导致非法材料分配的缺陷(“填充孔渲染缺陷”)。
- 已修复标量属性和地图属性同名时的未定义行为。
- CGA 编译器:具有大量参数的参数规则和函数不会再使编译器/CityEngine 挂起。
CityEngine 2014.1 | CGAC 1.4
修复缺陷
CityEngine 2014.1 | CGAC 1.3
新操作
- deleteHoles
新函数
- geometry.nHoles 函数。
- geometry.isClosedSurface 函数。
新 CGA 实用工具库函数
- listTerminate 函数
新功能
- alignScopeToGeometry、convexify、envelope、cleanupGeometry、innerRect、scatter、setback、shape{L|U|O} 和 reduceGeometry 操作以及 geometry.isClosedSurface、geometry.area(具有选择器)函数:现在面中支持孔。
- convexify、innerRect、offset、shape{L|U|O} 操作:不再删除 uv 坐标和折点法线,但会针对新内部折点进行插入。
- convexify、innerRect、offset 操作:不再平面化结果。
- color 操作:支持设置不透明度 (alpha)。
对现有功能的更改
修复缺陷
- extrude 操作:已修复进行孔处理的面。
- convexify 操作:已修复多条边长度相同时的面一致性。
- envelope 操作:已修复导致“开放体积”的边界情况。
- alignScopeToGeometry 操作:已修复点/边形状支持:范围大小设置为 1 而不是 0,枢轴方向未设置为折点/边法线,已修复在边几何上使用非法边索引时的崩溃。
- setback 和 shape{L|U|O} 操作:已修复内存泄漏。
- split 操作:已修复孔处理(在某些情况下生成的非法孔)。
- offset、roofGable、roofHip 和 roofShed 操作:提高进行孔处理的面中非法孔(吊架)处理的稳定性。
- assetInfo、assetsSortRatio 和 assetsSortSize 函数:已修复未知/无法加载的资产的行为。
- 材料形状属性:material.XXXmap 会在未找到纹理时返回 "builtin:unknowntexture.png"。
- 已修复(已弃用)noStreetSide 组件分割选择器处理。
- 已修复与边/点几何法线(仅限 CityEngine 渲染)有关的缺陷。
- 已修复在空白几何中进行边处理时的缺陷。
- i 操作:已修复处理未知资产时导致崩溃的竞争条件。
- 已修复导致崩溃的内部非法指针访问。
- print、print、set 操作:已修复 nan 处理(避免检查)并移除了过多的换行符(布尔)。
- str 函数:已修复 inf/nan 处理。
- listRange 函数:已修复读取(非法)非 ´;´ 终止字符串列表处理时的缺陷。
- 已提高内部弧度-度转换精度。
- AssetErrors:报告已插入资产几何转换中的警告。
- 已修复修剪/分割中的折点合并问题(未合并相同折点)。
- CGA 编译器:
CityEngine 2014.0 | CGAC 1.2
新功能
对现有功能的更改
- 导入:已简化属性值传播逻辑。
修复缺陷
- 导入:在某些情况下,解析跨工程导入中的资产会失败(从同一目录中导入 cga 文件的导入)。 已在 cga 编译器 (CGAC) 中修复此问题,因此应更新现有 rpk。
- assetApproxRatio、assetApproxSize、assetBestRatio、assetBestSize、assetFitSize、fileRandom、imageApproxRatio、imageBestRatio 函数:已修复从其他工程导入时导致错误的资产查找的缺陷。
- 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 实用工具库函数
- listCount 函数
- listRemove 函数
- listRemoveAll 函数
- listRetainAll 函数
新功能
- envelope 操作:添加了 direction 参数,允许世界向上轴对齐包络。
- cleanupGeometry、comp、extrude、split 操作以及 geometry.nFaces、geometry.area、geometry.volume 函数:现在面中支持孔。 但是,其他操作可能删除孔(并发布 CGA 警告)。
对现有功能的更改
- report 操作:适用于所有许可。
- report 操作:更高效的新实施 - 生成的几何可能与先前版本不同。
- fileExists 函数:现在针对所有 builtin 返回 true。
- material.color.rgb 属性:返回十六进制字符串(请参阅 color 操作),而不是介于 [0,1] 之间的三浮点字符串。
- listClean 实用工具函数:现在会过滤空白条目。
- listIndex 实用工具函数:支持通配符。
- envelope 操作:已弃用无方向参数的签名。
修复缺陷
- alignScopeToGeometry 操作:提高有关错误几何的稳定性(修复崩溃)并优化面材料支持。
- assetApproxRatio、assetApproxSize、assetBestRatio、assetBestSize、assetFitSize、fileRandom、imageApproxRatio、imageBestRatio 函数:已修复从其他工程导入时导致错误的资产查找的缺陷。
- assetApproxRatio 函数:已修复 axisSelectorRatio 参数(使用 yz 时崩溃)。
- assetsSortSize 函数:已修复 axisSelectorSize 参数(忽略 yz)。
- envelope 操作:
- 已修复 baseHeights 之一等于 maxHeight 时缺少顶面。
- 支持非平面的面。
- 已修复多个数值问题(崩溃、错误几何)。
- i 操作和初始形状处理:添加了零角度移除并优化面材料支持。
- print 函数:在每个调用后添加换行符(与在打印操作中一样)。
- comp、envelope、envelope、geometry.area 和 geometry.isOriented 操作/函数:street.xxx 选择器:不会在没有为索引 0 但为其他索引定义了 streetWith 属性时回退到 object.xxx 选择器。
- 折点合并器(导出 + 导入到诸多操作):提高有关错误几何的稳定性(修复崩溃)。
- 三角仪(导出、渲染和导入到诸多操作):正确处理几乎相同的折点(导致不一致几何和崩溃)。
- 已修复与导入有关的一系列编辑器缺陷,最重要的是阻止设置导入的通用属性的缺陷。
CityEngine 2012.1
新操作
- cleanupGeometry 操作
- envelope 操作
- reduceGeometry 操作
- setNormals 操作
新函数
新属性
- uid 属性
新 CGA 实用工具库函数
- colorRamp 函数
新功能
- comp、setback、geometry.area 和 geometry.isOriented 操作:添加了 street.front、street.back、street.left, street.right, street.side 选择器:如果不存在 streetWidth 属性,这些选择器将回退到相应的 object.xxx 选择器。
- setback、geometry.area 和 geometry.area 操作:添加了 world.side, object.side 选择器。
- 通过 comp(e) 或 comp(v) 生成的边和折点现在在视窗中进行渲染(可通过 Grammarcore 首选项控制大小);只有一些格式支出导出边/折点,请参阅渲染和导出要素表。
对现有功能的更改
- report 操作:只有具有 Advanced 许可才能使用该操作。
- reverseNormals 操作:支持折点法线。
- setback、shapeLUO 操作:新实施。
- scatter 操作:不再插入几何(之前插入 builtin:cube),但是折点在 3D 视窗中可见。
- comp、setback、geometry.area 和 geometry.isOriented 操作:streedSide, noStreetSide 选择器已弃用。
- 资产搜索:如果规则文件位于实用工具库中,会将当前工程添加到搜索路径。
修复缺陷
- 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.specularmap、 material.opacitymap、material.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 形)。
- setback、shapeLUO 操作已得到改进,修复了诸多问题。 值得注意的是,shapeO 现在更加稳定。
- 已修复带参数的用户定义函数中的致命未检测到递归错误。
- uv split 操作:
- 已修复无 uv 集的几何崩溃。
- 已修复精度缺陷。
- innerRect 操作:已修复范围包含旋转时的形状放置。
- 现在可正确处理自相交面(scatter、uv split 操作和渲染)。
- roofHip 操作:已修复特定情况下的崩溃(带悬垂,在共线折点上)。
- 已修复 comp.sel(仅包含最后一个单词,例如 "front" 而不是 "object.front")。
- 已修复 convexify 缺陷:检查生成的面中是否存在为零的面积,移除退化面 - 在某些情况下会导致后续操作崩溃。
- 旋转操作:已修复范围情况缺陷(绕枢轴旋转,而不是范围)。
- convert 函数:已修复 convert(x|y|z)、scope、pivot、orient、x, y, z 缺陷(区分大小)。
- 材料按面资产:已改进支持,现在删除零面积面时不会删除材料。
- 分割/修剪修复:恰好沿边切割情况,点数 >1(O 形等)。
- 已修复内部遮挡几何缓存缺陷(导致错误结果)。
- Collada 读取器:
- 现在将忽略线和点(在较早版本中,它们被视为面)
- 现已优化由纹理和非纹理面组成的网格的处理(非纹理面的所有折点会收到 (0,0) uv)。
- 图像读取器现在可正确处理 16 位灰度纹理。
- geometry.area 速度更快且更加稳定。
CityEngine 2010.3
新操作
新功能
- comp 操作:新增 world.xxx、object.xxx 和 streetSide 选择器。
- geometry.area() 函数现在支持组件分割样式选择器,以仅计算一部分几何面的面积。
对现有功能的更改
修复缺陷
- 已修复修剪负大小范围缺陷。
- 颜色不会接触 alpha(之前将其设置为 1.0)。
- comp 操作:已纠正负范围大小的范围选择器(例如,如果 scope.sz < 0,前侧将变为后侧)。
- convexify 和 innerRect 操作:已修复与共线折点有关的数值问题:在操作之前将其移除。
- mirrorScope 操作:已修复导致错误平移的缺陷。
- roofShed 操作:已修复多面形状上棚屋屋顶的折点索引。
- offset 操作:已修复未生成内部/边界几何(由于偏移过大)并使用相应的选择器时的缺陷。
- 已修复编译器缺陷:之前会错误解析以 &const& 或 &attr& (例如,construction)开头的函数。
CityEngine 2010.2
新操作
- deleteUV 操作
- mirror 操作
- mirrorScope 操作
- normalizeUV 操作
- rotateScope 操作
- trim 操作
新函数
新功能
- split 操作现在支持在 uv(纹理坐标)域中进行分割,包括支持“无扭曲”域(unitSpace 表面参数化)。
- offset 操作:新重载允许仅保留 inside 或 border 面。
- setupProjection 操作:新重载允许向设置范围添加平移偏移。
对现有功能的更改
- extrude 和 taper 操作现在保留纹理坐标。
- extrude、taper、roofGable、roofHip、roofPyramid 和 roofShed 操作不再设置枢轴,而是尽可能保留范围的 x 轴方向(即,范围和枢轴方向现在不同)。
- alignScopeToGeometry 操作:现在支持负索引(模,即 -1 是最后一个面/边;之前为未指定的行为)。
- comp(e) 操作:边现在具有定义索引,即边 0 一定是第一个面的第一条边。
- roofGable、roofHip 和 roofShed 操作现在可以保证在任何情况下将第一个屋顶面置于输入面的第一条边上,并且如果当前几何仅由一个面组成,则将所有屋顶面置于对应边上。
- setupProjection 操作:已弃用 setupProjection(uvSet, axesSelector, width, height, uwFactor 重载)。
- 已更改递归检测:控制形状树宽度而不是活动结点
修复缺陷
- 如果参数不是浮点,则不会编译递归函数。
- replace 函数:之前仅替换第一个事件,现在会替换所有事件。
- split 和 trim 操作:
- 现在处理凹面。
- 现在处理大小为负的范围。
- 已修复内部遮挡缺陷(在某些情况下,会针对错误的组件预分割体积进行检查)。
- geometry.isPlanar 函数:如果是共线边,则会报告非平面性。
- innerRect、convexify、roofHip、roofPyramid 操作和 roofShed 操作:已修复数值问题。
- alignScopeToGeometry 操作:world.lowest 选择器:如果所有折点的 y 坐标恰好位于 0.0 上,则结果是随机的。
- comp 操作:如果 "=" 运算符与已旋转范围搭配使用,生成的形状会具有错误的范围和枢轴位置。
- center 操作:如果范围已旋转,则无法正常执行。
CityEngine 2010.1
SR1 新函数
- sel 函数
SR1 对现有功能的更改
- 已修复签名匹配缺陷(例如,alignScopeToGeometry 的假语法错误)
- 已修复导入的规则文件中的错误资产搜索路径
- 已修复 cgalib replace() 问题
- 已修复 translate(rel, object, ...) 操作缺陷
- 已修复导致在拉伸和 roofXXX 操作中出现未配准折点的缺陷(连接到非常薄的要素)。
- 已修复多面拉伸中的缺陷:在特殊情况下,会删除某些面
新操作
- convexify 操作
- rotateUV 操作
- reverseNormals 操作
- texture 操作
新函数
- pow 函数
- exp 函数
- log10 函数
- ln 函数
- len 函数
- count 函数
- find 函数
- substring 函数
- isnan 函数
- isinf 函数
- assetInfo 函数
- assetsSortRatio 函数
- assetsSortSize 函数
- fileExists 函数
- fileSearch 函数
- find 函数
- float 函数
- str 函数
- bool 函数
- imageInfo 函数
- imagesSortRatio 函数
新功能
- CGA 实用工具函数库,包含用于处理字符串、字符串列表以及文件、资产和图像的实用工具函数。
- 支持读取 Collada 资产。
- 对材料按面的资产的支持有限
- split 操作:新增可选 noAdjust 选择器,以免将范围设置为几何边界框。
对现有功能的更改
- 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.lowest、largest、any。(b) 新边选择器 world.lowest、largest 和新语法(面和边选择器和索引的组合)。 (c) 已弃用 alignScopeToGeometry(upAxis, faceIndex) 和 alignScopeToGeometry(upAxis, auto)。
- innerRect 操作:(a) 现在作用于几何的每个面(而不仅仅是第一个面)。 (b) 处理凹面(首先进行凸化,然后在最大矩形上计算内接矩形)。 (c) 仅保留与 x 轴对齐的矩形面。
- 无法再在 s, r, t 运算中使用 ~ 运算符 - 它不起任何作用。
- 现在可以使用 setupProjection 运算符 ~ 和 '。
- setPivot:不再支持 "yUp" 和 "zUp" 选择器(使用 xyz 和 yzx)。
修复缺陷
- 遮挡:(a) 已修复导致错误结果的缺陷 (b) 已修复内部遮挡内存泄漏 (c) 已修复可能导致导出模型不一致的缺陷。
- geometry.isConcave 函数:已修复导致错误结果的数值问题。
- 已更改 const 表达式计算 - 始终进行计算 → 数字一致,以及如果被检查器值覆盖
- 组件分割:已修复资产包含多个网格/材料时导致材料丢失的缺陷。
- setupProjection 操作:已修复导致错误结果的一些数值问题。
- 对象资产读取器现在会处理负索引(最大文件数)
- 颜色不会接触 alpha(之前将其设置为 1.0)。
- 优化导入规则文件的名称冲突处理。
- 类型处理更加严格,之前仅在生成期间检测到的一些错误现在会在编译时检测到。
- split 操作:在某些情况下(拉伸几何),会重复纹理坐标,而不是进行分割。
CityEngine 2009.3
新功能
- roofGable 操作
- roofHip 操作
- roofPyramid 操作
- roofShed 操作
- translateUV 操作(之前为 offsetUV)
- innerRect 操作
- geometry.nEdges 函数
- setupProjection 操作
- projectUV 操作
- 组件分割:(1) 新增 ''='' 运算符。 此运算符会将所有选定组件合并成一个新形状。 (2) 新选择器:border、inside 和 eave、hip、valley、ridge。(3) 新形状属性 comp.index、comp.total。
对现有功能的更改
- 支持修剪平面沿凹面。 修剪平面不再无限大,可通过 Grammarcore 首选项控制其范围。
- 屋顶操作已弃用。
- offsetUV 操作已弃用(现在为 translateUV)。
- setupUV、bakeUV 已弃用(改为使用 setupProjection 和 projectUV 操作)。
- 拉伸、projectUV、roofHip 和 roofShed 现在会处理多面初始形状。
- inside、overlaps、touches 函数:(1) 新增 inter、intra、all 选择器。 (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 及更早版本
不支持较早版本。