기본 구조와 기본 Object 생성하기
WWDC의 가장 기초적인 설명
Building Apps with RealityKit - WWDC19 - Videos - Apple Developer
Gain a practical understanding of RealityKit capabilities by developing a game using its easy-to-learn API. Learn the recommended...
developer.apple.com
ARView → Scene → Anchor → Entity의 구조
기초적인 AR 가상 객체 생성 흐름
- ARView를 생성한다 (Scene이 내부 속성{ 클래스 }에 존재함)
- scene 내부에는 anchors가 인스턴스가 존재함
- anchor를 설정한다 ⇒ AnchorEntity라는 클래스를 생성
- Model (AR에서 볼 가상 오브젝트)를 생성한다.
- anchor에 Model을 추가한다.
- arView 내부 scene 내부 anchors에 생성한 anchor를 추가한다.
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero) // class 인스턴스
let anchor = AnchorEntity(plane: .horizontal) // class 인스턴스
let text = ModelEntity(mesh: MeshResource.generateText("Hello world!!",extrusionDepth: 0.1),
materials: [material])
text.position = simd_make_float3(0.0, 0.2, 0.0)
anchor.addChild(text)
arView.scene.anchors.append(anchor)
return arView
}
기초 컴포넌트 정리
- ARView
UIKit 혹은 SwiftUI에서 RealityKit(3D Render 화면과 카메라 접근)을 연결하기 위한 Wrapper
- 3D Rendering 옵선을 설정하고, 플랫폼에 맞는 (아이폰, 아이패드) 상호작용 처리
- 주어진 뷰에서의 Entity 찾기
- 디버깅 시각화에 도움
주요 구성 속성들
-
- scene: Scene → AR 객체들을 관리하는 컨테이너 Class instance
- session: ARSession → 뷰 렌더링 설정하는 Class instance
- environment: ARView.Environment → 뷰의 배경, 조명, 음향 속성을 관리하는 구조체 instance
- cameraMode: Enum → 카메라를 켤지 말지 구성되어있는 열거형 instance
- cameraTransform: Transform → 카메라의 각도나 배율 등의 정보를 getter 할 수 있는 instance
- Entity
RealityKit Scene에 포함되는 모든 요소들이 갖는 기본적인 컴포넌트 Unity의 GameObject와 비슷하다.
💡 ModelEntity와 AnchorEntity는 파생된 하위 클래스, 하지만 RealityKit 구조에선 상위 계층에 속함
- AnchorEntity
- Scene에서 카메라가 인식한 현실의 타겟 (테이블, 바닥면)을 기준점으로 설정하게 만드는 컴포넌트
=> 이 기준점 아래에 다른 Entity들을 배치시킨다.
- Scene에서 카메라가 인식한 현실의 타겟 (테이블, 바닥면)을 기준점으로 설정하게 만드는 컴포넌트
- ModelEntity
- 3D 모델들을 RealityKit에 맞게 설정하게 도와주는 컴포넌트 (클래스)
주요 속성들
- var model: ModelComponent? → 3D 모델링 객체와 관련된 Structure Instance
⇒ ModelComponent 내부의 주요 속성들- mesh: MeshResource
- materials: [Material]
- jointNames: [String] → Model이 갖고 있는 관절들의 이름들 (Getter)
- jointTransforms: [Transform] → Model이 갖고 있는 관절들의 Transform들 정보 ⚠️ 변경가능
- var collision: CollisionComponent? → 충돌을 감지하는데 도와주는 Structure Instance
- var physicsBody: PhysicsBodyComponent? → 물리 동작을 정의하는 Structure Instance
⇒ 객체가 다른 객체와 상호작용하는 데 필요한 물리적 특성을 정의하는 데 사용
⇒ 물체의 질량, 모멘트, 속도 등을 설정- var physicsMotion: PhysicsMotionComponent? → 물리 움직임을 정의하는 Structure Instance
⇒ 사용자 입력에 따라 객체를 움직이게 하거나, 애니메이션과 상호작용해 운동을 조작하는 데 사용
- var physicsMotion: PhysicsMotionComponent? → 물리 움직임을 정의하는 Structure Instance
- Mesh → 3D 모델의 실제 모델링 + 와이어프레임, 애니메이션(동작) 을 구성한 속성
⇒ 점성 (슬라임 같은 물리 속성을 갖는지 설정되어있음)
⇒ usdz 파일, obj파일 같은 것들 - Material → 3D 개체의 외관을 결정하는 속성
- ⇒ 빛 반사율, 빛 투과율, 매트한 느낌, 금속 재질 등을 포함한다.
- ⇒ 텍스쳐는 안에 포함되어 있는 구성요소 중 하나이다.
- Textrue < Material
- 나무 테이블을 만들려 할 때:
- 텍스쳐는 나무의 패턴과 이미지
- 머터리얼의 속성에 따라 유광으로 칠한 느낌을 줄 수 있다.
'RealityKit & ARKit' 카테고리의 다른 글
RealityKit - 기본 머터리얼과 텍스쳐 (0) | 2023.08.08 |
---|---|
RealityKit - 기본 Interaction과 외부 모델 (0) | 2023.07.29 |
댓글