3

我在 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

我希望两个立方体都是不透明的

4

1 回答 1

4

我知道这是一篇旧帖子,但我有解决这个问题的方法,但在网上的任何地方都没有找到答案。USDZ 格式(至少在移动设备上)将基色 rgba 映射解释为预乘 alpha 或 rgb(a)。如果模型不使用任何透明度,则只需使用 3 通道 rgb 输出(jpeg 可以作为简单的解决方案,或者使用预乘 alpha 为 1 的 png)是安全且容易的。USDZ 文档建议对透明区域使用单独的材质集,但可以使用不透明蒙版,这应格式化为 png-24,并带有包含不透明蒙版的预乘 alpha。在这种 rgb(a) 格式中,alpha 是相对于 rgb 值存储的,使得颜色的十六进制代码与在“a”通道中具有 alpha 的直 rgba 不同,但颜色值看起来相同。这解释了为什么颜色正确但透明度值错误。我使用 Substance Designer 将我的基色和不透明度蒙版组合到预乘的 png-24 中,这非常有效。这个过程在 Photoshop 或其他图像处理软件中似乎很挑剔/困难,但在 Substance 中很简单(如果有人感兴趣,我可以提供更多细节)。可以使用 rgb jpeg 颜色图作为基色,使用单通道灰度蒙版作为不透明度,但我不完全确定 USDZ 转换器是否会正确组合这些,使用自己的 4 通道更安全PNG-24。这个过程在 Photoshop 或其他图像处理软件中似乎很挑剔/困难,但在 Substance 中很简单(如果有人感兴趣,我可以提供更多细节)。可以使用 rgb jpeg 颜色图作为基色,使用单通道灰度蒙版作为不透明度,但我不完全确定 USDZ 转换器是否会正确组合这些,使用自己的 4 通道更安全PNG-24。这个过程在 Photoshop 或其他图像处理软件中似乎很挑剔/困难,但在 Substance 中很简单(如果有人感兴趣,我可以提供更多细节)。可以使用 rgb jpeg 颜色图作为基色,使用单通道灰度蒙版作为不透明度,但我不完全确定 USDZ 转换器是否会正确组合这些,使用自己的 4 通道更安全PNG-24。

于 2019-09-16T20:05:11.517 回答