Swiftでプロパティ監視(willSet/didSet)
Swiftで変数の変更を監視するには「willSet/didSet」を使います。
プロパティ監視はsetterやgetterなどのプロパティ代入とは違い、プロパティの変更時に呼ばれます。
プロパティ変更前に呼ばれるのは「willSet」、変更後に呼ばれるのが「didSet」になります。
var prop:Int = 0 { willSet{ //プロパティ変更前に通知される print(prop) } didSet{ //プロパティ変更後に通知される print(prop) } }
超簡単SwiftのInterfaceBuilderでジェスチャー取得
SwiftのInterfaceBuilderを使えばタップやスワイプなどジェスチャーを簡単に取得できます。
【手順】
①ライブラリからViewのストーリーボード へTapGestureRecognizerオブジェクトをドラッグドロップ
②ViewController.swiftに@IBActionでタップ関数を作成
@IBAction func tap(_ sender:UITapGestureRecognizer) { print("tap") }
③作成したタップ関数を先程配置したTapGestureRecognizerにアタッチ
以上の手順でタップ関数が実行されます。
ARKitでカメラの位置を取得する
ARKitでカメラの位置を取得する方法です。
ARSCNView.sessionのデリゲート(ARSessionDelegate)をViewController自身に設定します。
sceneView.session.delegate = self
セッションのイベントにアクセスしてフレームからカメラを取得出来ます。
func session(_ session: ARSession, didUpdate frame: ARFrame) { let currentCamera = session.currentFrame?.camera let transform = currentCamera?.transform
SceneKitで3Dシーンを作成「SceneKit Scene File(.scn)」
SceneKitではSceneKit Scene File(scn)を新規作成することでシーンを作成できる。
シーンでは3Dオブジェクトの配置などがエディタ上で可能。 作成したシーンファイルは下記ソースでARSCNViewに配置できます。
let scene = SCNScene(named: "ship.scn")! sceneView.scene = scene
【ARKit】ARSCNDebugOptionsで特徴点と座標軸を表示する
CoreML開発に特徴点もしくは座標軸を表示する方法を紹介します。
ARSCNDebugOptionsを設定します。
特徴点を表示するにはshowFeaturePoints、
座標軸を表示するにはshowWorldOrigins。
下記は両方表示するコードです。
self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints, [f:id:frmski:20180916134530p:plain]ARSCNDebugOptions.showWorldOrigin]
←特徴点 ←座標軸
CoreML + ARKit【調査編】
CoreMLの調査のためApple公式のドキュメントを調査しました。↓
【調査内容】
・機械学習のモデルは.mlmodelを使用
・ドキュメントからプロジェクトのサンプルをダウンロードできます。
・既存の機械学習モデルもmlmodelに変換可能
Converting Trained Models to Core ML | Apple Developer Documentation
・CreateMLで機械学習モデルを生成できる
Training a Create ML Model to Classify Flowers | Apple Developer Documentation
・言語認識はNaturalLanguageフレームワークと連携
実際にアプリを作って遊んでみます。