このプログラムについて
顔の実験心理学的研究をしたことのある人なら,学生・研究者問わず,必ず感じるジレンマがあると思います。顔って,3次元の立体構造なのに,なんでいつも平面のディスプレイに写真を提示して実験しているのでしょう? また,視線や顔表情はいつもめまぐるしく変化しているのに,なんで静止画像を使って実験するのでしょう? そんな顔写真を使った心理学実験で,私たちの顔を使ったコミュニケーションの本当の姿がとらえられるのでしょうか? しかしこれには当然理由があって,実際の人間を刺激として使おうとしてもコントロールすることが難しいからです。「はい,顔の角度を3度左に傾けると同時に1秒間だけ20%笑ってください」なんてことがいつでも誰の前でもできる人間は存在しません。でも,最近の工学技術を使えば,どうやら実際の人間とそっくりのロボットが作れるらしいので,ロボットを使って実験できないかなぁ(どうせリアルが無理なら,ロボットは3次元だしリアルタイムに動かせるので,それもありだと思うのです)…ロボットだったら1秒間だけ20%笑うこともできるし,50cmの距離でアイコンタクトした瞬間でもピクリとも表情が揺るがない人間がつくれる(プログラムで完全に制御可能)…でも,お金はないし…と考えておりました。
お金はないけど,コンピュータグラフィックス(CG)だったら,時間を原材料にして作れるし(発想が貧乏性),最近は仮想現実(VR)や拡張現実(AR)なんて技術も安くなってきたから(やっぱり貧乏性),うちの大学でもロボットを使ったヒューマンコミュニケーションに関する研究ができるかもよ(でも夢はでかい!)…と,私のゼミでは5~6年くらい前からCGでロボットを作ってみてはUnityで動かしてみて,何か心理学的なテーマ(視線認知とか,パーソナルスペースとか)を見つけては研究に使ってきました。
学会にもっていくたびに,「こりゃまたトンデモナイものを作っちゃいましたねぇ~」…と,たぶんほめてるというより呆れられているようなコメントをいただきながら,改善に改善を重ねて…でも,不気味の谷を越えられずに(いじればいじるほど基本的に悪い方にいくのです)…そのうち,私もゼミ生たちもちょっと飽きてきたロボット版「うちの子」ですが,こんなこともできるという例として,プログラムを公開してみます。このモデルは,リアル系というより,少しアニメ調のデフォルメを入れたキャラクタですね(うちの技術力ではリアル系は不気味の谷のどん底に沈んでしまいます)。
地方小規模大学のこれまた小さな心理学研究室の作品なので,最近流行り始めた本格的なデジタルヒューマンに比べれば超ローテクで,まだ人間のように自由に動けるレベルにはまったく到達できていないのですが,実験心理学の講座をもつ大学でもなかなかこんなものは作れない(作ろうとしない…だけ?)かもしれないので,ひとつのスタディモデルとして,今の情報技術を応用した心理学研究の可能性をほんの少しでも感じていただければと思います。このプログラムでは限られたパラメータしか動かせませんが,それでも,例えば,同じ表情でも顔の向きが異なるとまったく違う意味に認知されるなど(能面の表情効果),顔認知の奥深さを体験してもらえる心理学教材としても使えます。
現在は基礎研究で使っている程度ですが,将来的には,自閉症スペクトラムをお持ちの方や,視線不安や社交不安をお持ちの方の対人コミュニケーションの特性を評価したり,訓練する方向に,このような技術が使えないかと考えています。
下のビデオは,昔ゼミ紹介のデモ用に作ったアニメーションです(HDRPを使ったひとつ前のバージョンのものです)。
動作環境
[ハードウェア]
- Windows PC…専用GPU(グラフィックプロセッサ)をもつ機種でないとコマ落ちします(特にHDRP版は髪の毛をシミュレーションしているので高負荷です)
- 動作環境としてゲーミングPCを想定しています(Unityで開発)。
- VR版を使用する場合には,Oculus Rift S(あるいはOculus Rift CV1,Oculus Quest 2+Oculus Link)など,Oculus社のPC用VRゴーグルが必要です。
[OS]
- Windows 10(64ビット版が必要です)
使い方
プログラムの実行
- zipファイルには「SoftRobot01_release.zip」(通常版)と「SoftRobot01_releaseVR.zip」(VR版)があります。よりリアルに見えるHDRPバージョンのファイル名は「SoftRobot05_release.zip」(通常版)と「SoftRobot05_releaseVR.zip」(VR版)です。VR版の実行には,Oculus社のRift SなどのVRゴーグルが必要です。
- zipファイルをダウンロードした後,まず「右クリック」→「プロパティ」を選択して,「このファイルは他のコンピュータから取得したものです。…アクセスはブロックされる可能性があります。」という記述の横の「許可する」にチェックを入れて,ブロックを解除してください(これをしないと,実行時に「WindowsによってPCが保護されました…不明な発行元」というダイアログが出たり,異常に長い起動時間がかかることがあります)。
- その後,フォルダごと解凍して,その中の「SoftRobot01.exe」(あるいはSoftRobot.exe)を実行してください。
- なお,VR版を実行するには,Oculus Riftの設定(「Settings」→「General」)で,「Unknown Sources」を「ON」にしておく必要があります。
プログラムを終了するには[ESC]キーを押してください。
プログラムの操作(通常版)
このプログラムは,私の学科のオープンキャンパスでの展示体験用に作ったものです。展示として使用するのに,多少ランダムに動かないと単なるマネキン人形にしか見えないので,ロボットの頭部の動きと表情の強度がランダムに変動するようプログラムしています。
カメラ操作
- 左へ移動…[←]キー,[A]キー
- 右へ移動…[→]キー,[D]キー
- 前方へ移動…[↑]キー,[W]キー
- 後方へ移動…[↓]キー,[S]キー
- 上方へ移動…テンキーの[8],[F]キー
- 下方へ移動…テンキーの[2],[C]キー
- 左へ回転…テンキーの[4],[Q]キー
- 右へ回転…テンキーの[6],[E]キー
- 上へ回転…テンキーの[7],[Z]キー
- 下へ回転…テンキーの[1],[X]キー
- ズームイン…[PageUp]
- ズームアウト…[PageDown]
マウス操作
- 左クリック…オブジェクトを選択します。何もないところでクリックすると青い球(視線ターゲット)が現れます。
- 右クリック…視線ターゲット(青い球)をはじくことができます。
- 左ドラッグ…カメラ平面上でオブジェクトを移動させます。
- 右ドラッグ…オブジェクトを回転させます。
- ホイール回転…奥行方向にオブジェクトを移動させます。
- HDRP版では,何もないところでCTRLキーを押しながらホイールを回転させると,カメラの感度を変化させることができます(画面を相対的に明るく/暗くできます)。
- 左右同時クリック…青い球(視線ターゲット)を消します。
視線操作
- 通常の状態では,ピンクの球が注視ターゲットです。
- 画面右の「Eye Contact」を選ぶか[Enter]キーを押すと,カメラを注視するように変わります(トグルスイッチになっています)。
- 青い球(視線ターゲット)をクリックするとそれを注視します(ドラッグすると追視します)。また,ピンクの球をクリックするか,再度[Enter]キーを押すと注視ターゲットがピンクの球に戻ります。
表情などの操作(画面メニュー)
- Happy([1]キー)…「喜び」の表情に変わります。
- Sad([2]キー)…「悲しみ」の表情に変わります。
- Surprise([3]キー)…「驚き」の表情に変わります。
- Angry([4]キー)…「怒り」の表情に変わります。
- Disgust([5]キー)…「嫌悪」の表情に変わります。
- Fear([6]キー)…「恐怖」の表情に変わります。
- Smile([7]キー)…口を閉じた「喜び」の表情に変わります。
([Shift]キーを押しながらこれらの表情を選択すると複数を同時にONにできますが,スライダで強度を調整する必要があります。) - Emot on EC([B]キー)…視線がカメラに向いたときに表情を提示するかどうかを指定します。
- Emot on Object([N]キー)…視線が青い球に向いたときに表情を提示するかどうかを指定します。
- Emot on Other([M]キー)…視線がピンクの球などその他の対象に向いたときに表情を提示するかどうかを指定します。
- Eye…スライダを右に動かすと目を閉じます。
- Mouth…スライダを右に動かすと口を開けます。
- EyeContact([Enter]キー)…カメラを注視対象に切り替えます。
- HeadOrienting([O]キー)…チェックを外すと頭部の自動回転をやめて眼球だけを動かすようになります。
頭部等の位置や回転について
- プログラムでは,Inverse Kinematicsを使って,人体モデルを動かしています。
- [G]キーを押すか,VRモードならコントローラーの[Y]ボタンを押すと,Inverse Kinematicsのアンカーが薄緑色の立方体で表示されます(下の画面)。これを動かすことで,頭部の位置や方向を変えることができます(頭部の向きを変えるときには「Head Orienting」をオフにしておいてください。また手のアンカーの向きはこのプログラムでは無視するようにしています)。
プログラムの操作(VR版)
【注意】VR版もコントローラーでの操作ができる以外は通常版と同じです。
コントローラー(Oculus Touch)の操作
- カメラ移動…右スティックで前後左右への移動,左スティックで左右回転と上下移動ができるようになっています(ドローンのモード2の操縦方法)。
- メニュー操作…ロボットの後ろにディスプレイ画面が立っていますので,コントローラーの人差し指スイッチでメニューを操作します(トリガーを握った側の手が操作用のレーザーポインターになるようプログラムしています)。
- [A]ボタン…メニューのEyeContact([Enter]キー)を切り替えます。
- [B]ボタン…メニューのHeadOrienting([O]キー)を切り替えます。
- [Y]ボタン…Inverse Kinematicsのアンカーを表示します([G]キー)。
- 中指スイッチ…オブジェクトを握って動かすことができます。何もないところで握ると注視ターゲット(青い球)が現れます。
- 人差し指スイッチ…注視ターゲットの位置を固定したいときに押します。
- 左コントローラーの[メニュー]ボタン…VRゴーグルの位置をつかってVR空間の座標をリセットします(キーボードの[R]キーでもリセット可能です)。
制限事項等
作者(吉田)は,このプログラムの動作を一切保証するものではありません。また,このプログラムを動作させたことによる一切の損失・損害に責任を持ちません。ご自身の責任のもとでお使いいただくようお願いします。
その他
動作が遅いとき
- HDRP版は毛髪シミュレーションを追加したので,CPU負荷がかなり高く,それなりのゲーミングPCが必要です。
- 以下の手続きでの画面解像度を落とすと,動作速度が改善される場合があります。
- 起動後の画面で,[ALT]+[Enter]キーを押します(ゲームがウィンドウモードになります)。
- マウスで,ウィンドウの大きさを調整して小さめにします。
- 何とか動く程度にウィンドウを小さくしたら,[ALT]+[Enter]キーを押して,ふたたび全画面モードにします。
変更履歴
- v1.001…最初のバージョン(2021/7/9)
- v1.002…表情のトグルスイッチがスライダの操作でもON/OFFしていた点を修正(2021/7/10)
- v1.003…非VR環境で画面右側のUI(ユーザーインターフェース)操作が背景のオブジェクトにも影響していた点を修正(2021/9/2)
- v5.001…HDRPバージョン(2024/9/5)を追加
プログラムのダウンロード
プログラムのサイズが大きいので,下のリンクをクリックするとダウンロード用のGoogle Driveを開きます。プログラムは,それぞれフォルダごとzip形式で圧縮されて1つのファイルになっています。ダウンロードした後に,必ずフォルダごとすべてのファイルを解凍してからお使いください(解凍前には上述のブロック解除も忘れないようにお願いします)。ロボットのポリゴン数が多いのでファイルサイズが大きくてすみません。
【通常バージョン】(v1.003)
- 通常版プログラム…SoftRobot01_release.zipダウンロード用ページ(194MB;203,539,726バイト)
- VR版プログラム…SoftRobot01_releaseVR.zipダウンロード用ページ(194MB;203,539,969バイト)
【HDRPバージョン】(v5.001)
- 通常版プログラム…SoftRobot05_release.zipダウンロード用ページ(335MB;352,228,790バイト)
- VR版プログラム…SoftRobot05_releaseVR.zipダウンロード用ページ(336MB;352,369,390バイト)