AR Journey 02: オクリュージョン
Hello :D
久々の更新です。あったかくなったかと思ったらまた寒くなったね〜🍃
ついにMeta Spark Studioを使ったAR制作について執筆していくよ✏️。
今回はオクリュージョンを活用したAR作品を紹介します。
Occlusion (オクリュージョン)とは、現実の物体の後ろに仮想の物体を隠したい時に使って没入感を生み出す活用法のことです。
自分の周りを回転させるオブジェクト:
地球🌏、月🌕、ピンクの木星💗、ディスコボール🪩と紫の海王星💜
HeadOccluderを入れる
Meta SparkからHead Occluder (ヘッドオクルーダー) をダウンロードして、Spark AR Studioでフェイストラッカーに入れて自分の頭の位置に合うように調整した。headOccluder_matのマテリアルの Render Options の Blend Mode を Alphaに選択した。それでもまだオブジェクトが後ろに通過するようになってないのです。
オクルーダーのレイヤー設定
シーンパネルの Scenes の隣の Layers でオクルーダーに新規レイヤー (layer 1) を作成して、layer 0 の下にドラッグします。それができたら、Properties の Layerを layer 1に変更します。
フェイスメッシュを追加
Occluderだけでも、ユーザーの背後に隠れていて、正確に顔に密着しているわけではないので、フェイスメッシュを追加します。
これのレイヤーも同じく layer 1に変更します。Track Faceの Eyes と Mouth のチェックを外すよ。マテリアル追加をオクルーダーと同じheadOccluder_matにします。
次にマテリアルのOpacityを一気に0にしたら、オブジェクトがより完全に頭の後ろに隠れていくようになるのでありんす。
オブジェクト: Blenderで画像テクスチャを入れる
BlenderのShadingツールで、追加 ▶︎ テクスチャ ▶︎ 画像テクスチャ で入れたいマテリアル画像を入れる。そしたら、fbx形式でエクスポートする。
オブジェクトを回転させる
画像テクスチャを入れてある球体のオブジェクトをフェイストラッカーに入れて、顔の中心に配置してSpinのアニメーションで回転させまぁす。だけど球体が回転するだけになっちゃう…
でもこういう時には、3Dオブジェクトの中の「球」を選択して、左右前後に位置を調整していけば顔の周りを回転させることができたお!
⚠️問題点: 容量が超えてしまった!
さっそくデバイスでテストしようと思ったら、ここで問題発生!
ファイルの容量が超えてできなくなった! 原因を探るためにPublish ▶︎ File size meet requirements (アセットサマリー) で容量のサマリーを見たら球体の画像テクスチャのファイルがデカすぎたのね。そこでファイル圧縮を何度も何度もしたけど全然容量が減らないいいぃぃぃ!! なんでや〜! ってもうここで諦めるところでした。
Meta Spark Toolkitを有効にする
そこで現れた救世主がMeta Spark Toolkit。それをダウンロードしてBlenderにインストールしてみた。
編集 ▶︎ プリファレンス ▶︎ アドオン ▶︎ 🔎 Import Export または Meta Spark Toolkitを検索すると出てきた。そして、チェックつけたら有効になった。
サイドにMeta Spark Toolkitがあって、オブジェクトを選択するOptimizationのトライアングルの字が赤くなった。これはファイルの容量が大きいからトライングルの数を減らす必要があることを知らすもの。なので 50 と入力して「適用」をクリックして減らしてみた。それでもダメだったから、トライアングルの字が白くなるまで繰り返し減らした。字が白くなったらOKだから、その下にある Export Mesh をクリックしてGLTF形式でエクスポートしてみたのさ。fbxじゃなくてgltfになってたけど問題ないよ。
5つのオブジェクトをその手順でやった上で、Spark ARでインポートし直してアセットサマリーを確認したら、見事に容量が範囲内に減らすことに成功しました!
おまけ: カメラテクスチャー
Canvas ▶︎ Rectangle でWidth と Heightを画面全体 (Full width) に設定して、宇宙のカメラテクスチャーを作ったよ。マテリアルのBlend ModeをScreenにすると宇宙的なカメラスタイルになるよ。