Я ценю, что это старый пост, но мне недавно пришлось реализовать что-то подобное проекту ARKit.
Во-первых, я создал квадратное изображение в Adobe Illustrator с зелеными краями, но прозрачным центром. Это называется «outlinedFace».
Затем я создал SCNNode (Swift 4) следующим образом:
import UIKit
import ARKit
class CubeNode: SCNNode {
private var faceArray = [SCNMaterial]()
private let FACE_OUTLINE = "outlinedFace"
/// Initialization With Outline Only
///
/// - Parameters:
/// - width: Optional CGFloat (Defaults To 20cm)
/// - height: Optional CGFloat (Defaults To 20cm)
/// - length: Optional CGFloat (Defaults To 20cm)
/// - colours: [UIColor] - [Front, Right , Back , Left, Top , Bottom]
init(width: CGFloat = 0.2, height: CGFloat = 0.2, length: CGFloat = 0.2) {
super.init()
self.geometry = SCNBox(width: width, height: height, length: length, chamferRadius: 0)
for _ in 0 ..< 6{
let face = SCNMaterial()
face.diffuse.contents = UIImage(named: FACE_OUTLINE)
face.isDoubleSided = true
face.lightingModel = .constant
faceArray.append(face)
}
self.geometry?.materials = faceArray
self.rotation = SCNVector4Make(0, 1, 0, .pi/4)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Ключ здесь делает содержание удвоенную односторонними.
Это прекрасно работает для меня!
Спасибо Хэл, кажется, именно то, что мне нужно –