雑食エンジニアの気まぐれレシピ

日ごろ身に着けた技術や見知った知識などの備忘録的なまとめ.主にRaspberry Piやマイコンを使った電子工作について綴っていく予定.機械学習についても書けるといいな.

PC内(物理)にキャラクターを住まわせてみた【Looking Glass Portrait】

はい、なかなか意味不明なタイトルですが、まずはコチラをご覧ください。

youtu.be

大体何がやりたかったかは伝わったかと思います(笑)

PC内にキャラクターがいて、Looking Glass Portraitを窓代わりにして交流出来たら、なんか存在感増すんじゃね?というアイデアでした。

なお、こちらは"ぽんぽこちゃんねる"様による24時間企画「ぽんぽこ24 vol7」のCM枠用に製作しました。
youtu.be

何か盛り上げる一助になればいいなと、毎年企画発表と同時にひとネタ作っているわけですが、これがなかなか新鮮で面白いんですよね。
PDD(ぽんぽこ24駆動開発)、やめられません。

さて、ここからは製作物の詳細について書いていきたいと思います。

コンセプト

冒頭に書いた通り、今回は「ぽんぽこ24 」のCM枠用にアイデアを考えました。
CM枠といっても特に宣伝することはないので、動画を見てる人がワクワクする何かを作る を基本方針としています。

MakerFaireなどとは全く違う層の人が見るので、「なんか凄そう」と一目で思ってくれるような画にする必要があります。

ついでに、ぽんぽこ24 vol7のテーマ「サバイバル」にかけて
「キャラクターが現実に居る存在感」
を基本コンセプトに置きました。

構成

  • Looking Glass Portrait
    • 今回の主役です。
    • 「Looking Glassってなんか窓っぽくね?」が発想の根本です。
    • 見る角度によって画が変わるので、窓を覗いてる感が表現できます
  • 距離センサ
    • PCの位置と窓の位置を同期させるために、距離センサ(VL53L1X)を使っています。
  • M5 Atom Matrix
    • センサ制御用です。距離情報をBluetoothシリアル通信でPCに送っています。

メイン制御はUnityで、センサから受け取った情報をもとにカメラ位置を制御し、Looking Glassに表示しています。

キャラクター

今回主役を張っているキャラクターですが、VRoidStudioで作成したオリジナルキャラとなります。

自由に動かせるキャラがあると、確かに便利ですね。今後も活躍が期待されます。

カメラ位置の同期

前述のとおり距離センサの値でカメラ位置を制御しています。
距離センサは部屋の壁との距離を見ており、PCの端部で位置を初期化して、そこからの差分で移動距離を求めています。

実はこの形になるにはいくつか紆余曲折がありました。

はじめは横方向を距離センサ、縦方向を気圧センサで取得して、2軸で同期する想定だったのですが、気圧センサで取得できる高度が数十センチ単位でばらついたので却下しました

距離センサには前モデルのVL53L0Xを使っていたのですが、FOVが広すぎて誤動作しまくりました

今回採用したVL53L1Xは、レーザー発光パッドの数や位置を調整できるので、FOVを狭くとることができます(検知距離は短くなりますが)。
最終的に、中央付近の2つのパッドだけを使って測距することで、誤動作を減らすことができました。

ただ、それでも数センチ単位のばらつきが生じます。 IIRフィルタを使って、これを軽減させています。

存在感を増す工夫

現実の物体とリンクさせるために、いろいろやってます。

PCの端部との位置合わせ

前述のとおりセンサ値の補正のためにIIRフィルタを入れているのですが、許容できる範囲までブレを抑え込むと、追従性が悪化してリンク感がなくなるという問題がありました。

特に、動画の初めにPCの外から中を移すシーンにて追従性が重要となります。
逆に、キャラクターが移るところくらいまで来ると、追従性よりブレが気になります。

というわけで、距離に応じてIIRフィルタの補正値を変動させることで、端部では高追従性を、中央部では安定性を高めています

ノックに対するリアクション

インタラクティブ性があればリンク間が増すのでは、というアイデアで入れました。実際、かなりそれっぽさが出たと思います。

なおノックについては過去に書いた手拍子を検出するコードを流用する、、、予定だったのですが、間に合わなかったので動画時点ではキーボード入力で反応させています。
shikky-lab.hatenablog.com

ちなみに、「驚いてこっちを見た後、にこやかに手を振る」という動作を自然にするために、調整に結構時間をかけました。

3Dを自然に可愛く動かしてる方々、ホントに凄いですね。。。

おわりに

私はこれまでUnityにほとんど触ったことがなかったので、今回はいろいろと勉強になりました。
ただあまりに初歩的なことが多く、ブログに書けるほどのものがないんですよね。。。

とはいえ、Unityの勘所は少しずつ掴めてきたので、これからの創作の幅がグッと広がりそうです。

こういう、普段あまり触れない技術にがっつり触れる機会になるのが、ぽんぽこ24の良いところですね。

今後とも挑み続けたいので、ぽこぴーの二人には来年以降も開催を続けてほしいです(笑)

ちなみに今年のMakerFaireでは、これをもう少しブラッシュアップさせて持ち込もうと思っています。もし現地にお越しの際はお楽しみに。

それでは。