首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >柔和阴影,SceneKit中的阴影模糊

柔和阴影,SceneKit中的阴影模糊
EN

Stack Overflow用户
提问于 2017-06-15 20:58:27
回答 2查看 2.2K关注 0票数 15

我添加了一个节点,并尝试使用SceneKit设置阴影模糊

这是我的轻量级配置,我确实尝试设置了shadowRadius

代码语言:javascript
运行
复制
light = [SCNLight light];
light.type = SCNLightTypeDirectional;
light.castsShadow = true;
light.shadowMode = SCNShadowModeForward;
light.shadowRadius = 5;
light.shadowMapSize=CGSizeMake(4000, 4000);
light.orthographicScale=25;
light.zNear=1;
light.zFar=1000;

但结果并不比我没有在这里设置shadowRadius it‘时更柔和:

我确实试着添加了samplecount

代码语言:javascript
运行
复制
light = [SCNLight light];
light.type = SCNLightTypeDirectional;
light.castsShadow = true;
light.shadowMode = SCNShadowModeForward;
light.shadowRadius = 5;
// add samplecount
light.shadowSampleCount = 5;
light.shadowMapSize=CGSizeMake(4000, 4000);
light.orthographicScale=25;
light.zNear=1;
light.zFar=1000;

结果如下所示

阴影看起来很柔和,但这个阴影是从节点底部开始的(z坐标为0)。我花了很多时间只在节点的边缘设置柔和阴影,而不是从底部开始。但是没有结果。

当添加两个节点交叉时也会出现此问题(不仅仅是节点和几何体作为SCNFloor)

我的问题是如何用方向光获得阴影模糊(柔和阴影)。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2018-02-14 21:14:02

Swift 4/ Xcode 9.2

通过这些设置,我得到了一个非常好的结果:

代码语言:javascript
运行
复制
light2.castsShadow = true
light2.automaticallyAdjustsShadowProjection = true
light2.maximumShadowDistance = 20.0
light2.orthographicScale = 1

light2.shadowMapSize = CGSize(width: 2048, height: 2048)
light2.shadowMode = .forward
light2.shadowSampleCount = 128
light2.shadowRadius = 3
light2.shadowBias  = 32

shadowRadius增加到12对我的模型有很大帮助,但随后我需要增加shadowSampleCountshadowBias才不会得到工件。

票数 3
EN

Stack Overflow用户

发布于 2017-07-07 09:42:19

我真的可以用orthographicScale使阴影模糊。我不知道为什么,但这招对我很管用。希望可以帮助某些人

代码语言:javascript
运行
复制
light.shadowMapSize=CGSizeMake(4000, 4000);
light.orthographicScale=100; // bigger is softer

我还将shadowMapSize更改为更大的值,并设置isJitteringEnabled antialiasingMode以减少锯齿。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44568165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档