在3D空间中照亮2D表面的正确方法?

时间:2015-09-01 16:11:14

标签: ios 3d scenekit

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

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

enter image description here

这是上面的表面 - 注意一些区域看起来有点奇怪。

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

这是一个凹面。

enter image description here

我在3D空间中拥有这些平滑,弯曲的平面。现在,他们看起来很卡通 - 我想利用某种形式的灯光让他们看起来更像“3D-ish。”#34;

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

enter image description here

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

enter image description here

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

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

我将概述我的大胆步骤。

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

enter image description here

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

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

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

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

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

  5. 祈祷它有效。

  6. 我是3D世界的新手,所以我可以在左外野中出路,甚至不知道。

1 个答案:

答案 0 :(得分:0)

这应该以最小的努力和最不可能理解3D照明的方式为您提供合理的结果。

从Apple打开Fox游戏示例/示例:

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

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

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

Scene Graph of level.scn in Apple's Fox SNK sample

现在材料需要一些工作,才能使它变得有用。

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

Material Settings

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

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

将这些材料应用到您的对象有点奇怪,而且不直观,您到这里,然后单击添加按钮,然后选择与上图中的名称相同的材料,即山上的材料。 / p>

Apply Material to another object:

你可以通过在所谓的“3点照明设置”中添加两个灯来改善这一点,谷歌这句话来看它解释。

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