3D 场景中阴影效果的实现与应用
1. 阴影基础介绍
阴影的存在依赖于光,就如同邪恶与善良的关系,在 3D 场景中也是如此。在 SceneKit 里,并非所有光源都能投射阴影,只有聚光灯(spot light)和定向光(directional light)具备此能力。
为了演示光和阴影的工作原理,我们以一个场景为例:孩子们在草坪上堆了个小雪人,定向光模拟阳光使雪人投射出阴影。
2. 定向光阴影
定向光可以想象成无数个小激光束,平行地朝一个方向发射光线。与聚光灯阴影不同,定向光投射的阴影大小不会随光源距离的改变而变化,但阴影长度会受光线照射 3D 对象角度的影响,就像日落时影子会变长。
定向光在投射阴影时有些特殊,节点的缩放属性对阴影区域的确定起着重要作用。SceneKit 会从光源节点的视角创建一个 2D 阴影映射。定向光忽略位置信息,因为其光线方向恒定,且需要正交投影,所以缩放属性控制着正交投影的可见范围。
如果在场景中使用定向光却看不到阴影,可能需要调整节点的缩放。可以通过调整节点缩放或光源阴影属性的缩放来实现。以下是不同缩放比例对阴影的影响:
| 缩放比例 | 阴影效果 |
| ---- | ---- |
| 1 | 能看到一个在 x 和 y 方向都被裁剪的方形阴影 |
| 2 | 开始看到圆形身体的阴影,但没有手、鼻子和头部 |
| 5 | 能看到所有身体部位,包括尖鼻子 |
定向光的属性检查器中有阴影相关设置:
- Behavior :决定光源是否投射阴影。
-
超级会员免费看
订阅专栏 解锁全文
1902

被折叠的 条评论
为什么被折叠?



