9

シーン キットを使用して、この立方体イメージの形状を (元の作成者の許可を得て) 複製しようとしています。

ここに画像の説明を入力

ここまでで、線と頂点の描画コードができました。背景を透明にする必要があるため、画像を使用できません。

私が今解決しようとしている具体的なことは、SCNGeometryPrimitiveType.Line要素のストローク幅を編集する方法です。

線を作成する基本的な方法は次のとおりです。

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)
    }
}

全体的な形状が正しい次のようなものがあります。

ここに画像の説明を入力

しかし、SceneKit を使用して描画されている線の幅を広げる方法がわかりません。どうすればこれを達成できますか?

興味のある方は、ここにサンプル プロジェクトがあります。

4

2 に答える 2

4

glLineWidthを使用して線幅を設定できます。
プロジェクトに OpenGLES を必ず含めてください。

線幅 8

線幅を 8 に設定した立方体は次のようになります。

于 2014-11-03T19:49:00.330 に答える