swift - 将 SCNLight 添加到 SCNNode 会使 SCNNode 变黑

标签 swift scenekit

我正在尝试将 SCNLight 添加到 SceneKit 中的 SCNSphere (SCNNode)。它的效果令人惊叹,唯一的问题是 SCNLight 所连接的源球体是完全黑色的,因为作为源,它根本不会得到任何光。如何确保光源(即那个 Sphere)完全点亮?

这是光源代码:

public func addLightSource(position: SCNVector3) -> SCNLight {
        let light = SCNLight()
        light.type = .omni
        light.intensity = 5000
        light.temperature = CGFloat(3500)
        return light
}

以后


ParentNode.light = addLightSource(position: absolutePosition)

这有效但将 ParentNode 变黑。

最佳答案

设置 categoryBitMask球体和光的实例属性以排除/包含:

func addLightSource(position: SCNVector3) -> SCNLight {
    let light = SCNLight()
    light.type = .omni
    light.intensity = 5000
    light.categoryBitMask = 1
    light.temperature = CGFloat(2000)
    return light
}

let sphereNode1 = SCNNode()
sphereNode1.geometry = SCNSphere(radius: 2)
sphereNode1.position = SCNVector3(x: 10, y: 0, z: 0)
sphereNode1.light = addLightSource(position: sphereNode1.position)
sphereNode1.categoryBitMask = 1
scene.rootNode.addChildNode(sphereNode1)

关于swift - 将 SCNLight 添加到 SCNNode 会使 SCNNode 变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55271885/

相关文章:

swift - 如何使用 ARKit 在 ARSCNView 中正确放置 3D 对象?

ios - UIViewController 中 present() 函数的 Swift 协议(protocol)

ios - SWRevealViewController 不显示来自 Appdelegate 的状态栏推送

ios - 如何检查节点是否被光击中?

ios - 按下主页按钮时无法暂停游戏场景

ios - 在 iOS 中,为什么 SceneKit 景深比 SpriteKit 快?

ios - 如何检查 NSArray 中的 NSDate yyyy/mm/dd 并进行比较?

swift - 在 SwiftUI 中隐藏导航栏而不会丢失向后滑动手势

ios - AVPlayerViewController 完成时淡出

scenekit - SceneKit:如何从图像创建SCNFloor的棋盘图案?