Toma
Toma

Reputation: 2936

Adding SCNLight inside SK3DNode

I am creating an SK3DNode inside an SKScene:

let ball: SK3DNode = {
    let scnScene = SCNScene()
    let ballGeometry = SCNSphere(radius: 200)
    let ballNode = SCNNode(geometry: ballGeometry)
    ballNode.position = SCNVector3(0, 0, 0)

    let material = SCNMaterial()
    material.diffuse.contents = UIImage(named: "wall")
    ballGeometry.materials = [material]

    let light = SCNLight()
    light.type = .omni
    light.color = UIColor.white
    let lightNode = SCNNode()
    lightNode.light = light

    scnScene.rootNode.addChildNode(ballNode)
    scnScene.rootNode.addChildNode(lightNode)
    let node = SK3DNode(viewportSize: CGSize(width: 1000, height: 1000))
    node.scnScene = scnScene
    node.autoenablesDefaultLighting = false
    return node
}()

However, the sphere renders black. Tried it with or without the material. Is there something I am missing?

Upvotes: 1

Views: 79

Answers (1)

mnuages
mnuages

Reputation: 13462

The sphere is manually placed at (0, 0, 0) and so is the light (default value). This means that the light is placed inside the sphere. This means that the surface of the sphere is facing away from the light source and thus isn't lit.

Upvotes: 1

Related Questions