材料形状属性

语法

string material.name

材料的名称。

string material.shader

着色器名称。

默认值为“CityEngineShader”。 将其设置为“CityEnginePBRShader”时,意味着应使用基于物理的渲染属性,请参阅 PBR 材料属性

float material.color.{r|g|b}

漫反射颜色(非线性 sRGB)。 单独访问每个颜色组件。 默认值为白色。 请参阅 material.color 属性

string material.color.rgb

漫反射颜色。 以十六进制格式字符串访问完整颜色,例如 RED = "#ff0000"。 默认为 "#ffffff"。 请参阅 material.color 属性

float material.ambient.{r|g|b}

环境光颜色(非线性 sRGB)。 单独访问每个颜色组件。 默认值为黑色。

float material.specular.{r|g|b}

镜面颜色(非线性 sRGB)。 单独访问每个颜色组件。 默认值为黑色。

float material.emissive.{r|g|b}

自发光颜色(非线性 sRGB)。 单独访问每个颜色组件。 默认值为黑色。

float material.opacity

不透明度因子。 1 表示完全不透明,0 表示完全透明。 默认值为 1。

float material.reflectivity

反射率因子。 0 表示无反射,1 表示完全反射(针对反射贴图,在全景设置中进行设置)。 请注意,反射率取决于镜面颜色:默认黑色意味着无反射。

float material.shininess

Phong 镜面反射指数,范围介于 [0, 128] 之间。 默认值为 1。

float material.bumpValue

控制凹凸比例因子(如果设置了 material.bumpmap)。 默认值为 1。

float material.metallic

控制金属因子(如果设置了 material.metallicmap)。 0 表示介电材料,1 表示金属材料。 默认值为 0。

float material.roughness

控制粗糙度因子(如果设置了 material.roughnessmap)。 0 表示完全平滑的材料,1 表示完全粗糙的材料。 默认值为 1。

bool material.doubleSided

控制是否应该从面的两侧看到材料。 如果设置为 false,则应该仅可从法线指向的一侧看到材料。 默认值为 true。

string material.colormap

纹理通道的纹理文件路径。 请参阅 material.map 属性。

string material.bumpmap

string material.dirtmap

string material.specularmap

string material.opacitymap

string material.normalmap

string material.emissivemap

string material.occlusionmap

string material.roughnessmap

string material.metallicmap

float material.{colormap|...|metallicmap}.s{u|v}

每个通道纹理缩放因子。

float material.{colormap|...|metallicmap}.t{u|v}

每个通道纹理平移因子。

float material.{colormap|...|metallicmap}.rw

每个通道纹理旋转因子。 纹理将围绕 w 轴进行旋转(w 为 u 和 v 的叉积)。

string material.opacitymap.mode

控制如何将不透明度贴图与色彩映射表相结合。 有效值包括“blend”、“mask”和“opaque”。 默认值为“blend”。

float material.opacitymap.cutoff

material.opacitymap.mode 设置为“mask”时,material.opacitymap.cutoff 属性用于指定中断阈值。 如果 alpha 值大于或等于中断值,则将渲染为完全不透明,否则渲染为完全透明。 对于“mask”之外的其他模式,将忽略该属性。 默认值为 0.5。

材料形状属性用于控制形状几何的着色、纹理和导出。 CityEngine 支持具有固定语义的十个纹理通道。

所有这些属性均可使用 setsetMaterial 操作进行更改。 可使用 print 操作输出某一材料属性的值,例如 print(material.color.r)

PBR 材料属性

一些材料属性仅适用于基于物理的渲染 (PBR) 着色器。 这些投影为:

  • material.emissivemap
  • material.occlusionmap
  • material.roughnessmap
  • material.metallicmap
  • material.emissive.{r|g|b}
  • material.metallic
  • material.roughness

如果着色器名称设置为“CityEnginePBRShader”,则支持 PBR 材料的视口和编码器将使用这些属性以及

  • material.color.{r|g|b}
  • material.colormap
  • material.normalmap
  • material.opacity
  • material.opacitymap
  • material.opacitymap.mode
  • material.opacitymap.cutoff

属性。

下面介绍了 CGA 材料属性如何符合 GLTF 材料规范,该规范以基于物理的渲染 (PBR) 为依据。

CGA 材料属性GLTF 材料规范

material.color.{r|g|b}

