Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] SceneKit의 사용법 (3) - 카메라 줄자, 거리 측정하기
Xcode/Framework 2023. 1. 10. 00:03

시작 오늘은 SceneKit으로 카메라를 통한 줄자를 만들어 보겠습니다. 간단히 설명할 예정이라 자세한 내용은 이전 글을 참고하시길 바랍니다. SceneKit의 사용법 (1) - 정육면체와 달을 만들어 보자 SceneKit의 사용법 (2) - 주사위 만들기 화면의 위치 얻기 touchesBegan 메서드를 통하여 터치한 화면(2D 공간)에서 실제 카메라에 비치는(3D 공간) 좌표를 구해봅시다. raycastQuery를 통하여 터치 시 그 공간 좌표정보를 요청한 뒤, raycast로 만든 쿼리값(좌표정보 요청)을 넣어준 뒤 결괏값으로 변환시켜서 좌표 정보를 얻을 수 있습니다. override func touchesBegan(_ touches: Set, with event: UIEvent?) { resetD..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (2) - 주사위 만들기
Xcode/Framework 2023. 1. 8. 16:57

시작 오늘은 SceneKit으로 주사위 생성 및 굴리기를 해봅시다. 순서는 이전에 만든 Cube와 달 만들기와 거의 동일하니 못 보셨다면 여기를 참고하세요. 바로 시작하겠습니다. 주사위로 사용할 모델 다운 받기 모델을 모아둔 홈페이지입니다. (유료, 무료) 검색을 통하여 원하는 모델 검색 → Formats에서 확장자 .dae(Collada) 선택 -> 다운로드 시 Collada폴더만 다운로드하면 됩니다 dae파일은 ScencKit과 호환이 되며 실제 scn파일로 변환이 가능합니다. 3D Models for Professionals :: TurboSquid Buy 3D models for your project from our vast online catalog of cars, people, texture..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (1) - 정육면체와 달을 만들어 보자
Xcode/Framework 2023. 1. 7. 19:19

시작 AR 주사위 던지는 앱을 만들기 앞서 이해를 돕기 위해 들어가기 앞서 간단한 Cube(정육면체)와 Shpere(구)를 만들어 봅시다. 처음 생성하기 iOS -> Augmented Reality App 선택 Content Technology : SceneKit을 선택해 줍시다. Art.scnassets 객체의 이미지 및 재질의 설정을 위한 공간입니다. 기본적으로 폴더에 ship.scn과 texture.png파일이 생성이 됩니다. ship.scn은 파일은 객체를 만들 때 사용이 되고 texture.png는 재질 설정을 할 때 사용이 됩니다. 참고: 확장자 .dae와 .scn는 서로 변환이 가능하다 여기 설정 중 Node와 Material에 대하여 간단히 설명드리겠습니다. Node 란 Node는 기본적으..

article thumbnail
[iOS/Swift] ARKit의 종류
Xcode/Framework 2023. 1. 7. 18:10

ARKit (증강 현실) 증강현실(Augmented Reality) 카메라를 통하여 라이브뷰에 2D 또는 3D 요소를 추가하여 실제 세계에 있는 것처럼 보이게 하는 사용자 경험 말합니다. 즉. 현실 세계에서 가상의 물체를 집어넣어 마치 현실과 가상현실이 병합되게 만드는 것이죠. (ex. 인스타 3D 스티커, 포켓몬 고, 모션 캡처 등) ARKit을 사용하기 앞서 요구사항이 존재합니다. 특정 하드웨어가 필요하며, 더 구체적으로 해당 하드웨어는 A9 칩 이상 필요하다. (A9 또는 A10 칩 …) 따라서 장치로 보면 기본적으로 iPhone 6 이후에 출시된 모든 것을 의미합니다. (iPhone SE, 6s, 6s Plus 등) ARKit의 종류 RealityKit (3D 기반) SceneKit (3D 기반)..

article thumbnail
[iOS/Swift] 속성(Properties)의 종류
Xcode/Swift 문법 2023. 1. 4. 23:44

속성(Properties)의 종류 크게 5가지로 나눌 수 있습니다. 저장 속성 - Stored Properties 지연 저장 속성- Lazy Stored Properties 계산 속성 - Computed Properties 타입 속성 - Type Properties 속성 감시자 - Property Observer 저장 속성(Stored Properties) 값이 저장되는 일반적인 속성. 이 자체가 메모리 공간을 갖습니다. 변수(var)나 상수(let)로 선언 가능합니다. 선언 class Person { let name: String = "Daniel" var age: Int = 30 } let daniel = Person() daniel.name // "Daniel" daniel.age // 30 지연 ..

article thumbnail
[iOS/Swift] 속성 감시자 (Observed Properties)
Xcode/Swift 문법 2023. 1. 4. 21:29

속성 감시자 (Observed Properties) 값이 변경될 때 관찰하고 이를 willSet, didSet으로 수행하게 됩니다. 순서는 willSet : 값이 저장되기 직전에 호출됩니다. didSet : 새 값이 저장된 직후에 호출됩니다. 보통 Model의 변경사항을 View에 반영하고자 할 때 사용합니다. 선언 기본적으로 속성 감시자는 초기값이 필요합니다. 만약 초기값을 정해주지 않으면 생성자를 통해서 초기화해야 됩니다. var observer: String = "속성감시자" { willSet { // 바뀔 값이 파라미터로 전달 // 기본적으로 willSet(newValue)으로 구현이 되어있다. } didSet { // 바뀌기 전의 과거값이 파라미터로 전달 // 기본적으로 didSet(oldVal..

article thumbnail
[iOS/Swift] CoreML (2) - 훈련 된 Model 사용하기
Xcode/Framework 2023. 1. 4. 14:49

CoreML의 특징 이전 글 [iOS/Swift] CoreML (1) - Create ML으로 Model 만들기 에서도 이미 정리를 했지만 대략적으로 핵심만 알아봅시다. 사전에 훈련된 모델로 로드됩니다. (Static Model) 네트워크 연결 없이도 사용이 가능합니다. 보안 측면에서 개인 데이터를 네트워크를 통해 전송할 필요가 없으므로 상대적으로 안전합니다. 수요가 증가해도 서버부하와 직접적인 관련이 없어 확장성이 좋습니다. Apple 기기와의 빠른 호환성이 좋습니다. 사용 방법 오늘 만들어 볼 것은 이전 글 의 훈련된 이미지 모델(꽃 이름)을 갖고 CoreML 및 Vision 사용법을 알아보겠습니다. 간단히 소개하면 카메라를 통하여 훈련된 모델(꽃 이름)을 유추하는 앱을 만들어 보겠습니다. 1. C..

article thumbnail
[iOS/Swift] CoreML (1) - Create ML으로 Model 만들기
Xcode/Framework 2023. 1. 3. 18:09

머신러닝이란 “머신러닝”이란 무엇일까요? 직역을 해보면 “기계가 배운다”라는 의미로 해석이 됩니다. 과거에는 인공지능을 개발할 때 해당 분야의 전문가들이 만든 많은 양의 샘플들을 데이터 베이스화 하여 자료들을 일일이 수작업으로 컴퓨터에 직접 등록하는 방법을 사용했습니다. 하지만 이런 방법은 대부분의 작업이 사람의 손을 거쳐야 하므로 필연적으로 많은 시간과 노력, 비용이 발생하게 됩니다. 또한, 시대가 발전함에 따라 사람조차 명확하게 구분할 수 없는 지식을 구현해야 하거나, 사람이 일일이 구현하기에는 너무 많은 양의 규칙들이 필요한 경우가 생겨나기 시작합니다. 이러한 경우에 사용할 수 있도록 고안된 방법이 머신러닝(Machine Learning)입니다. 머신러닝 작업 흐름 훈련단계 목표정의 -> 데이터 ..

article thumbnail
[Git/GitHub] Git 사용법
Etc. 2022. 12. 29. 16:10

기본 명령어 모든 명령에서 '' 는 제거하고 입력해주세요. 명령창에서 한번에 모든 단어를 지우려면 'control' + 'u' 를 사용 git init // 깃을 생성 git status // 상태 확인. commit 할 파일이 있나 보여줌 git log // commit 내용을 보여줌 git log --oneline // 한 줄씩 깔끔하게 commit 내용을 보여줌 git diff // 변한 것을 보여줌 git config --list // 깃 설정 리스트 보기 git config --unset // 설정 지우기 (list확인 후 "=" 전까지가 이름) git remote set-url origin // 깃 리모트 url 변경 rm -rf .git // 깃 파일 삭제(삭제할 폴더로 들어가서 사용) Ad..

article thumbnail
[iOS/Swift] Class와 Struct
Xcode/Swift 문법 2022. 12. 28. 23:24

Class와 Struct는 프로퍼티와 메서드를 다룰 수 있는 틀입니다. propert == 속성, method == 함수 Class & Struct 객체를 찍어내는 틀(설계도, 청사진 등)이라고들 합니다 인스턴스: 설계도의 복제본. 즉, 인스턴스(객체, 실제 데이터)는 틀에서 찍어낸 결과물을 인스턴스라고 합니다. (인스턴스는 실제로 메모리에 할당되어 구체적 실체를 갖춘 것이라는 의미입니다.) 특별히 클래스에서는 인스턴트를 객체(object)라고 부릅니다. 초기화(init)나 이름 뒤에( ) 실행문으로 인스턴스의 생성을 할 수 있습니다. Class & Struct의 차이점 가장 큰 차이는 메모리 저장 방식의 차이입니다. 들어가기 앞서 간단히 메모리 구조가 뭔지 알아봅시다. 코드(Code) : 순차적으로 한..

article thumbnail
[iOS/Swift] 접근 제어(Access Control)
Xcode 2022. 12. 27. 20:29

코드의 세부 구현 내용을 숨기는 것이 가능하도록 만드는 개념 (객체지향의 은닉화가 가능해짐 ) 개념 코드의 영역을 분리시켜, 효율적으로 관리가 가능합니다. class SomeClass { private var name = "이름" // 외부에서 접근불가 하도록 제한 (private 키워드) "은닉화" func nameChange(name: String) { self.name = name } } let object1 = SomeClass() // 인스턴스의 프로퍼티에 접근이 불가합니다. //object1.name = "홍길동" // 이름을 속성을 바꾸려면 특정 메서드로 변경은 가능하죠. object1.nameChange(name: "Danny") 기본 원칙: “타입(Type)” 보다 낮은 수준의 접근제어는..

article thumbnail
[iOS/Swift] 고차함수
Xcode/Swift 문법 2022. 12. 27. 18:25

“함수”를 파라미터로 사용하거나 “함수”를 리턴합니다. 각 데이터를 클로저로 보내 작업을 시킵니다. map 함수 기존 배열의 각 Element를 새롭게 매핑해서 새로운 배열로 리턴하는 함수 (데이터를 변형할 때 사용합니다) var numbers = [1, 2, 3, 4, 5] var mapping = numbers.map { n in return "숫자: \(n)" } var numMapping = numbers.map { $0 * 5 } String형도 일종의 배열(데이터바구니)입니다. String형의 map함수는 각각의 값을 Character형으로 변환시킨 후 배열로 반환합니다. str = "1" + "2" + "3" + "4" + "5" 이렇게 각각의 element들을 뽑아서 배열로 만들 수 있습니..

article thumbnail
[iOS/Swift] inout 파라미터
Xcode/Swift 문법 2022. 12. 27. 16:43

inout 파라미터 함수의 파라미터는 기본적으로 값타입입니다. 파라미터는 임시 상수(let)이기 때문에 변경 불가능 하죠. 그러므로 아래와 같이 전역변수를 함수 안에서 그냥 변경할 순 없습니다. var firstInt = 10 var secondInt = 20 func swap(_ a: Int, _ b: Int) { var temp = a a = b b = temp } swap(firstInt, secondInt) // error: Cannot assign to value: 'a' is a 'let' constant // error: Cannot assign to value: 'b' is a 'let' constant 만약 inout 파라미터를 사용한다면 inout 파라미터는 함수 내에서 변수를 직접 변..

article thumbnail
[iOS/Swift] 타입에일리어스(typealias)
Xcode/Swift 문법 2022. 12. 27. 00:24

Type Alias 사용자가 원하는 이름으로 타입 이름을 만들어 줄 수 있습니다. 즉, 타입의 별칭, 약칭입니다. 가독성 상승. 새로운 타입으로 변경이 아니라 기존 타입의 역할만 해줍니다. 표현식 // 이름에서 첫 글자는 대문자 사용 typealias (사용할 이름) = (설정할 타입) // ex typealias NetworkService = Result typealias Calculator = (Double, Double) -> Double 사용법 간단하게, ThreeStr이라는 이름으로 3개의 String을 타입을 갖고 있는 튜플을 만들어 봤습니다. typealias ThreeStr = (String, String, String) let box: ThreeStr = ("과자", "인형", "Mac"..

article thumbnail
[iOS/Swift] “ = “ 의미
Xcode/Swift 문법 2022. 12. 26. 23:16

의미 오른쪽에 있는 데이터 값을 왼쪽의 데이터 공간에 저장한다. (담는다) var a = 1 var b = a + 7 // 1이란 데이터를 a라는 공간에 저장한다.(담는다) // a + 7란 데이터를 b라는 공간에 저장한다.(담는다) 서로 같다는 뜻이 아닙니다. 같다는 '== , 같지 않다는 '!=' 를 사용해야 합니다.

반응형