【问题标题】:How to render a 3D model with semi-transparent textures in Xcode?如何在 Xcode 中渲染具有半透明纹理的 3D 模型?
【发布时间】:2019-01-31 23:04:54
【问题描述】:

我无法在 Xcode 中正确渲染具有纹理透明度的 3D 模型。

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

正确渲染的模型如下所示(没有头部):

我将模型导出为 COLLADA 格式 (DAE),将其与纹理一起放入文件夹 model.scnassets,然后将其添加到 Xcode。然而在 Xcode 场景编辑器中它是这样渲染的:

这里有什么问题?


更新:

设置Transparent > Intensity = 5Settings > Transparency > Blend Mode = Double SidedSettings > Transparency > Options > Writes depth = false 给出了这个图像,其中蓝色球体上的头发多边形被正确渲染,但在蓝色球体上方,渲染的头发多边形不是最靠近相机的,但似乎是头发模型背面的那些。这显然是因为Writes depth = false,但似乎有必要禁用它来渲染半透明的头发。 (此处使用棕色纹理而不是读取纹理,但无论选择何种纹理,结果都是相同的)

【问题讨论】:

  • 你解决了这个问题吗?

标签: xcode scenekit maya metal collada


【解决方案1】:

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

Premultiplied 表示 RGB * Alpha = RGBA(与 unpremult RGB, A 相反)。

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

Apple 文档。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
相关资源
最近更新 更多