본문 바로가기
IOS

RealityKit - ARView, Entity

by eigen96 2024. 2. 3.
728x90

RealityKit is…

ARKit 위에 구축된, 증강 현실을 위한 고수준 프레임워크.

자체적인 ARView를 사용하여 AR 콘텐츠를 표시하며, 이 ARView는 내부적으로 ARSession을 사용하여 ARKit과 통신한다.

ARView

RealityKit에서 AR 경험을 제공하기 위해 사용되는 뷰이다.

  • 뷰는 단일 Scene 인스턴스를 가지며, Scene 인스턴스에는 실제 세계의 어떤 것에 콘텐츠를 고정시키는 AnchorEntity 인스턴스를 추가할 수 있다.
  • 각 AnchorEntity에는 Scene의 컨텐츠를 구성하는 Entity, Entity 계층이 추가될 수 있다.

 

 

 

Entity

RealityKit에서는 Scene 내의 모든 요소가 Entity라는 단 하나의 클래스에서 파생된다.

Entity는 여러 면에서 SceneKitSCNNode의 새로운 대안으로 볼 수 있다고 한다.

Entity 인스턴스를 생성하고 ARView와 연결된 Scene 인스턴스에 추가하는 방식으로 실제세계에 객체를 배치한다.

 


예시 코드

  1. 생성한 상자 Entity를 앵커 엔티티 자식으로 추가
  2. arView.scene.addAnchor()
    ARScene에 AnchorEntity 추가.

 

결과

 

궁금증

Entity 는 HasHierarchy 프로토콜의 구현체라는 것을 위에서 확인하였다.

동시에  HasHierarchy 프로토콜은 Entity를 상속받는다.

지금까진 프로토콜이 클래스를 상속받는 구조를 생각해본 적이 거의 없다.

이것은 HasHierarchy 프로토콜이 Entity의 기능을 요구하며, Entity 타입만이 HasHierarchy를 구현할 수 있음을 의미한다.

다른 타입의 클래스는 HasHierarchy의 구현체가 될 수 없다. 

Scene 내의 모든 요소가 Entity라는 단 하나의 클래스로부터 파생된다고 하였으므로, 모든 것을 일관되게 처리하려고 이런식으로 제한을 둔 것 같다.

 

728x90

댓글