getMaterial 函数

语法

  • string[] getMaterial(source, mode)

参数

  1. source - selector
    指定要读取的材料。
    • used - 当前所使用的材料,是形状材料和形状几何材料的组合。 在 CGA 中明确设置的形状材料属性将覆盖几何材料。
    • shape - 当前形状的材料,与几何无关。
    • geometry - 当前形状的几何材料。 如果几何具有多种材料,则将采用第一个。
  2. mode - 选择器
    指定要考虑的属性。
    • changed - 仅包括实际设置的材料属性,即保留默认值的属性将被跳过。
    • all - 所有材料属性。

返回

所选材料作为 2D 字符串数组。 每行包含两列:属性名称及其值。

描述

getMaterial 函数会将当前材料作为字符串数组返回。 这样,即可在单个函数中轻松捕获所有材料属性。 此结果可用于通过 setMaterial 操作设置材料属性。

注:

请注意,“当前材料”实际上是当前形状材料和当前形状的几何材料的组合。 将材料数组打印到控制台可以很好地检查这些材料。

相关内容

示例

设置各个属性后的材料

CGA 代码

RefExample1-->
   color(0.5, 0.6, 0.7)
   print(getMaterial(used, changed))

结果

(3x2)
   color.b   0.7
   color.g   0.6
   color.r   0.5

插入资产后的材料

CGA 代码

RefExample2-->
   i("/ESRI.lib/assets/Webstyles/Vegetation/Realistic/AcerPlatanoides.glb")
   print(getMaterial(used, changed))

结果

(15x2)
            metallic                                                                          0
             opacity                                                                          1
   opacitymap.cutoff                                                         0.1000000014901161
           roughness                                                          0.800000011920929
             color.b                                                                          1
             color.g                                                                          1
             color.r                                                                          1
          emissive.b                                                                          0
          emissive.g                                                                          0
          emissive.r                                                                          0
                name                                                                           
     opacitymap.mode                                                                       mask
            colormap   /ESRI.lib/assets/Webstyles/Vegetation/Realistic/AcerPlatanoides.glb/img0
          opacitymap   /ESRI.lib/assets/Webstyles/Vegetation/Realistic/AcerPlatanoides.glb/img0
              shader                                                        CityEnginePBRShader

在原始几何上应用几何资产的材料

已插入 Fire_Hydrant 资产(左侧)。 此几何已设置多个材料属性。 接下来,将创建一个圆柱,使用 CGA 默认材料(中间)。 最后,Fire_Hydrant 材料将应用于圆柱(右侧)。

RefExample3-->
   i("/ESRI.lib/assets/Webstyles/StreetScene/Fire_Hydrant.glb")
   X.
   t('-1.5, 0, 0)
   CreateCylAndSetMaterial (getMaterial(geometry, changed))
    
CreateCylAndSetMaterial(m)-->
   primitiveCylinder(16)
    X.
    t('-1.5, 0, 0)
    setMaterial(m)
    X.
在原始几何上应用几何资产的材料

形状材料与几何材料

已插入 Fire_Hydrant 资产(左侧)。 此几何已设置多个材料属性。 随后设置了一些形状材料属性以覆盖几何材料,生成一个蓝色的无纹理模型。 接下来,对形状材料的更改将重置,这将恢复资产的原始材料设置。 最后,在常量函数中捕获的完整的默认 CGA 材料将明确设置,使得所有形状材料属性设置完成,因此将覆盖几何材料。

const defaultMaterial = getMaterial(shape, all)

RefExample4-->
   i("/ESRI.lib/assets/Webstyles/StreetScene/Fire_Hydrant.glb")
   X.
   t('-1.5, 0, 0)
   color(0.0, 0.5, 1)
   set(material.colormap, "")
   X.
   t('-1.5, 0, 0)
   resetMaterial()
   X.
   t('-1.5, 0, 0)
   setMaterial(defaultMaterial)
   X.
形状材料与几何材料