pbrMetallicRoughness.baseColorFactor,RGB 组件

material.opacity

pbrMetallicRoughness.baseColorFactor,A 组件

material.colormap

pbrMetallicRoughness.baseColorTexture,RGB 通道

material.opacitymap

pbrMetallicRoughness.baseColorTexture,A 通道

material.metallic

pbrMetallicRoughness.metallicFactor

material.roughness

pbrMetallicRoughness.roughnessFactor

material.metallicmap,B 通道

pbrMetallicRoughness.metallicRoughnessTexture,B 通道

material.roughnessmap,G 通道

pbrMetallicRoughness.metallicRoughnessTexture,G 通道

material.normalmap

normalTexture

material.occlusionmap,R 通道

occlusionTexture,R 通道

material.emissivemap

emissiveTexture ,RGB 通道

material.emissive {r|g|b}

emissiveFactor ,RGB 组件

material.opacitymap.mode

alphaMode

material.opacitymap.cutoff

alphaCutoff

渲染、导入和导出

对于资产和生成的模型预览、导入以及对于导出生成的模型,需要在材料属性和相应格式之间来回映射。 下表显示了哪些格式实施哪些要素。 此表仅列出了与 CGA 有关的格式,而不是常规 CityEngine。

基本材料属性

扩展模块

name

着色器

color

色彩映射表

脏蚀贴图

显示

资产预览/3D 视口

N

Y1

Y2

Y2

Y2

导入

Khronos Collada

.dae/.kml/.kmz

Y

N

Y3

Y3

Y

Autodesk DWG

.dwg

N

N

Y

Y

N

Autodesk FBX

.fbx

Y

N

Y

Y

Y

Khronos glTF

.gltf/.glb

Y

N

Y

Y

N

buildingSMART IFC

.ifc

N

N

Y

N

N

Wavefront OBJ

.obj

Y

N

Y

Y

N

通用场景描述 (USD)

.usda/.usdc/.usdz

N

N

Y

Y

N

导出

Alembic

.abc

Y

Y

Y

Y

Y

Khronos Collada

.dae/.kml/.kmz

Y

N

Y3

Y3

Y

Autodesk DWG

.dwg

N

N

Y

Y

N

Autodesk FBX

.fbx

Y

N

Y

Y

Y

Esri FileGDB

.gdb

N

N

Y

Y

N

Khronos glTF

.gltf/.glb

Y

N

Y

Y

N

buildingSMART IFC

.ifc

N

N

Y

N

N

Wavefront OBJ

.obj

Y

N

Y

Y

N

场景图层包 (SLPK)

.slpk

N

N

Y

Y

N

Unreal Datasmith

.udatasmith

Y

Y

Y

Y

Y

通用场景描述 (USD)

.usdc/.usdz

Y

Y4

Y5

Y

N

Vue

.vob

Y

N

Y

Y

Y

  • 1 对于视窗,着色器名称用于在标准渲染和 PBR 渲染之间进行切换,请参阅上面的 PBR 材料属性部分。
  • 2视口中,色彩映射表和脏蚀贴图值将使用(漫反射)颜色进行倍增。
  • 3 COLLADA 官方标准不同时支持漫反射纯色和漫反射纹理。
  • 4 USD 导出器始终会创建 USDPreviewSurface 着色器。 如果着色器名称设置为 PBR,则还将导出 PBR 属性(请参阅上面的 PBR 材料属性)。
  • 5 如果存在贴图,则将忽略对象的标量值。

高级材料属性

不透明度

不透明贴图

opacitymap.mode

opacitymap.cutoff

法线贴图

doubleSided

显示

视窗

Y

Y

Y

Y

Y

N

导入

Collada

Y

Y

N

N

Y

Y7

DWG

Y

Y

N

N

N

N

FBX

Y

Y

N

N

Y

N

glTF

Y

Y

Y

Y

Y

Y

IFC

Y

N

N

N

N

N

OBJ

Y

Y

N

N

N

N

USD

Y

Y

Y

Y

Y

N

导出

Alembic

Y

Y

Y

N

Y

N

Collada

Y

Y

N

N

Y

N

DWG

Y

Y

N

N

N

N

FBX

Y

Y

N

N

Y

N

文件地理数据库

Y

N

N

N

N

Y

glTF

Y

Y

Y

Y

Y

