Realitykit - Пользовательский материал

Используя Realitykit, пытаясь изменить материал лунной сущности на пользовательский .jpg, а затем касаясь экрана, чтобы создать этот объект на основе hitTest. Ничего не отображается, когда я нажимаю и получаю следующую ошибку при отладке: [Столкновение] Плохой параметр (SphereRadius), значение = 0,000000, передано в создание формы.

import UIKit
import RealityKit

class ViewController: UIViewController {

    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            if let touchLocation = touches.first?.location(in: arView){
                let hitTest = arView.hitTest(touchLocation)
                if let hitResult = hitTest.first {
                    addObject(at: hitResult)
                }
            }
        }

        func addObject(at hitResult: CollisionCastHit) {
            let moonAnchor = try! Galaxy.loadWorld()
            let moon = moonAnchor.moon! as! ModelEntity
            var material = SimpleMaterial()
            material.baseColor = try! MaterialColorParameter.texture(TextureResource.load(named: "8k_moon.jpg"))
            moon.model?.materials = [material]
            moon.position = SIMD3(x: hitResult.position.x, y: hitResult.position.y, z: hitResult.position.z)
            arView.scene.addAnchor(moonAnchor)
        }

}

person Lawlitrix    schedule 01.06.2020    source источник
comment
Можете ли вы предоставить больше вашего кода? Основываясь на ошибке, я бы подумал, что проблема в модели, а не в текстуре.   -  person iicaptain    schedule 06.06.2020
comment
@iicaptain Привет, спасибо за ответ. Только что обновил код, который содержит все во ViewController. Не трогал другие файлы Realitykit. Лунная сущность, которую я пытаюсь загрузить, взята из файла RCProject от Reality Composer.   -  person Lawlitrix    schedule 07.06.2020
comment
У меня точно такая же проблема. Это не похоже на модель, поскольку я пробовал несколько разных моделей из разных источников.   -  person vfxdev    schedule 03.07.2020


Ответы (2)


Я столкнулся с этой ошибкой при попытке проверить объект без CollisionComponent. Для проверки попадания требуется компонент CollisionComponent для целевых сущностей:

Метод игнорирует объекты, у которых отсутствует CollisionComponent. https://developer.apple.com/documentation/realitykit/arview/3243230-hittest

Если это проблема, и поскольку ваша модель загружается из Reality Composer, решением может быть установка флажка «Участвует» в разделе «Физика» RC.

person Rick Free    schedule 16.07.2020
comment
Это правильно. И ошибка кажется внутренней ошибкой RealityKit. Я получаю это везде, где нажимаю. И, лол, там орфографическая ошибка ... параметр :)) - person Danil Kurilo; 29.08.2020
comment
Я получаю эту ошибку каждый раз, когда вызываю hitTest / entity / entity, если на экране есть какие-либо элементы или даже если их нет! - person YanivH; 31.08.2020
comment
Я получаю ту же ошибку, даже если на экране нет сущностей: - / - person Chris; 07.12.2020
comment
Я получаю эту ошибку на своем iPhone XS, но не на моем iPhone 6s Plus. - person Chris; 07.12.2020

В моем случае я забыл инициализировать привязку в hitResult:

let anchor = AnchorEntity(world: transform)
person Azade Rahmati    schedule 28.06.2021