Konturstärke mit SceneKit Linie primitiver Typ

Ich versuche zu replizieren, das cube-Bild-Form (mit freundlicher Genehmigung aus dem original Ersteller) mit Szene-kit.

Konturstärke mit SceneKit Linie primitiver Typ

So weit, ich habe die Zeichnung code für die Linien und die Eckpunkte. Ich kann ein Bild, da der hintergrund transparent sein muss.

Den spezifischen, den ich versuche zu lösen, ist im Moment so ändern Sie die Strichbreite für die SCNGeometryPrimitiveType.Line element.

Die grundlegende Art und Weise erstelle ich Zeilen wie diese:

private func squareVertices(length: Float) -> [SCNVector3] {
    let m = length/Float(2)

    let topLeft =       SCNVector3Make(-m-q,  m+q, m+q)
    let topRight =      SCNVector3Make( m+q,  m+q, m+q)
    let bottomLeft =    SCNVector3Make(-m-q, -m-q, m+q)
    let bottomRight =   SCNVector3Make( m+q, -m-q, m+q)

    return [topLeft, topRight, bottomLeft, bottomRight]
}

private func cubeFace() -> SCNGeometry {

    let vertices : [SCNVector3] = squareVertices(l)
    let geoSrc = SCNGeometrySource(vertices: UnsafePointer<SCNVector3>(vertices), count: vertices.count)

    //index buffer
    let idx1 : [Int32] = [0, 3]
    let data1 = NSData(bytes: idx1, length: (sizeof(Int32) * idx1.count))
    let geoElements1 = SCNGeometryElement(data: data1, primitiveType: SCNGeometryPrimitiveType.Line, primitiveCount: idx1.count, bytesPerIndex: sizeof(Int32))

    let idx2 : [Int32] = [1, 2]
    let data2 = NSData(bytes: idx2, length: (sizeof(Int32) * idx2.count))
    let geoElements2 = SCNGeometryElement(data: data2, primitiveType: SCNGeometryPrimitiveType.Line, primitiveCount: idx2.count, bytesPerIndex: sizeof(Int32))

    let geo = SCNGeometry(sources: [geoSrc], elements: [geoElements1, geoElements2])

    return geo
}

    private func setupFaceNodes() {
    //sides
    for i in 0..<4 {
        let face = SCNNode(geometry: cubeFace())
        face.rotation = SCNVector4Make(0, 1, 0, Float(i) * Float(M_PI_2))
        rootNode.addChildNode(face)
    }
    //top/bottom
    for i in [1, 3] {
        let face = SCNNode(geometry: cubeFace())
        face.rotation = SCNVector4Make(1, 0, 0, Float(i) * Float(M_PI_2))
        rootNode.addChildNode(face)
    }
}

Habe ich etwas, das aussieht wie diese mit der richtigen Form:

Konturstärke mit SceneKit Linie primitiver Typ

aber ich kann nicht herausfinden, wie man erhöhen Sie die Breite der Linien, die gezeichnet wird mit SceneKit. Wie kann ich das erreichen?

Für Interessenten, hier ist ein Beispiel proj.

InformationsquelleAutor coneybeare | 2014-11-02
Schreibe einen Kommentar