是否可以使用鲜红色的SCNSpotlight绘制清晰的SCNSphere?

时间:2016-09-14 13:50:20

标签: scenekit scnlight scnsphere

最近几天我在SceneKit上苦苦挣扎。我试图绘制一个透明/透明的SCNSphere,红色聚光灯。如果我将SCNSphere设置为透明/清晰的颜色,我的红色聚光灯似乎也变得透明。是否可以取消SCNLight节点与SCNSphereNode的链接,如果SCNSphere是透明的,那么该点的鲜红色仍然存在?两个领域的图像都在代码之下。

我的代码:

func setupView() {
    scene = SCNScene()
    caliView.scene = scene
    caliView.allowsCameraControl = true
    caliView.backgroundColor = UIColor.clearColor()
    let clearMaterial = SCNMaterial()
    clearMaterial.diffuse.contents = UIColor(white: 0.9, alpha: 0.5)
    clearMaterial.locksAmbientWithDiffuse = true


    let shape = SCNSphere(radius: 5)
    shape.materials = [clearMaterial]
    let shapeNode = SCNNode(geometry: shape)

    let spotLight = SCNLight()
    spotLight.type = SCNLightTypeSpot
    spotLight.color = UIColor.init(colorLiteralRed: 180, green: 0, blue: 0, alpha: 0.0)
    let lightNode = SCNNode()
    lightNode.light = spotLight

    lightNode.position = SCNVector3(x: 0.0, y:0.0, z:15.0)
    lightNode.orientation = SCNQuaternion(x: 0.0, y:0, z:30, w:0.0)


    let ambientLight = SCNLight()
    ambientLight.type = SCNLightTypeAmbient
    ambientLight.color = UIColor(white: 0.8, alpha: 0.2)
    let ambientNode = SCNNode()
    ambientNode.light = ambientLight

    shapeNode.position = SCNVector3(x: 0.0, y: 0.0, z: 0.0)

    scene.rootNode.addChildNode(ambientNode)
    scene.rootNode.addChildNode(shapeNode)
    shapeNode.addChildNode(lightNode)


    }

深红色聚光灯下的深色球体:

Darker sphere with bright red spotlight

更柔和的红色聚光灯透明球体:

More transparent sphere with soft red spotlight

1 个答案:

答案 0 :(得分:2)

在这一行...... shapeNode.addChildNode(lightNode) ...您将灯光节点添加到球体节点。

如果你想在它们一起移动的同时取消链接它们,你可以创建一个空的SCNNode并将其他两个SCNNode实例作为子节点添加到它(光的那个和球体的一个): / p>

     $(document).ready(function() {
         $(".clickme").click(function() {

             $(".content").slideDown(function() {
                 $(".hi").fadeIn();
             });

         });
      });

}