RealityKit - Ошибка: «перевод» недоступен из-за «внутреннего» уровня защиты.

Я новичок в Swift, я программирую приложение AR с помощью RealityKit для интерфейса приложения и обернутой структуры SwiftUI внутри одного из этих контроллеров представления, поэтому я могу создать собственный интерфейс AR. (Я не знаю, правильный ли это способ сделать это, но, как я уже говорил, я учился сам и сумел это сделать до сих пор).

В любом случае, цель состоит в том, чтобы разместить объекты AR в соответствии с широтой и долготой, заданными пользователем (еще не сделал эту часть, но я тестирую с ручными значениями), хороший подход для достижения этого будет использовать ARGeoTrackingConfiguration() ( из того, что я читал), но поскольку на моем устройстве (iPhone 7) нет чипа A12 Bionic, я не могу его использовать, поэтому я пытаюсь реализовать его с помощью ARWorldTrackingConfiguration(), но пока что я застрял в проблема с «переводом» недоступна из-за «внутреннего» уровня защиты при попытке получить местоположение касания на экране с помощью self.raycast (...). first? .worldTransform.translation

extension ARView {

    @objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
    
        guard let touchInView = sender?.location(in: self) else {
            print("Failed on touch")
            return
        }
    
        let results = self.raycast(from: touchInView, 
                               allowing: .estimatedPlane, 
                              alignment: .horizontal)
        print(results)
    
        if let firstResult = results.first {
            let anchor = ARGeoAnchor(name: "pinus_pinaster.usdz", 
                           coordinate: firstResult.worldTransform.translation)
            self.session.add(anchor: anchor)
        } else {
            print("Object placement failed - coudn't find surface")
        }       
    }
}

Какие-нибудь объяснения того, как решить эту проблему (пример было бы неплохо)?

Кроме того, какие-либо общие советы по разработке ARKit, можно ли реализовать приложение с этими функциями без ARGeoTrackingConfiguration ()?


person bravemoon    schedule 07.06.2021    source источник
comment
Xcode также дал мне это сообщение ... 1. Здесь объявлен «перевод» (RealityKit.simd_float4x4 (internal))   -  person bravemoon    schedule 07.06.2021


Ответы (1)


  1. Попробуйте использовать public уровень доступа вместо internal:

     extension ARView { 
    
         @objc public func handleTap(_ sender: UIGestureRecognizer) { }
     }
    
  2. Нет смысла использовать ARGeoAnchors без запуска ARGeoTrackingConfiguration().

person Andy Fedoroff    schedule 07.06.2021