材料形状属性用于控制形状几何的着色、纹理和导出。 CityEngine 支持具有固定语义的十个纹理通道。
所有这些属性均可使用 set 或 setMaterial 操作进行更改。 可使用 print 操作输出某一材料属性的值,例如 print(material.color.r)。
语法
string material.name |
材料的名称。 |
string material.shader |
着色器名称。 默认值为“CityEngineShader”。 将其设置为“CityEnginePBRShader”时,意味着应使用基于物理的渲染属性,请参阅 PBR 材料属性。 |
float material.color.{r|g|b} |
漫反射颜色。 单独访问每个颜色组件。 默认值为白色。 请参阅 material.color 属性。 |
string material.color.rgb |
漫反射颜色。 以十六进制格式字符串访问完整颜色,例如 RED = “#ff0000”。 默认为 “#ffffff”。 请参阅 material.color 属性。 |
float material.ambient.{r|g|b} |
环境光颜色。 单独访问每个颜色组件。 默认值为黑色。 |
float material.specular.{r|g|b} |
镜面颜色。 单独访问每个颜色组件。 默认值为黑色。 |
float material.emissive.{r|g|b} |
自发光颜色。 单独访问每个颜色组件。 默认值为黑色。 |
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。 |
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。 |
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 |
material.emissive |
emissiveFactor |
material.opacitymap.mode |
alphaMode |
material.opacitymap.cutoff |
alphaCutoff |
渲染、导入和导出
对于资产和生成的模型预览、导入以及对于导出生成的模型,需要在材料属性和相应格式之间来回映射。 下表显示了哪些格式实施哪些要素。 此表仅列出了与 CGA 有关的格式,而不是常规 CityEngine。
基本材料属性
扩展模块 |
名称 |
着色器 |
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 |
|
CityEngine WebScene 3ws |
.3ws |
N |
N |
Y |
Y |
N |
- 1 对于视口,着色器名称用于在标准渲染和 PBR 渲染之间进行切换,请参阅上面的 PBR 材料属性部分。
- 2 在视口中,色彩映射表和脏蚀贴图值将使用(漫反射)颜色进行倍增。
- 3 COLLADA 官方标准不同时支持漫反射纯色和漫反射纹理。
- 4 USD 导出器始终会创建 USDPreviewSurface 着色器。 如果着色器名称设置为 PBR,则还将导出 PBR 属性(请参阅上面的 PBR 材料属性)。
- 5 如果存在贴图,则将忽略对象的标量值。
高级材料属性
不透明度 |
不透明贴图 |
opacitymap.mode |
opacitymap.cutoff |
法线贴图 |
||
显示 |
视口 |
Y |
Y |
Y |
Y |
Y |
导入 |
Collada |
Y |
Y |
N |
N |
Y |
DWG |
Y |
Y |
N |
N |
N |
|
FBX |
Y |
Y |
N |
N |
Y |
|
glTF |
Y |
Y |
Y |
Y |
Y |
|
IFC |
Y |
N |
N |
N |
N |
|
OBJ |
Y |
Y |
N |
N |
N |
|
USD |
Y |
Y |
Y |
Y |
Y |
|
导出 |
Alembic |
Y |
Y |
Y |
N |
Y |
Collada |
Y |
Y |
N |
N |
Y |
|
DWG |
Y |
Y |
N |
N |
N |
|
FBX |
Y |
Y |
N |
N |
Y |
|
文件地理数据库 |
Y |
N |
N |
N |
N |
|
glTF |
Y |
Y |
Y |
Y |
Y |
|
IFC |
Y |
N |
N |
N |
N |
|
OBJ |
Y |
Y |
N |
N |
N |
|
SLPK |
Y |
Y |
N |
N |
Y |
|
Unreal |
Y |
Y |
Y |
N |
Y |
|
USD |
Y5 |
Y |
Y |
Y |
Y |
|
Vue |
Y |
Y |
N |
N |
N |
|
WebScene |
Y |
Y6 |
N |
N |
N |
- 5 如果存在贴图,则将忽略对象的标量值。
- 6 将在以下情况下导出不透明度贴图:它指向与色彩映射表属性相同的图像,并且该图像具有 alpha 通道。
旧版材料属性
环境光 |
镜面光 |
镜面贴图 |
反射光 |
光泽度 |
凹凸值 |
凹凸贴图 |
||
显示 |
视口 |
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 |
|
WebScene |
Y |
Y |
N |
Y |
Y |
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 |
|
WebScene |
N |
N |
N |
N |
N |
N |
N |
- 5 如果存在贴图,则将忽略对象的标量值。
贴图变换材料属性
map.tu/.tv |
map.su/.sv |
map.rw |
||
显示 |
视口 |
Y |
Y |
Y |
导入 |
Collada |
Y |
Y |
Y |
DWG |
N |
N |
N |
|
FBX |
Y |
Y |
Y |
|
glTF |
Y 7 |
Y 7 |
Y 7 |
|
IFC |
N |
N |
N |
|
OBJ |
N |
Y |
N |
|
USD |
N |
N |
N |
|
导出 |
Alembic |
Y |
Y |
Y |
Collada |
Y |
Y |
Y |
|
DWG |
N |
N |
N |
|
FBX |
Y |
Y |
Y |
|
文件地理数据库 |
N |
N |
N |
|
glTF |
Y 7 |
Y 7 |
Y 7 |
|
IFC |
N |
N |
N |
|
OBJ |
N |
N |
N |
|
SLPK |
N |
N |
N |
|
Unreal |
N |
N |
N |
|
USD |
Y |
Y |
Y |
|
Vue |
Y |
Y |
N |
|
WebScene |
N |
N |
N |
- 使用 KHR_texture_transform 扩展模块读取和写入 7 个转换。
相关内容
示例
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)