我想知道如何创建文件名由 1 个或多个变量控制的纹理文件的路径?

如下图

 

解决方法:

代码片段中有两个错误:

  1. 属性是全局的,需要在规则之外声明,通常它们放在文件的顶部。
  2. 如果要将字符串与变量混合,则需要在字符串和变量之间加号。以下 cga 参考页面中有一个示例:https://doc.arcgis.com/en/cityengine/latest/cga/cga-asset-texture-search.htm

更改此设置后,不会有任何错误:

 

attr HH = rint(scope.sy/5)
attr WW = rint(scope.sx/5)

Floor_facade -->
	setupProjection(0, scope.xy, scope.sx, scope.sy)
	texture("/ESRI.lib/assets/Facades/International/Upperfloors/u_f0" + HH + "_t0" + WW + "*.jpg")
	projectUV(0)

 

但是,还有更多事项需要考虑:

  • 属性仅在生成开始时评估一次。因此,scope.sy 和 scope.sx 将始终为您分配规则的初始形状返回相同的值。如果要使用形状树中当前形状的范围进行计算,则需要
    • 直接在字符串之间计算,而不是 HH/WW 或
    • 将计算定义为函数
    • 作为局部变量进行计算
  • 当前编写的 texture() 操作通常找不到纹理。您需要:
    • 将它们复制到单独的项目中并重命名它们或
    • 调整资产搜索字符串/计算