我在Blender中创建了两个多维数据集作为单个对象,并为每个多维数据集应用了两种不同的图像纹理,并将它们导出为.OBJ文件。我已使用XCODE将.OBJ转换为.USDZ文件,并使用color_map标签将.png图像纹理文件上传为我的对象的材料。将该材料应用于两个立方体。但是,我看到一个立方体是不透明,而另一个立方体是透明。
不确定我为什么会有这个问题,有人可以帮我吗?
OBJ文件= PBR_Cube.obj
图像纹理文件= Combined.png
代码:
xcrun usdz_converter PBR_Cube.obj PBR_Cube.usdz -v -a -l \
-color_map Combined.png
我希望两个立方体都是不透明的
答案 0 :(得分:2)
我知道这是一篇过时的文章,但是我已经解决了此问题,并且在网上找不到任何答案。 USDZ格式(至少在移动设备上)将基本颜色rgba映射解释为预乘alpha或rgb(a)。如果模型不使用任何透明度,则简单地使用3通道rgb输出(jpeg作为简单的解决方案,或者png的预乘alpha为png)是安全且容易的。 USDZ文档建议对透明区域使用单独的材质集,但是可以使用不透明蒙版,该蒙版应设置为png-24格式,并带有预先乘以Alpha的不透明蒙版。在这种rgb(a)格式中,与rgb值相关地存储了alpha,使得颜色的十六进制代码不同于在'a'通道中带有alpha的纯正rgba的颜色,但是颜色值看起来相同。这解释了为什么颜色正确但透明度值错误。我使用了Substance Designer将我的基础颜色和不透明蒙版组合到一个预先乘以png-24上,并且效果很好。在Photoshop或其他图像处理软件中,该过程似乎很困难/困难,但是在Substance中却很简单(如果有人感兴趣,我可以提供更多详细信息)。可以使用rgb jpeg颜色图作为基本颜色,并使用单通道灰度蒙版来实现不透明度,但是我不确定USDZ转换器是否可以正确组合这些颜色,使用自己的4通道更安全png-24。