apple/VisionOS, ARKit 7

[ARKit] #7 frameSemantics

# frameSemantics 프레임에서의 활성화된 semantic의 집합 : 쉽게 말하자면 사람이 있을때 물체를 가상 물체를 어떻게 보여질건지를 결정 var frameSemantics: ARConfiguration.FrameSemantics { get set } - ARConfiguration.FrameSemantics: 앱에서 사용할 수 있는, 선택적인 프레임 기능 - 하나의 frameSemantic은 ARKit이 프레임에서 추출하는 2D 정보를 나타냄. - 2D에서 신체(body)를 추적하는 법 static var bodyDetection: ARConfiguration.FrameSemantics // 2D에서 신체 감지가 활성화 되었음을 나태내는 옵션 카메라 영상에서 ARKit이 인식하는 신체의 ..

[ARKit] #6 ARKit in iOS

ARKit in iOS iOS 디바이스 카메라 모션 기능 등 우리의 앱에서 증강 현실 경험을 생성하는 방법에 대해서 알아보자. # 장치 권한 확인(Verifying Device Support and User Permission) - 앱이 ARKit을 사용할 수 있고, 사용중에 그 권한이 있는지 확인해야 한다. - ARKit은 iOS 11.0 이상 그리고 A9 프로세서 이상이 필수적임. 몇몇 ARKit 기능들은 더 특정 디바이스의 더 최신버전이 필요함. ARKit은 또한 디바이스의 카메라를 사용하고, 그래서 iOS의 privacy 권한을 유저로부터 허용받아야 함. 장치의 호환성을 우리가 다루는 방법을 ARKit을 우리가 어떻게 사용하냐에 따라 다름. - 만약 후면 카메라를 이용한 AR의 기본적인 기능만 사..

[SceneKit] #5 SCNSceneRendererDelegate

SCNSceneRendererDelegate SceneKit의 애니메이션 루프에 들어가거나 추가적인 렌더링을 수행하기 위해 앱에서 구현할 수 있는 메서드. protocol SCNSceneRendererDelegate SceneKit으로 게임 또는 앱을 빌드하려면 SCNView 객체 또는 SCNSceneRender 프로토콜을 사용하여 scene에 보여줄 수 있다. 그런 다음 프레임당 게임 로직을 추가하거나 SceneKit이 scene을 렌더링하기 전이나 후에 사용자가 지정한 Metal 또는 OpenGL 렌더링을 수행하려면 SCNSceneRendererDelegate 프로토콜을 구현한다. SCNView 객체 혹은 SceneKit 렌더러에서 scene이 렌더링될때 렌더링 루프는 scene을 아래의 과정을 통해..

[SceneKit] #4 SCNAction

SCNAction 시작하기 전 간단정리 SceneKit에서 명시적 애니메이션: Core Animation SceneKit에서 암시적 애니메이션: SCNTransaction SCNAction은?: 그룹핑, 시퀀스, 싱글 등 조합 가능. 연결한 모든 노드의 속성을 변경하는 간단하고 재사용 가능한 애니메이션. class SCNAction : NSObject SCNNode액션 이 연결된 객체의 구조와 내용을 변경하기 위해 액션을 사용하지만 액션을 사용하여 scene에 다른 변경을 줄 수 있음. SceneKit에서 액션은 사용자 입력에 따라 자주 변경되는 애니메이션 동작을 구현하는 쉬운 방법을 제공함. # Working with Actions action을 생성하기 위해서는 action과 관련이 있는 메서드의 클..

[SceneKit] #3 Animating SceneKit Content

#3 Animating SceneKit Content 내가 만든 지오메트리들에 이벤트나 애니메이션 등도 사용할 수 있다. # Base Code 일단 기본코드는 이렇게 여기서 하나하나 추가해보자. func make_image_control() { let scene = SCNScene() arSceneView.scene = scene // 카메라 생성 let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 5) scene.rootNode.addChildNode(cameraNode) // Capsule 생성 및 추가 let capsuleGeometry = SCNCapsule(..

[SceneKit] #2 Geometry 다뤄보기

#2 Geometry 다뤄보기 Geometry 다뤄보기 - 들어가기 전 간단정리 - Geometry: 우리가 원하는 어떤 물체 (ex. 정육면체, 구 등) - Material: 지오메트리 표면에 어떤 효과를 주는것 (ex. 이미지 넣기, 색 넣기 등) - Node: ARSceneView화면에 Geometry를 추가할건데, Node를 통해 좌표를 주어 넣을때 사용. # SCNGeometry 클래스 material이 정의된 표면에 Scene에 표시할 수 있는 3차원 모양(model 또는 mesh라고도 부름) SceneKit에서 SCNode 객체에 연결된 지오메트리는 Scene의 Visible 요소를 구성하며, 지오메트리에 연결된 SCNMaterial 객체는 그 모양을 결정합니다. # Working with ..

[ARKit] #1 ARKit 시작하기

#1 ARKit 시작하기 VisionOS를 공부하면서 ARKit부터 차근히 쌓아야 할 것 같아서 정리합니다. # 프로젝트 환경 - Xcode 15.0 beta 3 - iOS 17.0 + - UIKit - SnapKit, RxSwift # 프로젝트 생성 SwiftUI와 UIKit중 UIKit으로 구성 UIKit 자료가 더욱 풍부하며 UIKit으로 학습해도 추후에 SwiftUI로 뷰만 래핑해서 사용하거나 혹은 SDK형태로 기능 구현을 유지한 채 SwiftUI로 UI만 다시 작성할 수 있기에 학습 측면에서 UIKit이 더 낫다는 판단. # 프로젝트 파일 설명 import UIKit import SceneKit import ARKit class ViewController: UIViewController, ARS..