1

我尝试在ARKit场景中产品的深度区域设置黑色阴影,但没有成功。我试过这段代码:

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

我附上了所需的结果图像和当前结果图像。

当前结果

在此处输入图像描述

预期结果

预期结果

4

1 回答 1

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 映射纹理:

在此处输入图像描述

这是一个 5 分钟视频的链接,该视频介绍了如何在 Maya 中对纹理进行 uv 映射。

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

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

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

在此处输入图像描述

在此处输入图像描述


第二种方法

或者你可以使用假阴影技术

于 2019-07-11T16:37:22.847 回答