WWDC 2019 の発表をなんとなく妄想する
いつも通り妄想してみる。
主に妄想してみるのは以下3つ。
- ARKit を含む Metal や SceneKit の 3D Graphic
- Core ML や Create ML の強化
- macOS での UIKit の使用
ARKit を含む Metal や SceneKit の 3D Graphic
ARKit で Swift 専用のフレームワークが増える
ARKit で Swift 専用のフレームワークが増えるという噂だが、もしそうなら Create ML のような macOS でつくる事前処理か、それとも Apple のプラットフォームで Objective-C のサポートがなくなるのか。
Objective-C のサポートがなくなるのなら Unity や Unreal などゲームエンジンが死亡する。
ARKit で人間のポーズの検出機能
ARKit で人間のポーズの検出機能もつくと噂されている
人間のポーズが取れるなら、SceneKit 側で人体の基礎となる骨格、CG 用語でいうリグが実装される可能性ある。
また、キャラクターアニメーションの機能が強化される可能性がある。
ARKit で遮蔽物の認識ができるようになる
6D.ai など他のライブラリーでも行なっているので、できるようになる可能性はある。
ARKit 2.0 で実装された WorldMap から遮蔽物を保存できると思われるので、同じ位置で遮蔽物の復元をかければ、正直リアルタイムに遮蔽物をスキャンしなくてもよいは気がする。
ARKit でイメージやオブジェクトトラッキングの向上
イメージトラッキングの場合、トラッキングする画像に欠損があると認識が落ちるので、参照画像に透過が使えると嬉しい。
例えば、参照画像のロゴの背景が透過しているものを設定し、トラッキングの際はロゴをデータの合致だけを見て背景色は変わっていてもよいとか。
また、オブジェクトトラッキングは止まっているものを認識するようになっているため背景が変わると認識できない。
カメラ画像から特徴点を取っており、木目の上にのっているオブジェクトと大理石にのっているオブジェクトでは別のものになってしまう
そのため、現状ではいくつかの背景のものをスキャンして、結合する必要がある。
それをせずに背景だけ外して認識するできるようになるなど。
(ロジック的に想像できないので多分かなり難しい)
また、手や指のトラッキングなど。
SceneKit でマルチプルビューポート
A12 の Metal の機能で複数のカメラを使用した画面を表示する機能が追加されているので、このような機能が実装されれば確実に AR グラスの製品が出る日が近い。
また、外部ライブラリを使用しなくても、この機能があれば VR も可能になる。
実はアプリ申請できないプライベートフレームワークで iOS 10 までマルチパスレンダリングで同じことができる API が存在していた。
その他で SceneKit で増えそうな機能
去年は SceneKit で新しい機能が一部しか変更がなかったため、今年はかなり更新されると思っている。
以下、完全に妄想。
- ジオメトリのパーティクル
- Animoji で耳などに使われているようなダイナミックボーンやスプリングボーン
- クロスシミュレーション
- ML 使用した流体シミュレーション
- スクリーンスペースベースの SSS や屈折
- ヴォリュームレンダリング
- ジオメトリのボロノイ分割
- レンズフレアなどのカメラエフェクトの追加
- SceneKit でシェーダーを作成を簡単にする仕組み
- SceneKit でのパストレースの実装、もしくはオフラインレンダラー
- シーンエディターでのタイムライン操作の強化
Core ML や Create ML の強化
Core ML では音声周りの機能が増えそうではある。
Create ML が iOS で使用できる可能性がある。
現状、iPhone XS よりしょぼい Mac の Swift Playground でも動くため、動作しそうな感はある。
ただ Create ML 自体、元が Turi Create なので、Python が使用されている可能性があるため、Python 自体が実行できるようにかもしれない。
macOS では Swift から Python を実行できるため。
また、これに伴い Vision Framework も大幅に拡充もされそうではある。
macOS での iOS の UIKit の使用
macOS で UIKit が使用できるようになのであれば Cocoa と UIKit で追加の API が多く実装される可能性がある。
例えば、View にマウスイベントが動く必要がある。
そのため、ブラウザーの Pointer Event のようにタッチ、ペン、マウスを統一された API 取得できるものが用意されるとか、
Touch Bar の処理を UIKit の View に渡したり、ショートカットを渡す処理など軽く考えるだけでも色々 Cocoa と UIKit で処理をつなげなければいけないものが多い。
その他
OpenGL/GLES、OpenCL が廃止される中、Maya など 3DCG DCC ツールが Metal に対応されるとは到底思えない。
多分 Metal で対応される可能性が低いので Apple 自体が用意するかもしれない。
UIKit の実行に関しては、もしかすると発表される Mac Pro には T2 チップとは別にアクセラレータとして Apple A チップが搭載される可能性も考えられる。
もし、UIKit をシミュレーションさせているなら Mac 自体に Apple A チップ 側で処理したほうが速いから。
あと、Mac Pro と共にディスプレイを出すらしいが、eGPU が搭載されていそうな感はある。
GPU が付いていたら便利だし、値段が高くてもある程度言い訳ができるし。
まとめ
あくまでも妄想の範疇で書いてみたが、実際のところ全体で大幅に変わると予想されるので、明日以降更新を調べていくのが大変になりそうではある。