ARを学ぶ10連休。折り返し地点までの記録。
Day4
スマホ上でのデバッグが目と首に辛すぎるのでPlayground使うことにした。この回答のコードを少しいじったら最新のXcodeでも動くようになった。 https://t.co/jpf27TdM0s pic.twitter.com/O0mfDlt6ic
— Sousai💢 (@croquette0212) 2019年4月30日
最近バックエンドの開発ばかりやっていたので忘れていたが、スマホのアプリ開発は目と首が疲れる。4日目にして大分辛くなってきたので、初めてSwift Playgroundを導入した。ARKit部分のデバッグはできないが、SceneKit関連の開発・デバッグが可能。やはり画面が大きいと快適。
複数マーカーの識別と、ノードのアニメーションあたりまで出来てきた。SceneKitの使い方と数学力的な壁にあたって進みが悪い…。 pic.twitter.com/3l9zf6e1SW
— Sousai💢 (@croquette0212) 2019年4月30日
複数のマーカーを識別し、その上にSCNNodeを重ねて動かすというところまで実装ができた。非常に簡素なコードでの実装なのだが、SceneKit / 3D数学の理解力不足のため、ここまで到達するのにやたら時間がかかってしまった。SceneKitはなかなか良いチュートリアルを見つけることができず苦戦。
Day5
壁のマーカーからシーリングライトのオン/オフができるようになった。 pic.twitter.com/SlvCFSU9y9
— Sousai💢 (@croquette0212) 2019年5月1日
マーカーをタップしてインタラクトできるようになった。Nature RemoのAPIとつなげて、家電を制御したりしてみた。赤外線リモコンで操作できる家電はNature remoで、Wi-Fi対応の家電はIFTTTで操作できそうだ。アイリスオーヤマのWi-Fi対応LED電球に関しては、APIが公開されておらず、IFTTTにも対応していないため、残念ながら操作する方法がなさそうだ。
Nature RemoのAPIを試すにあたって、Postmanというリクエスト生成ツールを使ってみたらとても便利だった。
ARでマーカーを認識して、AR上に表現したUIを操作して、現実世界のオブジェクトを制御する、という一連の流れができたので、今後は各部位のブラッシュアップをやっていく。
Day 6
大分SceneKitの扱いに慣れて、厨二病感を加えていくことが可能になってきた。照明の真横にマーカー設置すると陰になって認識エラーがおきやすい。困った。 pic.twitter.com/ZzJ413vlZa
— Sousai💢 (@croquette0212) 2019年5月2日
UIの実装を進めて、シーリングライトの設定を色々変更できるようにした。現実世界のオブジェクトを制御できる幅が広がるとやはり楽しい。
並行でひたすらSceneKitの勉強を進める。PlaygroundではAssetsが使えないのが不便で、あまり使わなくなってしまった。
SCNPlaneが透過テクスチャに対応していることがわかり、楽に細かい表現を実現できるようになった。コードもすっきりしてきた。透過テクスチャを重ねた場合にチラツキが発生していたのだが、座標を少しずらしてあげて完全に重ならないようにすればOKだった。
ARKit + SceneKitアプリのUIはピクセルという単位ではなくメートル単位で設計していく。ピクセル単位でのUI実装に比べると、直感的でとても良い。特に、マーカーをベースに現実世界のオブジェクトに表現をオーバーレイしたいような場合に、実寸で設計/実装ができるのは実に便利。PC/スマホのUIもメートル単位で設計/実装するような日が来るのだろうか。
アニメーションに関して、使い慣れているCoreAnimationが使えるというのが嬉しい。transform、opacityなどをCoreAnimationでアニメーションさせるようにしたところ、大分ハリボテ感がなくなってきた。
3Dの数学については引き続き苦戦している。MatrixのCombinationが増えてくると、頭の整理が追いつかない。SCNNodeを入れ子構造にすることで、Matrix Combinationをなるべく書かなくて良いようにするという苦肉の策を講じているが、パフォーマンス的に大丈夫なのかという不安がある。
残り4日間で、シーリングライト以外の家電についても操作できるように実装しつつ、UI表現をブラッシュアップさせていく。あと部屋の掃除をやる。
続きはこちら
「10連休に改めてARを勉強する日記 その2」への1件のフィードバック