【问题标题】:Proper way to illuminate a 2D surface in 3D space?在 3D 空间中照亮 2D 表面的正确方法?
【发布时间】:2015-11-26 23:15:01
【问题描述】:

编辑:我已经解决了波浪线下方的问题 - 丢失的块 - 通过修复我的 for 循环中处理计算面部法线的基本错误。不过,我现在遇到了一个新问题:表面本身出现了奇怪的、不需要的阴影。某些区域看起来比其他区域更暗...请参阅下一张图片了解当前问题。

我在场景的根节点中添加了一个全向光,并以相同的方式添加了一个定向光。出于某种原因,否则我似乎无法照亮表面的下腹部。注意凹面内部的奇怪阴影(当我像这里所做的那样移除细分效果时,它会更加明显)-->

这是上面的表面 - 请注意某些区域看起来异常暗。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这是一个凹面。

我在 3D 空间中有这些平滑的曲面。现在,它们看起来很卡通——我想利用某种形式的照明让它们看起来更“3D-ish”。

我尝试了环境照明、全方位照明和默认照明的各种组合,但似乎没有任何效果。当我应用基本的泛光灯之类的东西时,我得到了一些非常奇怪的东西 --

这是使用全向照明的另一个更好的角度。看起来有人咬了一口——

我是否忽略了特定类型的灯光或照明策略?

我想避免使用烘焙照明,因为场景相当简单。谢谢。

我将为粗体列出我的步骤。

1:我为金字塔状形状的四个面中的每一个指定顶点。像这样(为我缺乏艺术能力道歉)-->

2:我指定面部的索引,即[0,1,2,0,2,3等]

  1. 我创建了一个字典,将每个顶点映射到该顶点的相邻标准化面法线之和。

  2. 我将这些汇总的每个顶点归一化法线附加到一个向量中。

  3. 我结合顶点、索引和法线向量来创建 SCN 几何。

  4. 为了获得圆润的外观,我增加了细分数。

  5. 祈祷它有效。

我是 3D 世界的新手,所以我可能会在左侧领域出路,甚至不知道。

【问题讨论】:

  • 也许你可以附上你现在拥有的截图,以及你想要实现的目标。
  • 视差映射对我来说似乎是最明显的解决方案,但如果它们应该是平滑的,它就没有用了。
  • 想象一个pringle——你可以看出它是光滑的和弯曲的。这就是我想要的。我现在拥有的更像是一个没有阴影、曲线等的黑色 pringle。是的,@Jessy,这些表面必须是光滑的。
  • 哇!我的第一个猜测是每边都有一组顶点,但其中一些顶点在边缘共享。你有没有把它带入 Unity 或作为健全性检查的东西?
  • 你应该仔细检查你的表面法线。我的猜测是照明是错误的,因为法线不正确。

标签: ios 3d scenekit


【解决方案1】:

这应该会给您以最少的努力和最少的了解 3D 照明的合理结果。

打开来自 Apple 的 Fox 游戏示例/示例:

https://developer.apple.com/library/prerelease/ios/samplecode/Fox/Introduction/Intro.html

从 level.scn 场景图中删除除 Lights、Camera 和 Mountain 之外的所有内容。

然后将你的几何对象添加到底部的一个节点,我在场景图形底部突出显示了球体......

现在需要对材料进行一些工作,以使其有用。

通过在视图中单击它来选择山,然后转到材质编辑器并使其看起来像这样,只需继续检查此图像,直到您的图像与我所做的一些(奇怪的)更改相匹配。相信我,这会很好的:

当您想要获得可爱的红色时,您只需更改此属性: DIFFUSE :它位于材质设置的顶部。

现在您有了一个材质和照明设置,可以在 3D 空间中提供合理的曲率近似值。

把这个材质应用到你的物体上有点奇怪,而且不直观,你到这里,点击添加按钮,然后选择与上图中同名的材质,那就是在山上。

您可以通过在所谓的“3 点照明设置”中再添加两个灯来改进这一点,谷歌这个短语来查看它的解释。

此外,您可以添加屏幕外(相机外)标语牌,通常是白色的,以管理关键反射,进一步帮助用户了解所呈现的内容。

【讨论】:

  • 谢谢。如果我从头开始,那就太好了。但是,我遇到问题的表面必须与场景图交互,否则看起来/工作正常,已经到位。
  • 这将为您提供一个可以很好地显示 3D 曲率的场景。从中您可以复制其中的照明和其他设置,直到获得所需的内容。
  • 否则,您将需要以更彻底的方式理解 3D 照明理念,这需要一些时间,并且不适用于 Scene Kit,因为它缺少很多功能更强大的 3D 场景制作器会是什么。
  • 正如我在开始时所说的,这是获得可能可以接受的结果的最快方法。
  • 是的,如果您正在构建一个完整的 3D 场景,我相信您的方式非常棒。在这一点上,我已经找到了可以接受的东西。搞砸的只是我现在在问题顶部提到的“编辑”——一些不幸的阴影。与在 xcode 的游戏构建环境中重新构建整个场景相比,这似乎是一个相对容易的修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
相关资源
最近更新 更多