iOS 11 GM の ARKit で変更されたこと
フェイストラッキングで顔の形状を取り、顔や独自で作成した顔のジオメトリを AR の仮想空間設置し、表情を付加する機能が追加。
Message アプリでデモしていた AniMoji ようなものが、AR 空間で使用できる。
また、Beta 中に廃止となっていたものが完全に機能からなくなった。
廃止
ARWorldTrackingSessionConfiguration と ARSessionConfiguration が廃止
ARKit の初期にあったフル機能を使用する設定と、移動でジオメトリが固定できず追従してしまうが全端末で動く設定の ARWorldTrackingSessionConfiguration と ARSessionConfiguration が完全に廃止され 命令を受け付けなくなった。
要するに呼び出すと落ちる。
ちなみに公式のドキュメントからも該当ページがなくなっている。
ARWorldTrackingConfiguration と AROrientationTrackingConfiguration を使うべし。
変更前 / 変更後 | 機能説明 | 対応端末 |
---|---|---|
ARWorldTrackingSessionConfiguration / ARWorldTrackingConfiguration | フル機能を使用可能 | A9 以上の端末 |
ARSessionConfiguration / AROrientationTrackingConfiguration | 端末移動でジオメトリが追従してしまう | 全端末 |
追加
全て顔認識系のもの。
- ARTrackable
- ARFaceTrackingConfiguration
- ARFaceAnchor
- ARDirectionalLightEstimate
- ARFrame > capturedDepthData
- ARFrame > capturedDepthDataTimestamp
ARTrackable
フェイストラッキングが可能かどうか調べるプロトコル
ARFaceTrackingConfiguration
ARWorldTrackingConfiguration などと同様に、フェイストラッキングの設定をする。
ARFaceAnchor
顔を表す ARFaceAnchor オブジェクトが、今までと同様にアンカーリストを追加され、顔の位置と向き、顔のジオメトリーのトポロジーや表情が構成される。
表情に関しては Blend Shapes によるモーフィングで行う。
ARDirectionalLightEstimate
ARFaceTrackingConfiguration で isLightEstimationEnabled を true にしている場合、現実空間から光の情報を取得し仮想空間にライトの情報に適応する。
デフォルトでオン。
ARFrame > capturedDepthData
フレーム毎に深度カメラからキャプチャされた深度情報が AVDepthData で返される。
ARFrame > capturedDepthDataTimestamp
フレーム毎に深度カメラから生成される深度情報がキャプチャされた時間 (タイムスタンプ) が返される。
フレーム毎に生成されるカラー画像と深度画像のフレームレートが異なるため、カラー画像と深度画像のタイムスタンプが必ず一致するわけではない。
取得できる表情の Blend Shapes
英語だけどなんとなくわかるかと思われる。
リンク先の公式ドキュメントでは個別で画像とともに紹介されている。
左目
- eyeBlinkLeft
- eyeLookDownLeft
- eyeLookInLeft
- eyeLookOutLeft
- eyeLookUpLeft
- eyeSquintLeft
- eyeWideLeft
右目
- eyeBlinkRight
- eyeLookDownRight
- eyeLookInRight
- eyeLookOutRight
- eyeLookUpRight
- eyeSquintRight
- eyeWideRight
顎(Jaw)
- jawForward
- jawLeft
- jawRight
- jawOpen
口(Mouth)
- mouthClose
- mouthFunnel
- mouthPucker
- mouthLeft
- mouthRight
- mouthSmileLeft
- mouthSmileRight
- mouthFrownLeft
- mouthFrownRight
- mouthDimpleLeft
- mouthDimpleRight
- mouthStretchLeft
- mouthStretchRight
- mouthRollLower
- mouthRollUpper
- mouthShrugLower
- mouthShrugUpper
- mouthPressLeft
- mouthPressRight
- mouthLowerDownLeft
- mouthLowerDownRight
- mouthUpperUpLeft
- mouthUpperUpRight
眉毛(Eyebrows)
- browDownLeft
- browDownRight
- browInnerUp
- browOuterUpLeft
- browOuterUpRight
頬(Cheeks)
- cheekPuff
- cheekSquintLeft
- cheekSquintRight
鼻(Nose)
- noseSneerLeft
- noseSneerRight