欢迎光临散文网 会员登陆 & 注册

gltf模型带透明贴图的显示问题

2023-02-19 12:27 作者:地理信息技术杂谈  | 我要投稿

带透明贴图的三维模型,会涉及到在显示时,根据图片上的透明度,来显示不规则的形状,图片在制作三维模型时,导入的是规则形状,长方形或者正方形,如不对透明度进行处理时,显示的结果是不正确的,例如下边树木的三维模型设置:

通过模型的处理软件,设置材质(material)的属性,能够使模型在引擎中显示时,将透明的位置不显示,从而达到正确的显示方式:


具体的操作方式参见之前公众号文章:Blender导出带透明贴图的gltf模型

在实际的操作中,拥有多张贴图的三维模型,一张一张贴图修改属性信息会比较慢,可以使用Blender中的python脚本进行批量修改,参见公众号文章:https://mp.weixin.qq.com/s?__biz=MzU2ODYzNzc4OQ==&mid=2247485182&idx=1&sn=d33da1cf3e30f8f9abe31e4aac4c1206&chksm=fc8ba6cccbfc2fdac610b97d8db064486e7ffd0a8bee1967140b4094cb7a49be432c1980cfbc&scene=21#wechat_redirect,附:如何修改一个模型里的所有材质的属性(material)的python代码:
//bpy.data为场景中的模型数据

 materials = bpy.data.materials

    for (k1,v1) in  materials.items():

        v1.blend_method = 'BLEND'

按照此方式设置导出的三维模型,将材质都设置成了BLEND属性,当模型中的材质有透明通道(例如png格式),在three.js或者cesium中显示时,会存在和背景混合的问题,模型显示会穿透背景,如下图:


不带透明通道的材质,例如jpg格式,就能避免这样的问题,所以,在模型的贴图设置时,可以根据不同情况,设置不同的属性,在gltf模型格式说明中,也可以将模型的透明属性设置成mask,这样同样能够避免这样的问题。
附gltf模型材质参数设置说明(blend和mask):

MASK - The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value; the exact appearance of the edges MAY be subject to implementation-specific techniques such as “Alpha-to-Coverage”.

BLEND - The rendered output is combined with the background using the “over” operator as described in Compositing digital images.

gltf模型带透明贴图的显示问题的评论 (共 条)

分享到微博请遵守国家法律