Close
Type at least 1 character to search
Back to top

上京してから早くも4年が経とうとしているのだけれども、都内で時を重ねれば重ねるほど、課題意識が膨らんでいくのが、ライティング周辺で起きていること。ライターの欲望に対する街の受容性については、ここ数年で何も進展が無いように感じる。 むしろ宮下公園のリーガルウォールが実現しなかったことを初めとした”逆行”とも言える話題は尽きない。 一方で、千葉の市原湖畔美術館でのSIDECOREの展示や美術手帖でのグラフィティ特集号は、芸術の制度の延長上で捉え直されつつあるポジティブな兆候であるとも言える。 上の写真はFranceに展示に行ったときに訪れた L'Aérosol 。 誰もが建物全体にライティングできるスポットで、ストリートカルチャーをテーマとした美術館も併設されており、パリ市民のカルチャースポットの一つとなっている。渋谷にもこういう場所がほしい。 "落書き"か"芸術"かを中心とした議論をよく耳にする。その議論の延長線上として、ライティングという行為の街の受容性の評価や、ライティングと都市の共存を都市計画へと組み込むための諸手法の整理は、まだまだ発展途上だ。 慎重な議論と整理が今後も必要であろう

はじめに 最近,慣れ親しんでいるUnity で AR コンテンツを作ってみたくなり,色々と下調べしたのでメモを載せておきましょう. 最終的にやりたいことは AR オーディオビジュアライゼーション。 前に投稿したLASPとVFXGraphでオーディオ・ビジュアル作る、みたいなことをARアプリで作ってみたいというのがモチベーションです (※ 2020/5/3時点で実現はできていません ⇒ 2020/5/6 無事完成) さて、UnityのAR開発環境についてですが,Unity ARKit Pluginが2019年6月で非推奨になったので,ARKit3 以降,Unity上でのAR開発は,AR Foundationを活用するのが良いでしょう. https://www.youtube.com/watch?v=dYlndpzNqwk AR Foundation とは AR Foundation自体は開発者へインターフェースを提供しているだけで,AR機能自体は実装していません.ARKit XR Plugin on iOS や ARCore XR Plugin on Android などは別途必要になってきます. で,どんなことできるのかというと、マニュアルにもあるように,以下のような技術を提供しているようです. World Tracking:現実空間内(物理空間内)でのデバイス位置の認識と向きの追跡をします.平面検出:水平面と垂直面を検出します.点群:特徴点を検出する.アンカー:デバイスが追跡する任意の位置と向きを検出する.Light Estimation:物理空間における平均的な色温度と明るさを推定する.Enviroment Probe:Unity 内にキューブマップを自動的に作成する.フェイストラッキング:人の顔を検出して追跡する.画像トラッキング:2D画像を検出して追跡する. 基調講演を見ると何ができそうか良い感じにイメージができますね. https://youtu.be/DUUthDpiGiA 公式からサンプルが公開されているので,慣れ親しむには,これを見ていくのがいいでしょう. 以下のようなサンプルが公開されています. 平面検知:Plane Detection環境光推定:Light Estimate画像トラッキング: Image Tracking物体トラッキング:Object Tracking空間共有:World Map顔認識: Face Trackingモーションキャプチャ:Body Trackingオクルージョン:People Occlusion 留意点ですが,FaceTracking,BodyTracking,PeopleOcclusionについては,iPhoneX以降が必要になります. また,ハードウェアの性能に以下の制約条件があるので要注意です. ARKitの利用 :A9以降のプロセッサFace Tracking :True DepthカメラBodyTracking,People Occlusion :A12以降のプロセッサ Face Tracking で Face Mesh をしてみる さて,試しにFaceTrackingで認識した顔にMesh Rendererをかぶせて任意のTextureを顔に表示させてみます.その他ライティングなどです. AR Session オブジェクト AR Sessionクラスは,AR FoundationのARの基本機能(デバイストラッキング,平面認識)を呼び出すのに必須で,このコンポーネントを付けたGameObjectはSceneに必ず含めましょう. AR Input Managerクラスは,デバイスで現実世界をトラックするのに必須なコンポーネントとなります.これも必ずGame Objectにアタッチしましょう. AR Face Managerクラスは,人間の顔を認識するのに必要となります.これを使用する際には,平面認識やイメージ認識,物体認識,環境認識との併用はできないので,無効化する必要があります.Face PrefabにPrefab化したMesh Renderを指定します(ここでは詳しく説明しませんが,今回はshader graphでつくったアニメーションを顔面に貼り付けました AR Session Origin オブジェクト AR Session Originクラスは,AR座標とUnity Space間の座標変換を行います.ARデバイスの起動位置をSession Spaceの原点(0,0,0)として位置を計算します. AR Face Managerクラスは,人間の顔を認識するのに必要となります.これを使用する際には,平面認識やイメージ認識,物体認識,環境認識との併用はできないので,無効化する必要があります.Face PrefabにPrefab化したMesh Renderを指定します(ここでは詳しく説明しませんが,今回はshader graphでつくったアニメーションを顔面に貼り付けました) これは余談ですが,AR Camera オブジェクトにVolumeスクリプトをアタッチするとPostProcessが使えるようになるので,映像の質感などをいい感じにコントロールしたいときには活用してみましょう.     次のステップ こんな感じで簡単なARコンテンツならノンコーディングで作れちゃうことが分かります.そういえば,実機にBuildする際に色々とドツボにハマりましたが,基本的にエラーメッセージをググれば解決できるのでここでは触れません. 次は,VFXGraphをARで使ってみた時のメモを紹介します. 現時点で,デバイスのマイクで拾った音声をVFXGraphに反映する方法を模索中なのですが,LASPはそのまま使えないので,Microphoneモジュールでどうにかするしかないんでしょうかね.レイテンシーがひどそうですが. Reference Unity’s Handheld AR Ecosystem: AR Foundation, ARCore and ARKit

