목록언어 (22)
Machineboy空
1️⃣ ARKit 정의ARKit은 camera 정보와 관성 시스템(가속도계와 자이로스코프IMU)를 사용해 6Dof 포즈를 추적하는 기술이다!ARKit은 간단한 2D 평면 탐지 기능을 갖춘 VIO 시스템이다. VIO는 공간 내에서 장치의 상대적인 위치(6DOF 포즈)를 실시간으로 추적한다. 에린 팡길리넌 외 지음(2020)ARKit은 애플이 VIO알고리즘을 센서에 가깝게 연동하고 포즈 계산에서 오류와 불확실성을 주리고자 많은 시간을 보정에 할애할 수 있게 했기 때문에 다른 AR들에 비해 우수하다.VIO 관련 개념* 6-DoF Pose (6 degrees of freedom) 6자유도(6DoF)는 강체가 움직일 수 있는 자유의 정도를 표현하는 것.3차원 직각 좌표계에서 운동 물체의 상하 움직임(pitch..
우선 scenekit은 3D 씬에 Node를 추가하는 방식으로 구성되어 있고,RealityKit은 3D 씬에 entity를 추가하는 방식으로 구성되어 있다.기본 단위가 node, entity로 차이가 있다고 보면 되고 자세히 살펴보자! SceneKitRealityKitViewSCNViewARView, RealityView*realityComposer와의 호환StructureSCNNode 기반Entity 기반SceneKit의 구조 (Node기반) RealityKit의 구조 (Entity 기반)실행 View mesh(realityKit), geometry(scenekit): 모양을 설정해주고,RealityKit: material을 씌운 modelEntity를 AnchorEntity에 달아 scene.anch..
RealityKit과 SceneKit의 3D 공간의 좌표계가 어떻게 구성되어 있는지 살펴보자! 기본 개념 : 오른손 좌표계와 왼손 좌표계 ARView에 블렌더로 작업한 .usdz파일을 올렸더니 누워있다.그 이유를 여기에서 밝히겠소.그 이유는 바로(양세찬 tone) 블렌더는 Z-up 오른손 좌표계, RealityKit은 Y-up 오른손 좌표계를 바탕으로 하기 때문이다..이 덕분에 엔진이나 툴 별로 좌표계가 다르다는 것을 알게 되었다.이전까지는 세상 좌표축은 다 같은 줄 알았다. https://machineboy0.tistory.com/219 오른손 좌표계와 왼손 좌표계블렌더에서 Z-Up이라는 것을 최근에 깨달았다..덕분에 블렌더에서 모델링한 파일을 Y-up기반의 엔진에 올리면 누워있다..때문에 엔진이나..
iOS로 AR게임을 만들어보려고 한다.AR을 지원하는 애플의 대표적 프레임 워크 2가지(SceneKit, RealitKit)를 비교하고,같은 기능을 구현하여 테스트 해보겠다! ARKit과 SceneKit VS RealityKit 개요 ARKit정의(scenekit, spritekit, AVFoundation, Vision, UIKit 등의) Umbrella frameworkIntergrate hardware sensing features to produce augumented reality apps.*motion tracking, world tracking, scene understanding 등출시 날짜2017제공 언어Object-C, swift지원 OSiOS, iPadOS, MacOS, vision..
포인터를 직접 사용해야 하는 언어들 즉, 메모리 관리를 직접할 수 있는 언어들. 메모리 관리를 가비지 컬렉터(garbage collector)가 아닌 사용자가 직접해주어야 하는 언어. *가비지 컬렉터(garbage collector): 메모리 영역 중 더 이상 쓰이지 않는 영역을 자동으로 찾아내 해제하는 것 C, C++ 등은 가비지 컬렉터가 없고, 개발자가 직접 필요한 메모리를 예약하고 해제. 이에 사용되는 수단 중 하나가 포인터(pointer). 비유하자면 기다란 집게 같은 것. Unmanaged 언어 정도의 low-level 언어들에서 지원된다. C#같은 언어에서도 포인터를 쓰는 방법이 있지만 권장되지 않는 이유 = 메모리 주소에 직접 접근하는 것은 보안상 해킹 위험 등이 발생할 수 있기 때문 메..
Main메소드 프로그램의 진입점 (Entry Point) *진입점 (Entry Point): 프로그램이 시작되는 첫 번째 코드 프로그램이 실행되면 CLR(Common Language Runtime)은 프로그램을 메모리에 올린 후 프로그램의 진입점을 찾는데, Main()메소드가 없다면 진입점을 찾지 못하고 에러가 난다. 프로그램을 시작하면 실행되고 이 메소드가 종료되면 프로그램도 종료 모든 프로그램은 반드시 Main이라는 이름을 가진 메소드를 하나 가지고 있어야 한다. 각 언어별 엔트리포인트 C#: static void Main(string[] args) {} C++: int main() {}