#swift #arkit #realitykit
Вопрос:
Используя raycast и жест касания, я успешно разместил несколько объектов (сущность и якоря) в своем arview
.
Теперь я пытаюсь получить entity
то, что ближе всего к США, используя центр экрана, чтобы разместить объект рядом с ним. Таким образом, мы можем представить, что каждый раз, когда якорь находится близко к центру экрана телефона, «появляется»новый объект
Для этого я пытаюсь использовать raycast
, но мой код :
func session(_ session: ARSession, didUpdate frame: ARFrame) {
//
if let hitEntity = arView.entity(
at: self.arView.center
) {
print("hitEntity IS FOUND !")
print(hitEntity.name) // this is the object I previously placed
guard let result = arView.raycast(from: self.arView.center, allowing: .estimatedPlane, alignment: .any).first else { return }
// here result is the surface behind/below the object, and not the object I want
return;
}
}
result
триггер на поверхности, но мне не удается получить преобразование мира объекта (сущности), а не поверхности позади.
У тебя есть идея ?
Спасибо
Ответ №1:
Чтобы получить мировую форму сущности, вы можете позвонить hitEntity.position(relativeTo: nil)
.
Если я неправильно понимаю ваш вопрос, это тоже может помочь:
Чтобы получить положение result
относительно локального пространства объекта, вы можете позвонить hitEntity.convert(position: result.worldTransform, from: nil)
Преобразование-это очень полезный метод в RealityKit. Существует несколько различных методов, но вот документация для того, который я добавил выше:
https://developer.apple.com/documentation/realitykit/hastransform/3244194-convert/
Я надеюсь, что один из них поможет вам!