У меня есть простой метод обнаружения касания, который должен изменить цвет касающегося узла.Материал SceneKit заполняется случайными шаблонами, почему?
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
let touch = touches.first as! UITouch
let point = touch.locationInView(view)
let options: [NSObject : AnyObject] = [
SCNHitTestFirstFoundOnlyKey: NSNumber(bool: true),
SCNHitTestSortResultsKey: NSNumber(bool: true)
]
if let results = sceneView.hitTest(point, options: options) as? [SCNHitTestResult] {
if let result = results.first {
// Red color material
let material = SCNMaterial()
material.diffuse.contents = UIColor.redColor()
// Assign it to the node
result.node.geometry?.firstMaterial = material
}
}
}
иерархия Мой узел содержит один узел с использованием пользовательского SCNGeometry
и 8 узлов с регулярной SCNBox
геометрии.
let boxGeometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)
let boxNode = SCNNode(geometry: boxGeometry)
boxNode.position = SCNVector3(x: vector.x, y: vector.y, z: vector.z)
Вот пара скриншотов о том, как меняется цвет после касания коробки. Шаблон мерцает и изменяется при каждом повороте.
Что является причиной этого странного рисунка цвета? Я просто хочу, чтобы он оставался сплошным цветом.
Похоже, у вас может быть одна коробка внутри другого ... – ABakerSmith
О, мальчик ... Ты абсолютно прав @ABakerSmith! Пожалуйста, отправьте ответ ниже, чтобы я мог его принять. –
Привет, рад, что отсортировал вашу проблему! – ABakerSmith