如何在 SceneKit 中正确点亮自定义网格而不显示网格的不规则性?

Posted

技术标签:

【中文标题】如何在 SceneKit 中正确点亮自定义网格而不显示网格的不规则性?【英文标题】:How do I properly light a custom mesh in SceneKit without showing off the irregularities of the mesh? 【发布时间】:2018-06-14 13:03:00 【问题描述】:

所以我在下面创建了这个网格。它最初是一个 .obj,但我将其转换为 .scn。这是在 SceneKit 编辑器中查看时网格在默认环境光照下的外观。

我的问题是,当我在场景中添加灯光时,它会非常糟糕地展示网格的几何形状。例如,在下面的网格中,我在网格周围添加了 4 个泛光灯。

如您所知,Apple 的顶部显示了构成网格的各个多边形。我的主要问题是:我能做些什么来减少这种情况吗?必须有一些设置,我可以羽化灯光与网格的交互方式。我试图关闭阴影,但没有任何效果。

添加更多的灯也不能解决问题。走近了,你仍然可以看到那些突出的小多边形。

这是另一个示例,我添加了一个聚光灯直接向下看网格。这里存在多边形问题,但整个苹果也变得非常黑。有什么办法可以点亮苹果,这样它就不会在不添加更多灯光的情况下这么快就完全变暗?

【问题讨论】:

【参考方案1】:

您的网格很可能只有位置。您还需要逐顶点法线来获得平滑的阴影。 Blender 几乎可以肯定有一个生成缺失法线的工具。

苹果的下半部分是黑暗的,因为它没有任何光线。您可以在场景中添加.ambient 灯光,以便每个对象至少获得最少量的灯光。

【讨论】:

【参考方案2】:

尝试以下方法:

myNode.geometry.subdivisionLevel = 1

(其中 myNode 是 SCNNode,它保存 SCN 文件中的 Apple 几何图形)

这至少应该使表面光滑。

【讨论】:

以上是关于如何在 SceneKit 中正确点亮自定义网格而不显示网格的不规则性?的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit 进口的 COLLADA 盒子未“点亮”

来自自定义数据的模型 I/O 网格

iOS10 + SceneKit:使用自定义着色器渲染视频

C#WPF - 创建自定义控件。不确定如何正确对齐文本

围绕其中心点旋转自定义几何网格

如何在代码中创建 SceneKit SCNSkinner 对象?