如何在Xcode中使用半透明纹理渲染3D模型?

时间:2018-08-25 22:56:08

标签: xcode scenekit maya metal collada

我无法获得具有纹理透明性的3D模型以在Xcode中正确呈现。

头发的3D模型由两个几何形状(头发和帽子)组成,并在Maya中创建。它是从here购买的。

正确渲染的模型如下所示(无头): enter image description here

我将模型导出为COLLADA格式(DAE),并将其与纹理一起放入文件夹model.scnassets中,并将其添加到Xcode。但是,在Xcode Scene Editor中,其呈现方式如下:

enter image description here

这是怎么了?


更新:

设置Transparent > Intensity = 5Settings > Transparency > Blend Mode = Double SidedSettings > Transparency > Options > Writes depth = false可以得到此图像,其中正确绘制了针对蓝色球体的头发多边形,但是在蓝色球体上方,渲染的头发多边形不是最接近的多边形相机,但似乎是在头发模型的背面。这显然是由于Writes depth = false引起的,但是似乎有必要禁用它以呈现半透明的头发。 (在这里使用棕色纹理代替读取的纹理,但是无论选择哪种纹理,结果都是相同的)

enter image description here

1 个答案:

答案 0 :(得分:1)

如果要在Xcode场景编辑器中查看Transparent插槽的正确结果,则需要对3D对象的透明部分使用预乘的TIFFPNG文件。 TIFFPNG文件格式可以容纳四个通道(RGBA),但是JPEG仅可以容纳三个通道(RGB)。

Premultiplied的意思是RGB * Alpha = RGBA(但不要取消公开RGB, A)。

将预乘纹理应用于Transparent插槽后,将其Intensity属性设置为1...5,并将Components属性从下拉菜单({{1} },AllRedGreenBlue)。

enter image description here

enter image description here

  

Apple文档。

     

默认情况下,透明属性的内容对象是完全不透明的黑色,导致该属性没有可见效果。将透明属性的内容设置为任何纯色会根据该颜色的不透明度值均匀地淡化材质的不透明度。要使材料的某些部分看起来透明,请将属性的内容设置为图像或其他具有纹理贴图的内容,这些内容的Alpha通道定义了完全或部分不透明的区域。

enter image description here

enter image description here

enter image description here