Apple Engine

Apple, iPhone, iOS, その周辺のことについて

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

 

参照元

ARKit | Apple Developer Documentation

developer.apple.com