IVRC2023 参加体験記【聖剣】
ラボの同期4人で聖剣を継ぐ者- 集中の証明 -という作品を制作し、IVRC2023でLeap stage 審査員賞を頂きました。
ここでは制作過程での学びや気付きについてまとめたいと思います。
我々も多くの先行作品を読んで参考にさせていただいたので、この記事も今後IVRCに挑戦する人の参考になれば嬉しいです。
チーム結成
弊研究室では、M1学生が伝統的にチームを組んでIVRCの大会に出場します。
研究室の1学年上の先輩たちによる作品↓
今年からIVRCに新部門Metaverseが追加されました。
ラボの同期の内、自分を含めた4人が従来の部門(Standard)
別の3人がMetaverse部門に作品を出すことに決めました。
ちなみにMetaverseに出した組は総合優勝して面白いのでぜひ見てください。
4月~5月: 書類審査
アイデアについて
先輩たちのアドバイスをもとに以下の条件でアイデアを絞った。
マルチモーダルな入出力、フィードバック
見た目の面白さ
海外受けするもの
全身動かす系は楽しい(一般展示で面白い子供にうける)
VRでしかできないこと(社会的な意義)
100個くらいの案から絞った結果
聖剣を抜くという体験を通して集中力をフィードバックする(可視化)という案が採用された。
集中力という目に見えないものを、脳波計を使って測定し計測した脳波をVRの中でフィードバックする。
意図的に集中している状況を何回も繰り返すことで、他の運動や勉強をする場面でもすぐに集中できるようになるのではないかという仮説を立てた。
後にバイオフィードバックという研究領域があることを知った。
集中やフロー状態、VRによる集中力トレーニングの先行文献などを調べて、学術的な価値をまとめて予稿を提出した。
6月-9月: Seed Stage
ハード・ソフトに分けて開発
ハード2人、ソフト2人と分担を決め、週2回ミーティングで進捗共有、開発を進めた。
マルチモーダルなアプローチを採用し、脳波、モーター、振動子、ファンなど様々なフィードバック要素を組み合わせた。
最終的なシステム構成図は以下の通り
ハード
システム上重要なところだけ説明する。
モーター
聖剣を下から引っ張る(巻き取る)機構
Unity→Aruduino→Motor Driver→Motor で制御
このシステムは綱引きの論文で使用していた機構から着想を得て開発した。
脳波計
Muse2という市販の脳波計を使用した。
Petal Metricという通信でPCに電極情報を送信
MatlabでFourier変換し、α波(8~13Hz)の強度を計算
その値と後述する視線計測の値をもとに、評価値(以下では集中値と呼ぶ)を定める
HMD
視線計測の値を取りたいためQuest Pro を使用した。
フレームごとの目の3軸の回転量の差分の二乗和を基準値とした。
つまり目線が一点に定まっているときは集中とみなし、目線が動いているときは非集中となるようにした。
振動子
妨害要素として手元が振動するという機構
ファン
ゲームクリアした(抜いた)後に風を送って爽快感を呈示するための機構
ToF(距離計測)
基板の下にToFセンサーを下向きにつけて距離をリアルタイムで測定し、ゲーム画面上での剣の座標と同期する。
ヘッドフォン
Yamahaさんのヘッドフォンと、Sound xRというPluginを使用させていただいた。立体音響がとにかくリアルで、作品の没入感がとても上がった。
ソフト
Unityを使ってチーム開発した(Githubで管理)
一つのシーンのなかで以下の3パートに分けて実装した。
Quest + OVR Camera rigでハンドトラッキングを実装した。
タイトル
キャリブレーション(集中力を測る)
ナレーションはVoiceVoxを使用
非集中時と集中時でそれぞれ集中値(脳波+視線計測の値)を記録し、それを基準にする
メイン
集中値をもとに、モーターの強さ・振動子・音楽のピッチを制御
剣が一定以上上がるとGoal 判定
120秒以内に抜けないとGame Over判定
Seed Stage本番
ハードの装置が頻繁に動かなくなった
Unityが重くなりPCごと再起動することもあった
ゴール判定がうまくいかず、手動でゴールを入れないといけないことがあった
開発が間に合わない中で本番を迎えてしまったため、バグが多く頻繁に調整をしなければならなかった。
9月~11月: Leap Stage
改善点
妨害要素の追加
集中値が低いときにあげようとすると強い力で引き戻される
恐竜の足音などがリアルに聞こえる
ToFの実装(剣の座標更新の自動化)
剣型装置自体を25cmほど上げた
高い方が伝説の剣感があって、抜きたくなる
剣にLEDを巻きつける&台座に光をつける(塗装)
シンプルに映える、子どもウケがいい
Leap Stage本番
本番でのエラーの割合はソフト9割ハード1割といったところだった。
Seedと同じくソフトの処理が重くなり、本番のデモでシステムが停止することが頻繁にあった。
ESP32を使って通信しているところが原因だった
無線化して送っているところを諦めたら動いた
モーターによって簡単に抜けないシステムになっており、自分の集中力に向き合う人が多く見受けられた。
小さい子は脳波計をつけられないので視線だけでデモをしたが、意外と視線だけでも良かった。
バズり
Xでバズった。自分たちの狙いが世界に伝わって嬉しい。
ウケた要因をGPTに聞くと以下の返答があった
革新性と創造性: 「集中力を高めないと抜けない聖剣」というコンセプトは、科学とファンタジーの融合によって生まれた革新的かつ創造的なアイデアです。このようなユニークな発想は、一般的な期待を超えるものであり、広範な好奇心を刺激します。
信頼性と期待の逆転: 東京大学の名前は、プロジェクトに対する信頼性と高い期待をもたらします。一方で、「東大生が馬鹿なことをやっている」という感想は、この期待とは逆の方向への意外性を提供し、ユーモアと関心を引きます。
技術革新への関心: 脳波と視線を使った集中力の推定技術は、最先端のテクノロジーとして捉えられ、テクノロジーへの関心が高い層に対して大きな魅力を持ちます。
反省
私がこれまでの研究で培ってきたのは、先行研究に基づく知識の積み重ねと確かな論理構築というアプローチだった。しかし、今回のVRという私にとって未知の領域での作品制作は、創造的なプロセスが必要で、新しい知識と技術を身につける必要があった。
このプロジェクトにおいては、ハードウェア面ではCAD設計、金属加工、3Dプリンタ、電子回路の使用など、様々な技術を学んだ。一方、ソフトウェア面ではUnityの使用やコード開発についての知識を深まった。これらの経験は、私たちにとって新たな技術的なスキルと知識の獲得の機会となり、今後の研究にも大いに役立つだろう。
最後に、プロジェクトの反省点は以下の通り:
チームメンバーは全員がUnity初心者であったため体系的な開発ができず、スパゲッティコードや神クラスが多く発生しシステムの可読性が低下したため、デバッグ作業は大変困難であった。
特に私は「動けばいい」という考えに基づく開発で、コードの質についての認識が不足していた。動くコードを作るだけでなく、後から見る人にも理解しやすいコードの構造と適切な変数名の命名が重要である。
開発前にUnityやコーディングの基本に関する勉強会を開くべきだった。
マルチモーダルゆえのシステムの複雑さ・処理重
多くのデバイスと通信するため処理が重くなり、どこかが動かなくなるということが頻発した。これはUnityのUpdate関数の更新頻度を変えるなどして処理を軽くできるかもしれない。
ハードウェアは常に壊れるリスクがあるということを、もっと認識しておくべきだった。
締め切り直前になってからの作業が増えるのは避けられない状況だったが、もっと現実的な範囲を見積もって、優先順位を設定して進めるべきだったと感じた。計画的なアプローチと、現実的な目標設定が、このようなプロジェクトでの成功には不可欠であるという教訓を得た。
チームメンバー4人は、それぞれが研究テーマと異なるプロジェクトに取り組み、コンテストへのモチベーションを維持するのが困難だった。
審査員の脳波の専門家からの質問に、自分の専攻とは異なる分野で深い理解がないためうまく答えられないことが苦痛だった。
展望
聖剣の作品は今後もカンファレンス、コンテストに出そうと思っている。
その上で改善するところとしては、
デモをバグなくできるように
コードの整理
剣型デバイスとの通信を無線→有線化
脳波計を使わず、視線だけでやってみる
他のバイオ情報(体の加速度・重心の移動など)からうまく集中値を再定義できないか
最後に、就活・インターンや自身の研究に忙しい中、時間を見つけて開発に取り組んだチームメンバーには感謝の気持ちでいっぱいです。ありがとうございました!