Y

IFC

Y

N

N

N

N

N

OBJ

Y

Y

N

N

N

N

SLPK

Y

Y

N

N

Y

N

Unreal

Y

Y

Y

N

Y

N

USD

Y5

Y

Y

Y

Y

N

Vue

Y

Y

N

N

N

N

  • 5 如果存在贴图,则将忽略对象的标量值。
  • 7Collada 不直接支持“doubleSided”参数。 如果 Collada 文件由启用了“双侧”导出选项的“SketchUp”编写(= 将复制所有面),则导入器仅将其设置为 false。

旧版材料属性

环境光

镜面光

镜面贴图

反射光

光泽度

凹凸值

凹凸贴图

显示

视窗

Y

Y

Y

Y

Y

Y

Y

导入

Collada

Y

Y

Y

Y

Y

Y

Y

DWG

Y

Y

Y

Y

Y

Y

Y

FBX

Y

Y

Y

Y

Y

N

Y

glTF

N

N

N

N

N

N

N

IFC

N

N

N

N

N

N

N

OBJ

Y

Y

Y

N

Y

Y

Y

USD

N

N

N

N

N

N

N

导出

Alembic

Y

Y

Y

Y

Y

Y

Y

Collada

Y

Y

Y

Y

Y

Y

Y

DWG

Y

Y

Y

Y

Y

Y

Y

FBX

Y

Y

Y

Y

Y

N

Y

文件地理数据库

N

N

N

N

N

N

N

glTF

N

N

N

N

N

N

N

IFC

N

N

N

N

N

N

N

OBJ

Y

Y

Y

N

Y

Y

Y

SLPK

Y

N

N

N

N

N

N

Unreal

Y

Y

Y

Y

Y

Y

Y

USD

N

N

N

Y

Y

Y

Y

Vue

N

Y

Y

N

N

N

N

基于物理的渲染材料属性

自发光

自发光贴图

金属

金属度贴图

粗糙度

粗糙度贴图

遮挡贴图

显示

视窗

Y

Y

Y

Y

Y

Y

Y

导入

Collada

N

N

N

N

N

N

N

DWG

N

N

N

N

N

N

N

FBX

N

N

N

N

N

N

N

glTF

Y

Y

Y

Y

Y

Y

Y

IFC

N

N

N

N

N

N

N

OBJ

N

N

N

N

N

N

N

USD

Y

Y

Y

Y

Y

Y

Y

导出

Alembic

Y

Y

Y

Y

Y

Y

Y

Collada

N

N

N

N

N

N

N

DWG

N

N

N

N

N

N

N

FBX

N

N

N

N

N

N

N

文件地理数据库

N

N

N

N

N

N

N

glTF

Y

Y

Y

Y

Y

Y

Y

IFC

N

N

N

N

N

N

N

OBJ

N

N

N

N

N

N

N

SLPK

Y

Y

Y

Y

Y

Y

Y

Unreal

Y

Y

Y

Y

Y

Y

Y

USD

Y

Y

Y5

Y

Y5

Y

Y

Vue

N

N

N

N

N

N

N

  • 5 如果存在贴图,则将忽略对象的标量值。

地图变换材料属性

map.tu/.tv

map.su/.sv

map.rw

显示

视窗

Y

Y

Y

导入

Collada

N

N

N

DWG

N

N

N

FBX

N

N

N

glTF

Y 6

Y 6

Y 6

IFC

N

N

N

OBJ

N

Y

N

USD

Y

Y

Y

导出

Alembic

N

N

N

Collada

N

N

N

DWG

N

N

N

FBX

Y

Y

Y

文件地理数据库

N

N

N

glTF

Y 6

Y 6

Y 6

IFC

N

N

N

OBJ

N

N

N

SLPK

N

N

N

Unreal

Y

Y

Y

USD

Y

Y

Y

Vue

Y

Y

N

  • 使用 KHR_texture_transform 扩展模块读取和写入 6 个转换。

相关内容

示例

attr wallC       = "#FFFFFF"
attr wallTexture = "facade/walls/wall.c.09.tif"
attr dirtTexture = "dirtmaps/dirtmap.16.tif"
...
Wall --> 
    primitiveCube() color(wallC)
    set(material.colormap, wallTexture) projectUV(0)
    set(material.dirtmap, dirtTexture) projectUV(2)