场景工具包中的颜色线



我使用以下代码在两个节点之间画一条线:

class func lineBetweenNodeA(nodeA: SCNNode, nodeB: SCNNode) -> SCNNode {
    let positions: [Float32] = [nodeA.position.x, nodeA.position.y, nodeA.position.z, nodeB.position.x, nodeB.position.y, nodeB.position.z]
    let positionData = NSData(bytes: positions, length: sizeof(Float32)*positions.count)
    let indices: [Int32] = [0, 1]
    let indexData = NSData(bytes: indices, length: sizeof(Int32) * indices.count)
    let source = SCNGeometrySource(data: positionData, semantic: SCNGeometrySourceSemanticVertex, vectorCount: indices.count, floatComponents: true, componentsPerVector: 3, bytesPerComponent: sizeof(Float32), dataOffset: 0, dataStride: sizeof(Float32) * 3)
    let element = SCNGeometryElement(data: indexData, primitiveType: SCNGeometryPrimitiveType.Line, primitiveCount: indices.count, bytesPerIndex: sizeof(Int32))
    let line = SCNGeometry(sources: [source], elements: [element])
    line.firstMaterial?.lightingModelName = SCNLightingModelConstant
    line.firstMaterial?.emission.contents = UIColor.orangeColor()
    return SCNNode(geometry: line)
}

当我调用这个函数时,我希望能够传入一种颜色,这样它就会相应地改变颜色。。。

如何指定绘制的线的颜色?

我编辑了适合我的代码。我使用了发射特性而不是漫射,我使用了恒定光。。。

材质的lightingModelName默认为SCNLightingModelBlinn。使用此照明模型时,漫射材质特性的使用方式如下:

color = ... + diffuse * max(0, dot(N, L)) + ...

但由于几何体没有法线,diffuse总是乘以0。

您可能希望使用SCNLightingModelConstant光源模型,或者使用emission材质特性而不是diffuse

最新更新