2015-04-29 3 views
0

У меня есть простой метод обнаружения касания, который должен изменить цвет касающегося узла.Материал 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) 

Вот пара скриншотов о том, как меняется цвет после касания коробки. Шаблон мерцает и изменяется при каждом повороте.

enter image description here enter image description here

Что является причиной этого странного рисунка цвета? Я просто хочу, чтобы он оставался сплошным цветом.

+0

Похоже, у вас может быть одна коробка внутри другого ... – ABakerSmith

+0

О, мальчик ... Ты абсолютно прав @ABakerSmith! Пожалуйста, отправьте ответ ниже, чтобы я мог его принять. –

+0

Привет, рад, что отсортировал вашу проблему! – ABakerSmith

ответ

1

Мне кажется, что у вас есть два узла внутри друг друга - количество ящиков не совпадает с номером, указанным в вашем вопросе.

Смежные вопросы