如何在3D模型的折叠中打开阴影?

时间:2019-07-09 11:56:25

标签: swift scenekit augmented-reality arkit realitykit

我尝试在ARKit场景中的产品深度区域设置黑影,但没有成功。我尝试使用以下代码:

node.geometry?.materials.first?.ambientOcclusion.contents = 0.5

我已附上必需的结果图像和当前结果图像。

当前结果

enter image description here

预期结果

expected result

1 个答案:

答案 0 :(得分:0)

对于3D模型,使用 自我遮盖 环境光遮盖 的最可靠,最简单的方法是为此创建一个伪造的 UV-mapped texture (而不是实时呈现折叠中的自我阴影)。因此,在3D模型上使用伪造的AO纹理,对CPU / GPU的负担最小,并且您的电池也非常感激您。

要创建UV映射的漫反射和环境光遮挡纹理,您需要一个UV Texture Editor,您可以在任何流行的3D创作应用程序(例如Maya或3dsMax)中找到它们。渲染UV映射的AO纹理(为具有预乘alpha RGBxA的四通道PNG文件)后,您可以使用以下代码简单地对其进行分配:

node.geometry?.materials.first?.ambientOcclusion.contents = UIImage(named: "AO.png")

查看存储在2个不同png文件中的这2个uv映射纹理:

enter image description here

这是一个link长达5分钟的视频,介绍了如何在Maya中对纹理进行uv-map。

  

或者,作为更简单的解决方案,您可以使用半透明的黑色画笔在类似Photoshop的应用中绘制UV-mapped Diffuse texture

然后通过diffuse插槽分配阴影纹理:

node.geometry?.materials.first?.diffuse.contents = UIImage(named: "diffuseWithShadows.png")

enter image description here

enter image description here