※ 2020/8/1時点での動作検証になります.今後の Unity のバージョンアップなどにより再現できない可能性が点はご留意ください. こんにちは.やっと梅雨が明けたようで,蝉も絶好調ですね. 1週前は早く梅雨明けてくれと項垂れていましたが,すでに夏の日差しに敗北しつつあり,さっさと秋にならないかなと思ったり・・ そういえば,1年前の夏に何をエントリーしていたか振り返ってみると,「」した.毎年,夏の到来後,早々に暑さに敗北している己はだいぶ虚弱です.数年後の夏とか,到来とともに死ぬのではないかと思ってしまう. まあでも,夏に Active に外で遊ぶのではなく,毎年,技術力 UP に集中して取り組めるのでそれはそれで良いのではないかと考えている. と,しょうもない前書きが長くなってしまったが,ここでは、Unity AR Foundation を使って Audio Reactive な AR マスクをつくる方法について触れます.Unity AR Foundation については、前に書いたこちらを参考までにご参照ください. やりたいことのおさらい では,早速,実装について触れていきましょう.と,その前にゴールとゴール達成のための検討ポイントを書いておきます(ここからの内容ですが,AR Foundation に慣れ親しんでいる前提で記載していきますので,不明点などあればお気軽にご連絡ください) 今回の検証環境は以下のような感じです. Unity:2019.3.0f6 PersonalAR Foundation:3.1.0 - preview.4ARKit XR Plugin:3.0.0 - preview.4ARKit Face Tracking:3.0.1検証機器:iPad Pro (第2世代)検証機器(OS version):iPadOS 13.6 今回のゴールは,「音量に応じて顔に貼り付けるテクスチャを変更する」です。 実装していくにあたって,巨人の肩に乗ってしまえということで,ベースのプロジェクトは Dilmer Valecillos さんの github にある「Face Tracking Generating Masks」を参考にすることにします. で,ゴールを達成するために検討すべきポイントは以下となります. iPad のマイクから音をリアルタイムに取得したい.取得した音の強さに応じて AR で顔に貼るテクスチャを動的に変更したい. ベースとして使うプロジェクトについて 上述した検討ポイントの2つについて触れる前に,ベースとして活用させて頂くプロジェクトの具体的な変更点(追加点)に触れておきましょう. Dilmer Valecillos さんがスワップすると顔のテクスチャが変更されるデモを作ってくださっているので,これを参考にします。 https://www.youtube.com/watch?v=Wnu0zm0elHU Audio Reactive にするにあたり,スクリプトを1つだけ追加します. FaceToggle.cs  という C# script を新規作成しておきましょう. で,AR Session Origin にアタッチしましょう. では,上述の2つの検討ポイントを FaceToggle.cs に追記していきます. IPAD のマイクから音をリアルタイムに取得したい iPad からリアルタイムに音を取得するにはどうすれば良いのか. このモチベーションで色々と調べたのですが,Unity 公式サポートでのこのやり取りが非常に参考になりました. How Do I Get Unity To Playback A Microphone Input In Real Time? 基本的には,先程のリンクの通りです.もう少し,具体的に説明すると「Microphone.StartとAudioClip.GetDataの組み合わせ」で実現します(iPad で録音アプリを作りたい際などにもこの方法で実現するようです) 言葉で言ってもあれなので,コードを記載するとこんな感じ( Github gists の便利さに今更気づいた) 取得した音の強さに応じて AR で顔に貼るテクスチャを動的に変更したい 検討ポイント2に関しては,上記の97~110行目で実現しています. これまた非常にシンプルで,音量がある閾値を超えたなら,予め用意していた配列の何番目を参照するかを示す index を ++ する,index が配列サイズになったらindex = -1として初期化するようにしています. これによって,materialの参照するマテリアルを順繰り順繰り変更していく,というやり方です. 音量がしきい値以上超え続ければ,早いスピードで絵柄が切り替わりますし,超えなければ,同じ絵柄のままとなり,音に応じて絵柄変化に強弱がつきます. こんな感じで結構簡単にできてしまいます. テクスチャ表面を DEFORM してみる これはただのおまけ程度なのですが,活用するテクスチャ(shader)を音に応じて変形するような感じで書けば,以下の動画のような少し変わった AR フェイスマスクも作成できちゃいます. こんな感じで,先程のスクリプトに追加で,shader へ音量の変数をバインドするようにしてあげるだけです. shader は好きなものを用意してあげましょう. https://www.youtube.com/watch?v=6embGBJlukM まとめ 音に反応する AR マスクですが,デモ動画を insta に挙げたところ反響が良く,New York の zerospace さんのアカウントで取り挙げてくださいました. あとは,劇場関連の方々(これも海外)からもご連絡頂いたりなど,エンタメの演出には相性が良さそうです. この夏も引き続き,Unity を活用した制作事例と実現方法について紹介していきたいと思います. それでは,良い夏を!