Как исправить ошибку MakeRenderPipelineState failed в RealityKit / ARKit?

Я пытаюсь изучить мировые привязки, но не могу поместить объект в касание. При запуске появляется следующая ошибка:

2020-02-12 11:06:20.027274+0000 Project[8336:1778069] Metal GPU Frame Capture Enabled
2020-02-12 11:06:20.027756+0000 Project[8336:1778069] Metal API Validation Enabled
2020-02-12 11:06:20.428611+0000 Project[8336:1778069] Compiler failed to build request
2020-02-12 11:06:20.428933+0000 Project[8336:1778069] [Graphics] makeRenderPipelineState failed [output of type ushort is not compatible with a MTLPixelFormatR16Float color attachement.].
2020-02-12 11:06:20.428995+0000 Project[8336:1778069] [Graphics] makeRenderPipelineState failed.

Приложение загружается нормально, но я считаю, что отказ makeRenderPipelineState может быть тем, что меня сдерживает. Я попытался найти ошибку в Интернете, но, похоже, ни одна из них не связана с тем, что находится в моем коде. Есть идеи, как это исправить или в чем может быть проблема? Ваше здоровье.

Код:

//
//  ViewController.swift
//  Project
//
//  Created by Callum King on 11/02/2020.
//  Copyright © 2020 Callum King. All rights reserved.
//

import UIKit
import RealityKit
import ARKit

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)



        setupARView()

        arView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:))))


    }

    //MARK: Setup Methods

    func setupARView(){
        arView.automaticallyConfigureSession = false
        let configuration = ARWorldTrackingConfiguration()
        configuration.planeDetection = [.horizontal, .vertical]
        configuration.environmentTexturing = .automatic
        arView.session.run(configuration)

    }

    //MARK: Object Placement

    @objc
    func handleTap(recognizer: UITapGestureRecognizer) {
        let location = recognizer.location(in: arView)

        let results = arView.raycast(from: location, allowing: .estimatedPlane, alignment: .any)

        if let firstResult = results.first {
            let anchor = ARAnchor(name: "toy_robot_vintage", transform: firstResult.worldTransform)
            arView.session.add(anchor: anchor)
        } else {
            print("ERROR: SURFACE NOT FOUND")
        }
    }

    func placeObject(named entityName: String, for anchor: ARAnchor) {
        let entity = try! ModelEntity.loadModel(named: entityName)

        entity.generateCollisionShapes(recursive: true)
        arView.installGestures([.rotation, .translation], for: entity)

        let anchorEntity = AnchorEntity(anchor: anchor)
        anchorEntity.addChild(entity)
        arView.scene.addAnchor(anchorEntity)
    }
}

extension ViewController: ARSessionDelegate {
    func session(_ session: ARSession, didAdd anchors: [ARAnchor]) {
        for anchor in anchors {
            if let anchorName = anchor.name, anchorName == "toy_robot_vintage" {
                placeObject(named: anchorName, for: anchor)
            }
        }
    }
}

person mrcallumking    schedule 12.02.2020    source источник


Ответы (1)


У вас в схеме включено "AR Replay Data"? Я получаю ту же ошибку при попытке воспроизвести контент из Reality Composer и только при создании экземпляра ARView.

person matt brisbin    schedule 13.02.2020
comment
Изучите возможность комментирования как способа запросить ценную информацию. Таким образом, другие могут присоединиться к делу и рассказать о них, а мы стараемся, чтобы вопрос оставался как можно более лаконичным. - person Vexy; 13.02.2020