ios – 使用SCNAction移动SCNLight

ios – 使用SCNAction移动SCNLight,第1张

概述我有一个聚光灯,使用下面的代码创建,在我的所有节点上投射阴影: spotLight.type = SCNLightTypeSpot spotLight.spotInnerAngle = 50.0 spotLight.spotOuterAngle = 150.0 spotLight.castsShadow = true spotLight.shadowMode = SCNShadowMode 我有一个聚光灯,使用下面的代码创建,在我的所有节点上投射阴影:

spotlight.type = SCNlightTypeSpot spotlight.spotInnerAngle = 50.0 spotlight.spotOuterangle = 150.0 spotlight.castsShadow = true spotlight.shadowMode = SCNShadowMode.Deferred spotlightNode.light = spotlight spotlightNode.eulerAngles = SCNVector3(x: GLKMathdegreesToradians(-90),y: 0,z: 0) spotlightNode.position = levelData.coordinatesForGrIDposition(column: 0,row: playerGrIDRow) spotlightNode.position.y = 1.5 rootNode.addChildNode(spotlightNode)

场景沿z轴移动,相机有一个无限动画使其移动:

let moveAction = SCNAction.moveByX(0.0,y: 0.0,z: CGfloat(-GameVariables.segmentSize / 2),duration: 2.0)cameraContainerNode.runAction(SCNAction.repeatActionForever(moveAction))

当相机移动时,光线不会,所以过了一会儿,整个场景都是黑暗的.我想用相机移动灯光,但是如果我将相同的移动动画应用于灯光节点,则所有阴影都会开始闪烁.我试图将SCNShadowMode更改为Forward,将灯光类型更改为Directional,但闪烁仍然存在.有方向性,我实际上放弃了大部分阴影.如果我稍后创建一个新的光节点,似乎我有两个“太阳”,这当然是不可能的.最终目标只是让一个无限的光线从左边平行于场景照射,将所有阴影投射到右边.有任何想法吗?

解决方法 构建节点树以保持聚光灯和相机.

比如,将cameraRigNode创建为没有几何体的SCNNode.以与现在相同的方式创建cameraContainerNode和spotlightNode.但是让他们成为cameraRigNode的孩子,而不是场景的根节点.

将moveAction应用于cameraRigNode.相机和灯光现在都会一起移动.

总结

以上是内存溢出为你收集整理的ios – 使用SCNAction移动SCNLight全部内容,希望文章能够帮你解决ios – 使用SCNAction移动SCNLight所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1003711.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存