现有的Cesium库中不支持对模型的编辑,自然也不包括修改贴图或者修改贴图的透明度等功能
需要修改 packages\engine\Source\Scene\Model\MaterialPipelineStage.js 中
processMetallicRoughnessUniforms 函数
const baseColorTextureAlpha = metallicRoughness.baseColorTextureAlpha;
if (defined(baseColorTextureAlpha)) {
shaderBuilder.addDefine("HAS_BASE_COLOR_TEXTURE_ALPHA", undefined, ShaderDestination.FRAGMENT);
shaderBuilder.addUniform(
"float",
"u_baseColorTextureAlpha",
ShaderDestination.FRAGMENT
);
uniformMap.u_baseColorTextureAlpha = function() {
return metallicRoughness.baseColorTextureAlpha;
};
}
对应的 packages\engine\Source\Shaders\Model\MaterialStageFS.js 中修改
materialStage 中添加
#ifdef HAS_BASE_COLOR_TEXTURE_ALPHA\n\
baseColorWithAlpha.a *= u_baseColorTextureAlpha;\n\
#endif\n\
再由上层传入对应的 值即可实现。