RealityKitのサンプルコード集「RealityKit-Sampler」

RealityKitのサンプル集「RealityKit-Sampler」をオープンソースで公開しました。
RealityKitはAppleの最新のARフレームワークです。

[RealityKit-Sampler](https://github.com/john-rocky/RealityKit-Sampler)
[<img width="200" alt="スクリーンショット 2021-06-22 6 25 04" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/fe1a0cf4-eb15-83bf-1abf-7614d1cccf5a.png">](https://github.com/john-rocky/RealityKit-Sampler)


ソースコードは GitHub に置いてあるので、ご自由にご活用ください。

https://github.com/john-rocky/RealityKit-Sampler

シンプルにRealityKitを操作する公式サンプルがあまりないので、RealityKit-Samplerでは「基本から応用まで、ARアプリを作る要素を網羅する」というところに気をつけています。エンティティ、コンポーネントシステムなど、一見するとこれまでのARKit+SceneKitとガラッと変わったように見えるRealityKitですが、触ってみると手軽にリッチなARコンテンツを扱えるので、とっつきやすさが伝わればと思います。

#ビルド方法
1、プロジェクトをダウンロードまたはクローンして、xcodeで開きます。
2、xcodeの署名と機能の「チーム」フィールドをアカウントに変更してください。
3、実際のデバイスでRunします。（シミュレータでは使用できません）。

#サンプル一覧

### Put the box
シンプルなオブジェクトを平面に置く短いコード。RealityKitでオブジェクトを配置するのが意外と簡単なことがわかります。

<img width="200" alt="スクリーンショット 2021-06-22 6 25 04" src="https://user-images.githubusercontent.com/23278992/122830079-cc028c80-d322-11eb-87a3-8aa4803860a4.png">

### Gigant Robots

リッチなUSDZコンテンツを表示、アニメーションさせる方法。

<img width="200" src="https://user-images.githubusercontent.com/23278992/124874290-83292400-e002-11eb-948f-13302a5806ed.gif">

### Big monitor

フォトアルバムから動画を選んでテクスチャとして貼り付けるサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/123641992-c8f52800-d85d-11eb-918a-4619071a54c9.gif">

### Building blocks

いろいろな形、表面のオブジェクトを使う方法。またそれらをジェスチャーを使って操作するサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/123644152-11ade080-d860-11eb-828f-68e86ac8ee28.gif">

### Speech Balloon

顔と表情を認識し、発話内容も併せて視覚化するサンプル。


### Special Move

体を認識できるボディアンカーをつかって、体とARオブジェクトをインタラクトさせるサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/125154167-b7801a00-e193-11eb-93c6-631e827a96ed.gif">


### Face Cropper

顔を認識して、ポスターなどを切り抜くサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/124336683-e158a000-dbd9-11eb-8a00-5c2943daefcb.gif">


### AR Hockey

マルチデバイス共有機能を使って、ゲームを作るサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/137721587-cc6e8235-b7a0-4fb1-ad12-4af3c1cbb5e9.gif">

### Hand Interaction

AppleのコンピュータビジョンフレームワークとRealityKitを組み合わせて、ARオブジェクトに触れるサンプル。

<img width="200" src="https://user-images.githubusercontent.com/23278992/125152071-59e4d100-e185-11eb-8f4c-e14a825ada09.gif">

### 学べること

| コンテンツ | 技術要素 |
| ------------- | ------------- |
| **Put the box**  | SwiftUIのARView, Scene, Entity, Anchor, MeshResource, Material.  |
| **Big Robots**  | USDZ, Animation  |
| **Big Monitor**  | VideoMaterial, SceneEvent  |
| **Building Block** | Ray Cast, Hit Test, Handle Gestures, Physics, Collision, TextureResource |
| **Speech Balloon** | Face Anchor, ARSessionDelegate, RealityComposer |
| **Special Move** | Body Anchor |
| **Face Cropper** | Image Anchor |
| **AR Hockey** | Collaborative Session |
| **Hand Interaction** | addForce, Vision |

#RealityKitをつかうメリット

iOSでARアプリを作るにはいくつか選択肢がありますが、RealityKitはその第一候補になると思います。
理由として、以下のメリットがあります。

**・公式かつ最新のフレームワークである
・よってアップデートとサポートが手厚い
・あつかいやすい
・レンダリングがきれいで、リッチなARコンテンツを表示できる**

ぼく自身ARKit+SceneKitでARアプリを作っていましたが、この機会にRealityKitをひととおり試してみました。
SceneKitに比べて細かい融通がきかないようなイメージがありましたが、やってみるとぜんぜんいろいろできました。
RealityKitの扱いやすさを共有したいと思い、[RealityKitの参考書](https://qiita.com/john-rocky/items/77dd077a5778c7ca9369#17realitykit%E3%82%92%E3%81%A4%E3%81%8B%E3%81%86%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88)およびこのSamplerを作りました。

🐣
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARを使ったアプリを作っています。
機械学習やAR関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)