以下、本技術に係る実施形態を、図面を参照しながら説明する。
[情報処理装置の構成]
図1は、本技術の一実施形態に係るヘッドマウントディスプレイ(HMD)の外観を模式的に示す斜視図である。HMD100は、透過型のディスプレイを備えたメガネ型の装置であり、ユーザの頭部に装着されて使用される。HMD100は、本技術に係る情報処理装置の一実施形態として動作する。
HMD100は、フレーム10、レンズ20、表示部30、及び撮像部40を有する。フレーム10は、メガネ型の形状でなり、リム11及びテンプル12を有する。リム11はユーザの左眼及び右眼の前方に配置される部分であり、左右のレンズ20L及び20Rをそれぞれ支持する。テンプル12は、リム11の両端からユーザの両耳に向けて後方に延在し、両耳に装着される部分である。
左右のレンズ20L及び20Rは、ユーザの左眼及び右眼の前方にそれぞれ配置される。典型的には、レンズ20は、ユーザの視力を矯正するように設計される。これに限定されず、いわゆる度無しレンズが用いられてもよい。
表示部30は、左眼用ディスプレイ30L及び右眼用ディスプレイ30Rを有する。左眼用及び右眼用ディスプレイ30L及び30Rは、ユーザの視野の少なくとも一部を覆うように、ユーザの左眼及び右眼の前方にそれぞれ配置される。本実施形態では、表示部30として、左右のレンズ20L及び20Rに設けられた左眼用及び右眼用ディスプレイ30L及び30Rが用いられる。ディスプレイ30L及び30Rを配置する方法等は限定されず、例えばリム11によりディスプレイ30L及び30Rが支持されてもよい。
左眼用及び右眼用ディスプレイ30L及び30Rは、透過型のディスプレイである。左眼用及び右眼用ディスプレイ30L及び30Rには、ユーザの左眼及び右眼用の画像等がそれぞれ表示される。HMD100を装着するユーザは、現実の景色を視認すると同時に、各ディスプレイに表示される画像を視認することが可能となる。これにより、ユーザは拡張現実感(AR:Augmented Reality)等を体験することが可能となる。
なお、左眼用及び右眼用ディスプレイ30L及び30Rの外側(ユーザの眼とは反対の側)に、調光素子(図示省略)等が設けられてもよい。調光素子は、当該素子を透過する光の量を調節可能な素子である。調光素子を設けることで、例えば各ディスプレイを透過してユーザに視認される現実の景色を規制し、各ディスプレイに表示される画像を強調してユーザに視認させることが可能である。これにより、ユーザは仮想現実(VR:Virtual Reality)等を体験することが可能となる。
左眼用及び右眼用ディスプレイ30L及び30Rや調光素子の具体的な構成は限定されない。左眼用及び右眼用ディスプレイ30L及び30Rとしては、例えば透過型の有機ELディスプレイやLCD(Liquid Crystal Display、液晶表示素子)ディスプレイ等が用いられる。また調光素子としては、例えば透過率を電気的に制御可能な調光ガラス、調光シート、及び液晶シャッター等が用いられる。
撮像部40は、左眼用カメラ40L及び右眼用カメラ40Rを有する。左眼用及び右眼用カメラ40L及び40Rは、ユーザの左眼及び右眼を撮像可能なように、リム11の内側(ユーザの眼と対向する側)に設けられる。なお図1では各カメラが設けられる位置がそれぞれ模式的に図示されている。左眼用カメラ40L及び右眼用カメラ40Rが設けられる位置等は限定されず、ユーザの左右の眼を撮像可能な任意の位置に設けられてよい。
左眼用及び右眼用カメラ40L及び40Rは、ユーザの左眼及び右眼を撮像して左眼及び右眼の撮像情報を生成する。左眼用及び右眼用カメラ40L及び40Rとしては、例えばCMOS(Complementary Metal-Oxide Semiconductor)センサやCCD(Charge Coupled Device)センサ等のイメージセンサを備えるデジタルカメラが用いられる。また、例えば赤外線LED等の赤外線照明を搭載した赤外線カメラが用いられてもよい。
図2は、左眼用カメラ40L及び右眼用カメラ40Rの配置の一例を示す模式図である。図2には、HMD100を装着したユーザ1が模式的に図示されている。図2に示すように、ユーザ1は、左眼用及び右眼用ディスプレイ30L及び30Rに表示される画像を視認する。ユーザ1が画像を見ている間、左眼用及び右眼用カメラ40L及び40Rによりユーザの左眼及び右眼が撮像される。
左眼用カメラ40L(右眼用カメラ40R)の撮像範囲は、ユーザの左眼(右眼)の眼球及び眼球の周辺(目頭、目じり、まつ毛、目蓋等)を含む左眼(右眼)の全体像が撮像可能な範囲である。
各カメラは、左眼及び右眼の撮像情報として、例えば所定のフレームレートでユーザの左右の眼のカラー画像やモノクロ画像等をそれぞれ生成する。また赤外線カメラ等が用いられる場合には、左眼及び右眼の撮像情報として、角膜に赤外線照明(赤外線LED等)のスポットが映ったプルキニエ像等が生成される。この他、撮像情報の形式等は限定されない。
図3は、図1に示すHMD100の機能的な構成例を示すブロック図である。HMD100は、さらに通信部50、記憶部60、及びコントローラ70を有する。通信部50、記憶部60、及びコントローラ70が設けられる位置等は限定されず、例えばHMD100のフレーム10内部の所定の位置に設けられる。
通信部50は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して他のデバイスと通信するための通信モジュールである。Bluetooth(登録商標)等の近距離無線通信用の通信モジュールが備えられてもよい。またモデムやルータ等の通信機器が用いられてもよい。
通信部50は、他のデバイスから受信したデータをコントローラ70に入力する。またコントローラ70から出力されたデータを他のデバイスに送信する。従って、HMD100を装着したユーザは、例えば他のデバイスを使用する他のユーザと画像データ等をやりとりすることで、他のユーザとコミュニケーションをとることが可能である。
記憶部60は、不揮発性の記憶デバイスであり、例えばHDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ、その他の固体メモリである。
記憶部60には、人間の眼の動作に関する人間特性に応じた所定の条件が記憶される。人間の眼の動作に関する人間特性とは、例えば人間が瞬きをする際の目蓋の開閉時間(瞬きの速さ)や人間の眼球の可動範囲といった、人間の眼に関する様々な特性を含む。所定の条件は、例えば人間の目蓋の開閉時間や眼球の可動範囲といった特性に基づいて設定される条件であり、後に詳しく説明する。
また記憶部60には、HMD100の全体の動作を制御するための制御プログラムが記憶される。制御プログラム及び所定の条件を、HMD100にインストールする方法は限定されない。例えば、種々の記録媒体やインターネット等を介した任意の方法で制御プログラム及び所定の条件がインストールされてよい。
コントローラ70は、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等のコンピュータの構成に必要なハードウェアを有する。CPUが記憶部60に記憶されている制御プログラムをRAMにロードして実行することにより、種々の処理が実行される。
コントローラ70の具体的な構成は限定されず、例えばFPGA(Field Programmable Gate Array)、画像処理IC(Integrated Circuit)、その他ASIC(Application Specific Integrated Circuit)等のデバイスが用いられてもよい。
本実施形態では、コントローラ70のCPUが本実施形態に係るプログラムを実行することで、機能ブロックとして動作情報算出部71、動作制御部72、及びモデル生成部73が実現される。そしてこれらの機能ブロックにより、本技術に係る情報処理方法が実行される。なお各機能ブロックを実現するために、専用のハードウェアが適宜用いられてもよい。
動作情報算出部71には、撮像部40(左眼用カメラ40L及び右眼用カメラ40R)により生成されたユーザの左眼及び右眼の撮像情報が入力される。動作情報算出部71は、入力された左眼及び右眼の撮像情報に基づいて、ユーザの左眼及び右眼の動作情報をそれぞれ算出する。本実施形態では、動作情報算出部71は、ユーザの左眼の動作情報とユーザの右眼の動作情報とをそれぞれ取得する取得部に相当する。
本実施形態では、ユーザの左眼及び右眼の動作情報として、左眼の視線方向、及び右眼の視線方向が算出される。例えば、ユーザの左眼のカラー画像が入力される場合には、ユーザの左眼の目頭の位置を基準として、ユーザの眼球の黒目(瞳孔及び虹彩)の位置が算出される。そして黒目が向いている方向が、左眼の視線方向として算出される。また例えば左眼のプルキニエ像が生成される場合には、赤外線照明のスポットを基準として黒目の位置が算出され、左眼の視線方向が算出される。右眼についても同様にユーザの右眼の撮像情報に基づいて、右眼の視線方向が算出される。この他、視線方向を検出可能な任意の方法が用いられてよい。
また本実施形態では、左眼の動作情報として左眼の開閉状態及び左眼の閉眼時間が算出され、右眼の動作情報として右眼の開閉状態及び右眼の閉眼時間が算出される。例えば、ユーザの左眼を撮像したカラー画像等から、ユーザの左眼が閉じているか否かが判定され、左眼の開閉状態が算出される。すなわち、ユーザの左眼が閉じていれば閉状態であり、閉じていなければ開状態となる。なお、開閉状態を判定する方法等は限定されず、例えば開状態、閉状態を判定するための閾値等が適宜設定されてよい。
また例えば、ユーザの左眼が閉じた時刻(閉状態になった時刻)から、左眼が開いた時刻(開状態になった時刻)までの時間が、ユーザの左眼の閉眼時間として算出される。右眼についても同様に、ユーザの右眼の撮像情報に基づいて、右眼の開閉状態及び右眼の閉眼時間が算出される。上記した方法の他にも、例えばユーザの視線方向が検出できない場合に、ユーザの眼が閉じているといった判定が行われてもよい。
動作制御部72は、ユーザのモデルの左眼及び右眼の動作を制御するための制御値を算出する。ユーザのモデルとは、例えば仮想空間等に表示されるユーザの分身(ミラーやエージェント)であるCG(Computer Graphics)アバターやCGエージェント等である。ユーザのモデルは、後述するモデル生成部73により生成される。
動作制御部72には、記憶部60に記憶された人間の眼の動作に関する人間特性に応じた所定の条件と、動作情報算出部71により算出された左眼及び右眼の動作情報とが入力される。動作制御部72は、所定の条件に基づいて、左眼及び右眼の動作情報を処理し、モデルの左眼及び右眼の動作を制御する制御値を算出する。制御値は、例えばモデルの左眼及び右眼の開閉のタイミングや視線の方向等を定めるための値である。従って動作制御部72は、制御値を算出することで、モデルの左眼及び右眼の動作を制御することが可能である。
モデル生成部73は、動作制御部72により算出された制御値に基づいてユーザのモデルを生成する。例えば、制御値で指定されたタイミングで左眼及び右眼が開閉するようにユーザのモデルが生成される。生成されたモデルのデータは、通信部50を介して他のユーザが使用する他のデバイスに送信される。そしてユーザのモデルが他のユーザが使用するディスプレイ等の表示装置に表示される。
またモデル生成部73には、通信部50を介して他のデバイスから他のユーザのモデルのデータ等が入力される。モデル生成部73は、入力されたデータに基づいて他のユーザのモデルを生成する。他のユーザのモデルは、左眼用及び右眼用の画像に変換され、HMD100の左眼用及び右眼用ディスプレイ30L及び30Rに表示される。
従って、ユーザはHMD100の表示部に表示された他のユーザのモデルを視認し、他のユーザは自身が使用する表示装置に表示されたユーザのモデルを視認することになる。これにより、ユーザは、他のユーザと互いのモデルを介したコミュニケーションを行うことが可能となる。
なお、互いのモデルを送りあってコミュニケーションを行う場合に限定されず、例えば仮想空間上にユーザのモデルと他のユーザのモデルとが一緒に表示されてもよい。この場合、モデル生成部73は、ユーザ及び他のユーザのモデルを同じ仮想空間上に生成する。そして両者のモデルを所定の視点から見た様子が表示部30に表示される。また例えば、ユーザは自身のモデル(アバター)を送信し、他のユーザは自身の映像を送信するといった形態もあり得る。その他、ユーザのモデルを介した種々のコミュニケーションの形態に本技術は適用可能である。
[モデルの制御方法]
図4は、HMD100の基本的な動作例を示すフローチャートである。動作情報算出部71により、ユーザの左眼及び右眼の撮像情報に基づいて、ユーザの左眼及び右眼の動作情報がそれぞれ算出される(ステップ101)。
動作制御部72により、所定の条件に基づいてユーザの左眼及び右眼の動作情報が処理され、モデルの左眼及び右眼の動作を制御する制御値が算出される(ステップ102)。モデル生成部73により、動作制御部72が算出した制御値に基づいて、左眼及び右眼の動作が制御されたモデルが生成される(ステップ103)。
モデル生成部73により生成されたモデルのデータが通信部50又は表示部30に出力され(ステップ104)、他のユーザが使用する表示装置やユーザが装着するHMD100(左眼用及び右眼用ディスプレイ30L及び30R)にユーザのモデルが表示される。
なお、ユーザのモデルの生成や制御の方法は、図4に示すフローチャートで説明した方法に限定されない。例えば動作制御部72により算出されたモデルの制御値が、通信部50を介して他のユーザ(他のデバイス)に送信されてもよい。この場合、他のデバイスにより、制御値に基づいてユーザのモデルが生成されるといった処理が行われてもよい。これにより、通信負荷等を軽減することが可能である。この他、制御値に基づいてユーザのモデルを生成可能な任意の方法が用いられてよい。
以下、モデルの左眼及び右眼を制御するための制御値の算出処理について、具体的な例を挙げて説明する。
図5は、動作制御部72による制御値の算出処理の一例を示すフローチャートである。図5に示す例では、モデルの左眼及び右眼の開閉動作を制御する制御値が算出される。図5では、左眼の閉眼時間Tlec及び右眼の閉眼時間Trecが用いられる。上記したように左眼及び右眼の閉眼時間Tlec及びTrecは、左眼及び右眼の閉じている状態(閉状態)の計測時間であり、動作情報算出部71により算出される。
また図5では、ノイズ判定時間Tth1と、眼閉じ判定時間Tth2とが用いられる。ノイズ判定時間Tth1及び眼閉じ判定時間Tth2は、人間の眼の動作に関する人間特性に基づいて設定された閾値である。
一般に、人間の瞬きの速さ(人間の眼が瞬きに要する時間)は平均で100ms〜150msとされている。すなわち、人間が瞬きをする際には、目蓋が閉じられた状態(閉眼状態)が100ms〜150ms程度の時間だけ継続される。本実施形態では、この目蓋の動作に関する人間特性を参考にして、ノイズ判定時間Tth1及び眼閉じ判定時間Tth2がそれぞれ設定される。
ノイズ判定時間Tth1は、左右の眼(目蓋)の閉状態が、計測ノイズであるか否かを判定するための閾値である。ノイズ判定時間Tth1としては、例えば人間の瞬きの早さの下限値である100msよりも低い値(例えば90ms)等が設定される。
例えば、左眼(右眼)の閉眼時間Tlec(Trec)がノイズ判定時間Tth1よりも短い場合、人間の瞬きの速さよりも早い開閉動作は生じ難いので、計測ノイズであると判定される。一方で、左眼(右眼)の閉眼時間Tlec(Trec)がノイズ判定時間Tth1よりも長い場合は、左眼(右眼)は瞬き動作又は眼を閉じる動作を行っている可能性があるため、計測ノイズではないと判定される。本実施形態では、ノイズ判定時間Tth1は、目蓋の閉動作の有無を判定するための第1の時間に相当する。
眼閉じ判定時間Tth2は、左右の眼(目蓋)の閉状態が、瞬き動作であるか、眼を閉じる動作であるかを判定するための閾値である。眼閉じ判定時間Tth2としては、例えば人間の瞬きの早さの上限値(150ms)等が設定される。
例えば、左眼(右眼)の閉眼時間Tlec(Trec)がノイズ判定時間Tth1よりも長く、眼閉じ判定時間Tth2よりも短い場合、左眼(右眼)では瞬き動作が行われていると判定される。一方で、左眼(右眼)の閉眼時間Tlec(Trec)が眼閉じ判定時間Tth2よりも長い場合は、左眼(右眼)は眼を閉じる動作を行っていると判定される。本実施形態では、眼閉じ判定時間Tth2は、目蓋の閉動作が無意識の瞬き動作であるか意識的な眼を閉じる動作であるかを判定するための第1の時間よりも長い第2の時間に相当する。
このように、ノイズ判定時間Tth1及び眼閉じ判定時間Tth2に基づいて、ユーザの左眼及び右眼が無意識の瞬き動作を行ったか否かが判定される。本実施形態では、瞬き動作を判定する条件(Tth1<X<Tth2:XはTlec又はTrec)は、目蓋の開閉動作が無意識の瞬き動作であるか意識的な眼を閉じる動作であるかを判定する判定条件に相当する。
なお、ノイズ判定時間Tth1及び眼閉じ判定時間Tth2を設定する方法等は限定されない。例えばコントローラ70の処理速度や、HMD100を使用するユーザの特性等に応じて、ノイズ判定時間Tth1及び眼閉じ判定時間Tth2が適宜設定されてよい。
図5に示すフローチャートに沿って、制御値を算出する処理について説明する。HMD100を装着したユーザによりHMD100が起動され、ユーザの左眼及び右眼の閉眼時間Tlec及びTrecがゼロに初期化される(ステップ201)。本実施形態では、ユーザがHMD100を使用している間、以下に説明するステップが継続的にループ処理される。
ユーザのモデルにおいて、左眼又は右眼の開閉アニメーションが実行中であるか否かが判定される(ステップ202)。開閉アニメーションが実行中である場合(ステップ202のYes)、再度ステップ202が実行される。開閉アニメーションが実行中でない場合(ステップ202のNo)、モデルの左眼の開閉動作に関する処理(ステップ203〜ステップ211)が実行される。
動作情報算出部71が算出した左眼の開閉状態に基づいて、左眼の閉状態が検出されているか否かが判定される(ステップ203)。左眼の閉状態が検出された場合、すなわち左眼が閉じていると判定された場合(ステップ203のYes)、左眼の閉眼時間Tlecに所定のインターバル(時間間隔)が追加される(ステップ204)。従って左眼の閉眼時間Tlecが、インターバルの分だけ大きい値に書き換えられる。インターバルの値は限定されず、例えばループ処理の周期等に応じた値が適宜設定されてよい。
書き換えられた左眼の閉眼時間Tlecが、眼閉じ判定時間Tth2以上であるか否かが判定される(ステップ205)。左眼の閉眼時間Tlecが眼閉じ判定時間Tth2以上である場合(ステップ205のYes)、モデルの左眼を閉じる指示を含む制御値が生成され、モデルの左眼を閉じる動作が実行される(ステップ206)。なお、モデルの左眼が既に閉じられている場合は、モデルの左眼を閉状態に保持する指示を含む制御値が生成される。
左眼の閉眼時間Tlecが眼閉じ判定時間Tth2未満である場合(ステップ205のNo)、左眼は閉じているが意識的に閉じる動作をしていないと判定される。すなわち、左眼の閉状態は、計測ノイズ又は瞬き動作中であると判定される。この場合、左眼に関する処理は実行されない。
ステップ203に戻り、左眼の閉状態が検出されない場合、すなわち左眼が開いていると判定された場合(ステップ203のNo)、直前のループが終了した時点での左眼の閉眼時間Tlecが判定される(ステップ207)。ステップ207では、左眼の閉眼時間Tlecがノイズ判定時間Tth2よりも長く、眼閉じ判定時間Tth2よりも短いか否かが判定される。すなわち、左眼の閉眼時間Tlecが、瞬き動作の判定条件(Tth1<Tlec<Tth2)を満たすか否かが判定される。
左眼の閉眼時間Tlecが、瞬き動作の判定条件を満たすと判定された場合(ステップ207のYes)、左眼の瞬き動作が確定される(ステップ208)。具体的には、例えば左眼の瞬き動作の有無に対応付けられた変数が書き換えられる。なおステップ208では、モデルの左眼に瞬き動作を指示する制御値等は生成されない。左眼の瞬き動作が確定された後、左眼の閉眼時間Tlecはゼロに書き換えられる(ステップ209)。
ステップ207に戻り、左眼の閉眼時間Tlecが、瞬き動作の判定条件を満たさないと判定された場合(ステップ207のNo)、ユーザのモデルの左眼を開く動作を実行するか否かが判定される(ステップ210)。
ステップ210では、左眼の閉眼時間Tlecがゼロであるか否か(Tlec==0)が判定される。左眼の閉眼時間Tlecがゼロである場合、直前のループが終了した時点で左眼が開いていたと判定される。すなわち左眼の開状態が継続(保持)されていると判定される。またステップ210では、左眼の閉眼時間Tlecが眼閉じ判定時間Tth2以上であるか否か(Tlec≧Tth2)が判定される。左眼の閉眼時間Tlecが眼閉じ判定時間Tth2以上である場合、意識的に閉じられていた左眼が開かれたと判定される。
ステップ210では、これらの二つの条件(Tlec==0及びTlec≧Tth2)の論理和(OR)が満たされるか否かが判定される。すなわち、左眼の開状態が継続されていたか、または閉じられていた左眼が開かれたかが判定される。なお、図5ではORを表す論理記号として「||」が用いられている。
ステップ210の論理和が満たされる場合(ステップ210のYes)、モデルの左眼を開く指示を含む制御値が生成され、モデルの左眼を開く動作が実行される(ステップ211)。なお、モデルの左眼が既に開かれている場合(Tlec==0の場合)は、モデルの左眼を開状態に保持する指示を含む制御値が生成される。ステップ211の後、左眼の閉眼時間Tlecはゼロに書き換えられる(ステップ209)。
なお、モデルの左眼を開く指示を実行する際に、左眼が開いているという測定結果(ステップ203のNo)がノイズによるものか否かを判定する処理を実行してもよい。例えば、左眼の開状態の時間(開眼時間)を計測し、左眼の開眼時間が所定の閾値よりも短い場合は、計測ノイズであるとしてモデルの左眼を閉じたままにするといった処理が実行されてよい。この他、モデルの左眼を開く動作を実行する際に、任意のノイズ除去処理が実行されてよい。
ステップ210の論理和が満たされない場合(ステップ210のNo)、左眼の閉眼時間Tlecは、0<Tlec≦Tth1となり、計測ノイズであると判定される。この場合、モデルの左眼に関する処理は実行されず、左眼の閉眼時間Tlecはゼロに書き換えられる(ステップ209)。
図5に示すように、ステップ205のNoの判定、ステップ206、及びステップ209のうちいずれか1つが実行されると、モデルの右眼の開閉動作に関する処理(ステップ212〜ステップ220)が実行される。図5では、上記した左眼の処理と同様に右眼に関する処理が実行される。なお、左眼の処理及び右眼の処理を実行する順序等は限定されず、右眼の処理を実行してから左眼の処理が実行されてもよい。
モデルの右眼の開閉動作に関する処理の後、モデルに瞬きを実行させるか否かが判定される(ステップ221)。本実施形態では、左眼の状態と右眼の状態とを組み合わせた条件に基づいて、モデルの瞬き動作の有無が判定される。図5では論理積(AND)を表す論理記号「&&」を用いて瞬きを実行させるか否かの条件が記載されている。
ステップ221では、左眼の瞬きが確定しており、かつ右眼が開状態にあるか否か(第1の条件)が判定される。また右眼の瞬きが確定しており、かつ左眼が開状態にあるか否か(第2の条件)が判定される。また左眼の瞬きが確定しており、かつ右眼の瞬きが確定しているか否か(第3の条件)が判定される。すなわち、両眼の瞬きが確定しているか否かが判定される。
ステップ221では、第1〜第3の条件のいずれか一つが満たされた場合(ステップ221のYes)、モデルに瞬きを実行させる条件が満たされたと判定される。この場合、モデルの左眼及び右眼の両方に瞬き動作を実行させる指示を含む制御値が生成され、モデルの両眼の瞬きが実行される(ステップ222)。
従って本実施形態では、両眼の瞬きが確定している場合(第3の条件)のみならず、左眼及び右眼のどちらか一方の瞬きが確定している場合(第1及び第2の条件)にも、モデルの左眼及び右眼を連動させて瞬き動作が実行される。すなわち本実施形態では、左眼の閉眼時間Tlec及び右眼の閉眼時間Trecのいずれか一方が、ノイズ判定時間Tth1よりも長く眼閉じ確定時間Tth2よりも短い場合に、モデルの左眼及び右眼の両方に瞬き動作が実行することが可能である。
なお、第1及び第2の条件では、瞬きが確定していない方の眼が開状態であるという条件が設けられている。これにより、例えばユーザが片方の眼を閉じてウィンクしている場合(片方の眼が閉状態である場合)に、他の片方の眼が瞬きをしたと計測された場合であっても、ユーザのモデルが両眼の瞬きを実行するといったことを防止することが可能となる。
ステップ221で判定される条件は、第1〜第3の条件に限定されない。例えば左眼(右眼)の瞬きが確定しており、かつ右眼(左眼)の閉眼時間Trec(Tlec)が眼閉じ確定時間Tth2よりも短いといった第4の条件(第5の条件)が設けられてもよい。これにより、例えばユーザの片方の眼が意識的に閉じているか否かが確定していない場合であっても他の片方の眼で瞬き動作が計測された場合に、モデルの両方の眼を連動して瞬き動作を実行することが可能となる。この他、モデルの両眼に瞬きをさせる任意の条件が適宜設定されて良い。
ステップ221でNoと判定された場合、モデルの瞬き動作は実行されず、モデルの眼を閉じる動作の実行の有無が判定される(ステップ223)。ステップ223では、モデルの左眼を閉じる動作の実行が確定しており(ステップ206参照)、かつ右眼が閉状態であるか否か(第6の条件)が判定される。またモデルの右眼を閉じる動作の実行が確定しており(ステップ215参照)、かつ左眼が閉状態であるか否か(第7の条件)が判定される。
ステップ223では、第6及び第7の条件のどちらかが満たされた場合(ステップ223のYes)、モデルの左眼及び右眼の両方に閉じる動作を実行させる指示を含む制御値が生成され、モデルの両眼の閉じる動作が実行される(ステップ224)。
従って本実施形態では、片方の眼の閉じる動作が確定し、他の片方の眼が閉状態である場合(第6及び第7の条件)、モデルの左眼及び右眼を連動させて閉じる動作が実行される。すなわち本実施形態では、ユーザの左眼及び右眼のいずれか一方の眼の閉眼時間が眼閉じ確定時間Tth2よりも長くなるタイミングで他方の眼が閉状態である場合に、モデルの左眼及び右眼の両方に閉じる動作を実行することが可能である。
第6及び第7の条件のどちらも満たされないと判定された場合、モデルの左眼及び右眼に関する処理は実行されない。図5に示すように、ステップ222、ステップ224、及びステップ223のNoの判定のうちいずれか1つが実行されると、ステップ202が実行され、次のループ処理が開始される。
図5に示すフローチャートでは、モデルの左眼及び右眼を閉じる動作(ステップ206及び215)と、モデルの左眼及び右眼を開く動作(ステップ211及び220)とが各ステップで実行された。これに限定されず、モデルの左眼及び右眼を開閉する制御等が、フローチャートの最後(次のループ処理が開始される前)にまとめて実行されてもよい。
図6は、モデルの眼の開閉動作の制御例を説明するためのタイムチャートである。図6では、各時刻でのユーザの左眼(EyeL)の開閉状態及び右眼(EyeR)の開閉状態が模式的に図示されている。なお各開閉状態は、開状態(100%)と閉状態(0%)との2つの状態で示されている。
図6に示す例では、時刻T1からT1'までの間、左眼の閉状態が計測(検出)される。この場合、左眼の閉眼時間Tlecはノイズ判定時間Tth1以下である。従って時刻T1からT1'までの左眼の閉状態は、開状態になった時点(時刻T1')で計測ノイズであると判定される(図5のステップ210のNo)。
また右眼では、時刻T2からT2'までの間、右眼の閉状態が計測される。この場合、右眼の閉眼時間Trecはノイズ判定時間Tth1以下である。従って時刻T2からT2'までの右眼の閉状態は、開状態になった時点(時刻T2')で計測ノイズであると判定される(図5のステップ219のNo)。
計測ノイズであると判定された左眼(右眼)の閉状態に対しては、ノイズ除去処理として左眼(右眼)の閉眼時間Tlec(Trec)がゼロに書き換えられ、モデルの制御等は実行されない。従って本実施形態では、左眼の閉眼時間Tlecがノイズ判定時間Tth1よりも短い場合にモデルの左眼の状態が維持され、右眼の閉眼時間Trecがノイズ判定時間Tth1よりも短い場合にモデルの右眼の状態が維持される。
時刻T3からT3'までの間、左眼の閉状態が計測される。この場合、左眼の閉眼時間Tlecはノイズ判定時間Tth1よりも大きく眼閉じ判定時間Tth2よりも小さい。従って時刻T3からT3'までの左眼の閉状態は、開状態になった時点(時刻T3')で左眼の瞬き動作であると判定され左眼の瞬き動作が確定される(図5のステップ208)。
また時刻T3'では、右眼は開状態である。すなわち時刻T3'では、左眼の瞬きが確定しており、かつ右眼が開状態であるという条件(第1の条件)が満たされることになり、モデルの両眼の瞬き動作が実行される(図5のステップ222)。なお図6では、モデルの両眼の瞬き動作が実行されている時間が模式的に図示されている。
このように本実施形態では、ユーザの右眼が開いている(開状態である)と計測された場合であっても、モデルの右眼に瞬き動作を実行させるといった非線形な制御が実行される。もちろん、右眼の瞬きが確定しており、かつ左眼が開状態である(第2の条件)といった場合には、モデルの左眼に瞬きを実行させる非線形な制御が実行される。これにより、モデルの左眼及び右眼の各々の瞬き動作を互いに連動させて制御することが可能となる。
図6では、時刻T4から左眼の閉状態が計測される。左眼が閉状態になってから眼閉じ判定時間Tth2だけ経過した時点(時刻T4')で、モデルの左眼を閉じる動作が実行される(図5のステップ206)。一方右眼では、時刻T4及びT4'の間の時刻T5から右眼の閉状態が計測される。そして時刻T4'では、右眼は閉状態のままである。
従って時刻T4'では、モデルの左眼を閉じる動作の実行が確定しており、かつ右眼が閉状態であるという条件(第6の条件)が満たされる。この場合、モデルの両眼を閉じる動作が実行される(図5のステップ224)。これにより、モデルの左眼及び右眼の各々の眼を閉じる動作を互いに連動させて制御することが可能となる。図6では、モデルの両眼が閉じられている時間が模式的に図示されている。
なおモデルの両眼を同じタイミングで閉じる制御を実行する際に、条件等を設けることも可能である。例えば、片方の眼が閉状態となってから、他の片方の眼が閉状態になるまでの時間差ΔTに関する条件等が設けられてもよい。例えば、時間差ΔTが所定の閾値よりも小さい場合、両眼は略同じタイミングで閉じられたとして、モデルの両眼を閉じる処理が実行されてもよい。また時間差ΔTが閾値よりも大きい場合には、先に閉状態となった眼だけを閉じるといった処理が実行されてもよい。これにより後に計測された眼の閉状態が計測ノイズであるといった可能性を排除することが可能である。
また、モデルの両眼を同じタイミングで閉じる制御が実行されなくてもよい。すなわち図5に示すステップ223及び224が実行されなくてもよい。この場合、例えば図6に示す例では、時刻T4'にモデルの左眼が閉じられ、時刻T4'からΔTだけ経過した後にモデルの右眼が閉じられるといった処理が実行される。この他、モデルの眼を閉じる任意の方法や条件等が適宜用いられてよい。
図7は、モデルの眼の開閉動作の他の制御例を説明するためのタイムチャートである。時刻T6からT6'までの間、左眼の閉状態が計測される。時刻T6からT6'までの左眼の閉状態は、左眼の瞬き動作であると判定され左眼の瞬き動作が確定される(図5のステップ208)。また右眼では、時刻T6及びT6'の間の時刻T7から右眼の閉状態が計測され、時刻T6'よりも後の時刻T7'まで閉状態が継続される。従って時刻T6'では、右眼は閉状態である。
すなわち時刻T6'では、左眼の瞬きが確定しており、かつ右眼の閉眼時間Trecが眼閉じ確定時間Tth2よりも短いという条件(第4の条件)が満たされることになり、モデルの両眼の瞬き動作が実行される(図5のステップ222)。
このように、片方の眼(図7では右眼)の瞬き動作が確定していない場合であっても、他の片方の眼(図7では左眼)の瞬き動作に連動するように、モデルの両眼を同じタイミングで瞬きさせることが可能となる。従って、例えばモデルの左右で瞬きのタイミングがずれるといったことを防止することが可能となる。
図7では、時刻T8から左眼の閉状態が計測される。左眼が閉状態になってから眼閉じ判定時間Tth2だけ経過した時点(時刻T8')で、モデルの左眼を閉じる動作が実行される(図5のステップ206)。なおこの時点で右眼は開状態であり、モデルの両眼を閉じる制御等は実行されない。従って時刻T8'から、モデルは左眼を閉じる動作を実行する。
モデルの左眼が閉じられた後で、時刻T9に左眼の開状態が計測される。時刻T9での左眼の閉眼時間Tlecは眼閉じ判定時間Tth2以上であるため、意識的に閉じられていた左眼が開かれたと判定される(図5のステップ210のYes)。そしてモデルの左眼を開く動作が実行される(図5のステップ211)。これにより、例えばユーザのモデルは左眼を閉じてウィンクするといった動作を実行することが可能となる。
以上、本実施形態に係るHMD100では、ユーザの左眼の動作情報と右眼の動作情報とがそれぞれ取得される。そして人間の眼の動作に関する人間特性に応じた所定の条件に基づいて、ユーザのモデルの左眼及び右眼の動作が、左眼及び右眼の動作情報に対して非線形となるように制御される。またモデルの左眼及び右眼の動作が互いに連動するように制御される。これにより、モデルの両眼を人間らしく動作させることが可能となり、アバターによるコミュニケーションを活性化することが可能となる。
ユーザのモデル(アバター)の眼の動作を制御する方法として、ユーザの眼の動作を検出するセンシングデバイス等からの検出値を、そのままアバターの眼の動作制御に用いる方法が考えられる。例えばユーザの眼が閉じている状態を検出するセンシングデバイスからの眼閉じ検出値等をそのままアバター制御に反映させると、検出ノイズによる誤動作や意図しないウィンク等が実行される可能性がある。この結果、アバターは意図と異なる眼の動きを実行することになり、コミュニケーションが阻害される恐れが生じる。
本実施形態に係るHMD100では、人間の瞬きの速さに基づいて設定されたノイズ判定時間Tth1及び眼閉じ判定時間Tth2が用いられる。動作制御部72は、ノイズ判定時間Tth1及び眼閉じ判定時間Tth2基づいて、ユーザの左眼(右眼)の開閉状態及び閉眼時間から、ユーザの左眼(右眼)の目蓋の開閉動作を判定する。
これにより、例えばユーザの目蓋の開閉動作が、無意識の瞬き動作であるか、意識的な眼を閉じる動作であるかを判定することが可能となる。この結果、モデルの左眼及び右眼を高い精度で制御することが可能となる。また検出ノイズや人間特性に沿わない動作等を除去(無視)するといった処理を実行することも可能である。この結果、検出ノイズによる誤動作や意図しないウィンク等が防止され自然なコミュニケーションを実現することが可能となる。
また本実施形態では、動作制御部72により、ユーザのモデルの左眼及び右眼の動作が互いに連動して制御される。すなわち動作制御部72は、左右の眼が同様のタイミングで瞬き動作や眼を閉じる動作等を実行するように、モデルの両眼を制御する。
例えば、ユーザ片方の目蓋のみが瞬き動作をしていると判定されたとする。この場合、片眼だけでの瞬きは通常起こりえない動作であるとして、ユーザのモデルは両眼の瞬き動作を実行するように制御される。また左眼と右眼とが閉じられる動作に時間差がある場合には、ユーザのモデルは両眼を閉じる動作を実行するように制御される。
これにより、例えばモデルの片方の眼だけが瞬き動作を行うといった不自然な動作が解消される。またモデルの眼を閉じるタイミングが左右で異なってしまうといった違和感を軽減することが可能である。従って、ユーザのアバターを十分に人間らしく振る舞わせることが可能となり、例えばコミュニケーションをしている相手に余計な違和感や不快感を与えることを十分に防止することが可能となる。この結果、モデルの表現のリアルさから喜びや共感を得やすくなり、コミュニケーションを十分に活性化することが可能となる。
また、人間の目蓋の動作に関する人間特性に基づいて種々の条件を設けることで、アバターに様々な表現を実行させることが可能である。例えば、アバターの片方の眼が閉じているタイミングでは、両眼の瞬き動作は実行されず、ウィンク動作等を人間らしく表現することが可能となる(第1及び第2の条件が満たされない場合)。このようにアバターは、様々な眼の動作を自然に表現することが可能となり、コミュニケーションを十分に活性化することが可能となる。
図8は、眼球の動作に関する人間特性を説明するための模式図である。図8Aは、人間の眼球80を側面から見た模式図である。図8Bは、人間の眼球80を上から見た模式図である。図8では、人間が正面を見ている場合の眼球80の視線方向(基準視線方向81)が模式的に図示されている。
一般に、人間の視線の稼動範囲(眼球の可動範囲)は、視線が正面に向けられた状態を基準として、縦方向、横方向、及び斜め方向にそれぞれ±30度以内であるとされている。例えば図8Aに示すように、人間の眼球は、基準視線方向81から上側に30度、下側に30度の範囲まで可動することが可能である。また図8Bに示すように、人間の眼球80は、基準視線方向81から左側に30度、右側に30度の範囲まで可動することが可能である。
本実施形態では、人間の眼球の視線の可動範囲を参考にした眼球動作条件が設定される。例えば眼球動作条件として、眼球が上下方向及び左右方向に移動した場合の視線方向の角度の上限値がそれぞれ30度に設定される。この他、眼球動作条件を設定する方法は限定されない。例えば黒目の移動可能な領域を設定することで、眼球動作条件が設定されてもよい。設定された眼球動作条件は、記憶部60に記憶される。本実施形態では、眼球動作条件は、眼球の視線の可動範囲に関する条件に相当する。
図9は、眼球の動作に関する人間特性に基づく視線方向の処理例を示す模式図である。図9では、動作情報算出部71により検出された視線方向82が、黒目83の中心位置83Cにより表現されている。また図9では、眼球動作条件として設定された視線の可動範囲84(黒目83の中心位置83Cの可動範囲)が点線の円で図示されている。可動範囲84の中心84Cは、基準視線方向に対応する黒目83の中心位置83Cである。視線の可動範囲84の形状等は限定されず、楕円形等の任意の形状が適宜設定されてよい。
動作制御部72は、検出された視線方向82が視線の可動範囲84に含まれるか否かを判定する。検出された視線方向が可動範囲84に含まれる場合には、算出された視線方向82の値がそのまま使用される。
図9に示すように、黒目83の中心位置83C(視線方向82)が、可動範囲84に含まれない場合には、動作制御部72は、視線の可動範囲84に収まるように視線方向82を補正する。
例えば、視線の可動範囲84に収まるように、視線方向82を視線の可動範囲84の中心84Cに向けて移動するといった補正が実行される。図9に示す例では、可動範囲84の中心84C及び黒目83の中心83Cを結ぶ直線と、視線の可動範囲84の外縁とが交わる位置が、補正後の視線方向82'となる。視線方向82を補正する方法等は限定されず、視線方向82を視線の可動範囲84内に補正する任意の方法が用いられてよい。
なお可動範囲84からのずれの大きさに応じて、検出された視線方向82をノイズとして処理するか否かが判定されてもよい。すなわち視線方向82があまりにも可動範囲84からずれている場合には、ノイズとして無視されてもよい。この場合、例えば視線方向82の値をデフォルトで設定された値等に切り替える処理が実行されてもよい。以上の処理は、左眼及び右眼の視線方向に対してそれぞれ実行される。
このように本実施形態では、眼球の視線の可動範囲84に収まるように、左眼の視線方向及び右眼の視線方向がそれぞれ補正される。これにより、ユーザの視線方向82の検出ノイズや検出誤差等を、人間特性に合わせて補正することが可能となる。
図10は、モデルの視線方向の制御例を説明するための模式図である。図10では、補正された左眼及び右眼の視線方向82L及び82Rが、左右の黒目85L及び85Rの中心位置86L及び86Rにより模式的に図示されている。また左眼及び右眼の視線方向82L及び82Rの下には、動作制御部72により制御されたモデルの左眼87L及び右眼87Rがそれぞれ図示されている。
本実施形態では、動作制御部72により、左眼の視線方向82Lと右眼の視線方向82Rとが揃っているか否かが判定される。具体的には、左眼の視線方向82Lと右眼の視線方向82Rとのずれ(左右の視線方向のずれ)が算出され、算出されたずれが予め設定された所定の閾値よりも大きいか否かが判定される。
従って所定の閾値は、左右の視線方向のずれが許容できるか否かを判定する基準となる。所定の閾値を設定する方法等は限定されず、例えば人間の眼球の動作特性、HMD100での視線検出精度、及びモデルの眼のデザイン等に基づいて適宜設定されてよい。
左右の視線方向のずれとして、例えば基準視線方向を基準に、左眼及び右眼の視線方向82L及び82Rの縦方向の角度差が算出される。同様に、左眼及び右眼の視線方向82L及び82Rの横方向の角度差が算出される。また例えば、左の黒目85L及び右の黒目85Rの間隔と、正面を見ているときの各黒目の間隔との差が、左右の視線方向のずれとして算出されてもよい。この他、左右の視線方向のずれを算出可能な任意の方法が用いられてよい。
左右の視線方向のずれが、所定の閾値よりも大きい場合、左右の視線方向は揃っていないと判定される。この場合、例えば左右どちらかの視線方向を基準として、モデルの左眼及び右眼が制御される。例えば図10に示す例では、左眼の視線方向82Lを基準として左右の眼が同様の方向を向くように、モデルの左眼87L及び右眼87Rが制御される。
基準となる眼(視線方向)を判定するための条件等は限定されず、様々な条件が設けられてよい。例えば、直前まで検出されていた視線方向により近い視線方向を有する眼を基準とするといった条件が設けられてよい。また例えば、エラー検出頻度の少ない側の眼を基準にしてもよい。この他、基準となる眼を判定する任意の条件が適宜設けられてよい。
このように本実施形態では、動作制御部72により、左眼の視線方向82Lと右眼の視線方向82Rとのずれが所定の閾値よりも大きい場合に、左眼の視線方向82L及び右眼の視線方向82Rのいずれか一方の視線方向に基づいて、モデルの左眼87L及び右眼87Rの各々の視線方向が制御される。これにより、モデルの左眼87L及び右眼87Rの視線方向を連動して制御することが可能となり、モデルの左眼87L及び右眼87Rが異なる方向を向いているといった不自然な状況を防止することが可能となる。これにより、ユーザのモデルを人間らしく振る舞わせることが可能となる。
なお図9に示すように左眼及び右眼の各々について視線方向が補正されてから、図10に示すように視線方向が揃えられる場合に限定される訳ではない。視線方向の補正及び両眼の視線方向の制御が、互いに連動して実行されてもよい。例えば一方の眼の視線方向だけが視線の可動範囲84から外れている場合には、他方の眼の視線方向と揃うように、可動範囲から外れている方の眼の視線方向が補正される。こよれにより、左右の視線方向のずれを算出する処理や基準となる視線方向を判定する処理等を省略することが可能となる。
また、両眼とも可動範囲から外れている場合には、可動範囲からのずれ量が小さい方の眼の視線方向を補正し、その補正結果に合わせるように、他方の眼の視線方向を補正する。このような処理も可能である。この他、モデルの左眼及び右眼の視線方向を連動させて制御可能な、任意の処理が実行されてよい。
図11は、ユーザのモデルの眼球の動作を説明するための模式図である。図11Aは、人間特性に基づいた視線の可動範囲84の一例を示す模式図である。図11B及び図11Cは、正面から見たモデルの眼のデザインの例を示す模式図である。
図11Aでは、視線の可動範囲84(黒目83の中心位置の可動範囲)が実線で示されており、黒目83の中心位置83Cが可動範囲84の上端、下端、右端、及び左端にある場合の黒目83が点線で示されている。また図11Aでは、平均的な人間の眼88の輪郭89が模式的に図示されている。
上記したように、視線の可動範囲84は、人間の視線の可動範囲(人間特性)に応じて適宜設定される。例えば人間の通常の動作では、人間の視線が可動範囲の上限に向けられた場合であっても、黒目の一部は輪郭の内側に見えていることが多い。例えばこのような点を考慮して、視線の可動範囲84を設定することが可能である。
図11Aに示す例では、視線の可動範囲84の端に黒目83の中心位置83Cが移動した場合であっても、黒目83の少なくとも一部が輪郭89の内側にくるように、視線の可動範囲84が設定される。すなわち図11Aでは、視線の可動範囲84は、人間の視線が動作できる範囲内で白目にならないように設定される。
人間特性に基づいた視線の可動範囲84を適用して、人間の眼88とは形状やサイズが異なるモデルの眼の制御を行う際、モデルの視線等を適正に制御することが難しい場合があり得る。例えばユーザを十分にデフォルメしたモデルが作成される場合や、特定のキャラクターがユーザのモデルとして用いられる場合等には、モデルの視線等が意図しない動作を行うといった可能性があり得る。
例えば図11Bに示すように、モデルの眼91が、人間の眼88よりも輪郭90が細い、すなわち上下方向の幅(サイズ)が小さく構成されているとする。このような目の輪郭90が細いデザインでは、黒目92の中心位置が人間特性に基づいた視線の可動範囲84の上端及び下端になった場合、黒目92の領域が完全に輪郭90の外側になり、モデルの眼は白目になってしまう。すなわち図11Aにおいて、黒目83の少なくとも一部が輪郭の内側にくるように設定された視線の可動範囲84をそのまま用いると、モデルの眼91が白目になってしまう状態が生じてしまう。例えばコミュニケーションの最中にモデルの眼が白目になると、コミュニケーション相手に余計な違和感や不快感を与えてしまうといった問題も生じる。
また例えば図11Cには、人間の眼88よりも黒目93のサイズが小さいモデルの眼94が図示されている。この場合にも、黒目93の中心位置が人間の視線の可動範囲84の上端及び下端にきた際には、黒目93の領域が完全に輪郭95の外側になり、白目の状態となってしまう。
本実施形態では、動作制御部72により、モデルごとに定めされたモデルの視線の可動範囲に基づいて、モデルの左眼及び右眼の各々の視線方向が制御される。モデルの視線の可動範囲は、例えばモデルの眼のデザイン(輪郭や黒目の形状及びサイズ)等に応じて予め設定されてもよい。あるいは、モデルの眼のデザインに基づいて、動作制御部72により算出されてもよい。この他、モデルの視線の可動範囲を定める方法等は限定されない。
図12は、モデルの視線の可動範囲の一例を示す模式図である。図12A及び図12Bは、図11B及び図11Cに示すモデルの眼91及び94での視線の可動範囲96及び97の一例を示す模式図である。
図12Aに示す例では、モデルの視線の可動範囲96の端に黒目92の中心位置が移動した場合であっても、黒目92の少なくとも一部が輪郭90の内側にくるように、モデルの視線の可動範囲96が設定される。また図12Bに示す例でも、黒目93が輪郭95の外側に完全に出ないように、モデルの視線の可動範囲97が設定される。
動作制御部72により、動作情報算出部71により検出された視線方向、あるいは人間特性に基づいた視線の可動範囲84に収まるように補正された視線方向が、モデルの視線の可動範囲に合わせて変換される。すなわち、人間特性に基づいた視線の可動範囲84に含まれる任意の値(人間の視線方向)が、モデルの視線の可動範囲内の値(モデルの視線方向)に適宜変換される。
例えば、図11Bにおいて視線の可動範囲84の上端、下端、左端、及び右端にあった黒目92の中心位置(視線方向)は、図12Aに示すモデルの視線の可動範囲96の上端、下端、左端、及び右端の位置に変換される。この変換により、黒目92の中心位置が視線の可動範囲84の上端及び下端で検出された場合でも、モデルの眼91では、黒目92の少なくとも一部は輪郭90と重なることになる。
視線方向を変換する処理として、例えば視線方向の上下及び左右の角度に、モデルの視線の可動範囲に応じた所定の係数を掛け合わせるといった処理が実行される。また例えば、人間の視線の可動範囲からモデルの視線の可動範囲に変換するための変換行列等を用いたフィルター処理により、視線方向が変換されてもよい。この他、視線方向を変換する処理等は限定されず、任意の変換処理が用いられてよい。
動作制御部72により、変換された視線方向に基づいてモデルの左眼及び右眼を制御するための制御値が算出され、モデルの左眼及び右眼の各々の視線方向が制御される。
これにより、モデルの眼の可動域とユーザ(人間)の眼の可動域とを合わせることが可能となり、モデルの眼のデザインに応じてモデルの黒目等を適正に制御することが可能となる。従ってモデルの眼がデフォルメされている場合であっても、モデルの眼が白目になるといったことが防止され、モデルの視線方向等を人間らしく表現することが可能となる。この結果、相手に余計な違和感や不快感を与えることなく、自然なコミュニケーションを実現することが可能となり、コミュニケーションを十分に活性化することが可能となる。
もちろん、ユーザのモデル(モデルの眼)は、図11及び図12に示した例に限定されない。例えば動物やロボット等の人間以外のキャラクターが用いられる場合にも、各キャラクターの視線の可動範囲に基づいて、各キャラクターの視線方向等が適宜制御可能である。
なおモデルの視線方向を制御する際に、モデルの眼における黒目及び白目の面積比(黒目と白目とのバランス)を用いることも可能である。
例えば動作制御部72は、モデルの視線の可動範囲に変換された黒目(視線方向)について、黒目及び白目の面積比が所定の値となるように、黒目の位置を補正するといった処理を実行する。具体的には例えば、黒目の面積の割合が小さい場合には、黒目の位置を、モデルの眼(輪郭)の中心に向けて移動させるといった制御が実行される。
また例えば、モデルの視線の可動範囲(図12A及び図12B参照)が、黒目及び白目の面積比に基づいて設定されてもよい。例えばモデルの黒目が可動範囲の端にある場合でも、輪郭内に表示される黒目の大きさ(面積)が小さくなり過ぎないように、モデルの視線の可動範囲が設定される。また例えば、黒目の領域が輪郭の外側にはみ出さないように、モデルの視線の可動範囲が設定されてもよい。すなわち、黒目と白目との面積比が一定となるように可動範囲が設定されてもよい。この他、黒目及び白目の面積比に基づいてモデルの視線の可動範囲が、適宜設定されてよい。
このように、モデルの左眼及び右眼の各々における黒目及び白目の面積比に基づいて、モデルの左眼及び右眼の各々の視線方向が制御される。これにより、モデルの黒目が表示されない(白目になる)、あるいは不自然に小さく表示されるといった問題が解消され、違和感を軽減することが可能である。この結果、コミュニケーションを十分に活性化することが可能となる。
<その他の実施形態>
本技術は、以上説明した実施形態に限定されず、他の種々の実施形態を実現することができる。
上記では、人間の眼球の動作に関する人間特性である眼球の視線の可動範囲の特性に基づいて、ユーザのモデルの左眼及び右眼がそれぞれ制御された。これに限定されず、人間の眼球の可動速度の特性に基づいて、モデルの両眼が制御されてもよい。
例えば、人間の眼球の可動速度の特性に基づいて、ユーザの黒目の移動速度に関する上限値等が設定可能である。例えば、所定の時間の間に黒目が移動した距離(移動量)に基づいて、黒目の移動速度が算出される。黒目の移動速度が設定された上限値よりも速い場合には、人間の眼球の可動速度を超えているとして、検出ノイズであるといった判定が実行されてもよい。これにより、モデルの視線が突然変化するといったことが回避され、違和感を軽減することが可能となる。この結果、自然なコミュニケーションを実現することが可能となる。
上記した実施形態では、ユーザの両眼を撮像可能なカメラ(左眼用及び右眼用カメラ40L及び40R)を備えた透過型のヘッドマウントディスプレイ(HMD100)が用いられた。これに限定されず、例えばユーザの両眼を撮影可能な没入型のHMDが用いられてもよい。
図13は、その他の実施形態に係るHMDの模式図である。図13Aは、HMD200の外観を模式的に示す斜視図である。図13Bは、HMD200を分解した様子を模式的に示す斜視図である。図13Aに示すように、HMD200は、ユーザの視野を覆うように構成された没入型のヘッドマウントディスプレイである。また図13Bに示すように、HMD200は、ユーザの頭部に装着されるマウント部201と、ユーザの両眼の前方に配置されるディスプレイユニット202と、ディスプレイユニット202を覆うように構成されるカバー部203とを含む。
HMD200では、ユーザの両眼を撮影可能なカメラが、例えばディスプレイユニットに設けられ、ユーザの左眼及び右眼がそれぞれ撮像される。これにより、ユーザのアバター等の左眼及び右眼を制御することが可能である。従って、ユーザは周囲の景色等に邪魔されることなく、アバターを介した自然なコミュニケーション等を行うことが可能となる。
なお、HMD100やHMD200等のヘッドマウントディスプレイに限定されず、ユーザの両眼を撮像可能な任意のデバイスが用いられてもよい。例えば、デジタルカメラを備えたPC、スマートフォン、タブレット等のモバイル機器等において、ユーザの両眼を含む撮像情報(画像)を生成することが可能である。生成された画像からユーザの左眼及び右眼の視線方向等の動作情報が取得され、ユーザのモデルが制御される。このように、ユーザの左眼及び右眼をそれぞれ撮像する場合に限定されず、ユーザの両眼を含む画像を撮像する場合でも本技術は適用可能である。
上記では、ユーザの左眼及び右眼の動作情報として、検出ノイズ等の無効な値を判定し、検出ノイズを無視するといったノイズ除去処理が実行された。例えば、ユーザの髪の毛等が眼にかかっている場合には、継続的に検出ノイズ等が発生する場合があり得る。このような場合、人間の眼の動作に関する人間特性に合わせたデフォルトの動作やランダムな動作を実行するように、ユーザのモデルの左眼及び右眼が制御されてもよい。
例えば、モデルの左眼及び右眼が同じタイミングでランダムに瞬きをするように、モデルの両眼が制御されてもよい。この場合、例えば一定の期間に行われるモデルの瞬きの回数が、人間の平均的な瞬きの回数等の人間特性に基づいて設定されてもよい。
また例えば、ユーザの片方の眼の動作情報のみが継続的に検出ノイズ等を含む場合には、他の片方の眼の動作情報に基づいて、モデルの左右の眼が連動するように制御が行われてもよい。この他、動作情報として無効な検出値等が取得される場合に、人間特性に基づいてモデルの両眼を連動させる任意の制御が実行されてよい。これにより、検出ノイズ等がある場合でも、モデルの両眼を人間らしく振舞わせることが可能となり、自然なコミュニケーションを継続することが可能となる。
またユーザの眼の動作が、ユーザの眼を撮像するカメラ等の認識器(センシングデバイス)の検出可能範囲や検出可能速度を超えてしまう場合、ユーザの左眼及び右眼の視線方向等が検出できない可能性(検出エラー)が生じる。このような場合でも、人間特性に基づいてユーザのモデルの両眼を人間らしく制御することが可能である。
上記では、ユーザのモデルとして、仮想空間に表示されるCGアバターやCGエージェントについて説明した。ユーザのモデルは、仮想空間上のCGモデル等に限定されない。例えばユーザのモデルとして、AI(Artificial Intelligence)ロボット、ロボットエージェント、及びヒューマノイド等が用いられてもよい。本技術は、これらのモデルの左眼及び右眼の動作制御を含む表情制御に適用することが可能である。
上記では、通信部等を備える情報処理装置(HMD100)により、ユーザのモデルの左眼及び右眼の動作を互いに連動させる制御等を含む、本技術に係る情報処理方法が実行された。これに限定されず、クラウドサーバにより、本技術に係る情報処理方法が実行されてもよい。すなわち情報処理装置の機能が、クラウドサーバに搭載されてもよい。この場合、当該クラウドサーバは、本技術に係る情報処理装置として動作することになる。
またユーザの左眼の動作情報とユーザの右眼の動作情報とをそれぞれ取得するコンピュータにより、本技術に係る情報処理方法が実行される場合に限定されず、ユーザの左眼の動作情報とユーザの右眼の動作情報とをそれぞれ取得するコンピュータと、ネットワーク等を介して通信可能な他のコンピュータとが連動して、本技術に係るモデル制御システムが構築されてもよい。
すなわち本技術に係る情報処理方法、及びプログラムは、単体のコンピュータにより構成されたコンピュータシステムのみならず、複数のコンピュータが連動して動作するコンピュータシステムにおいても実行可能である。なお本開示において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれもシステムである。
コンピュータシステムによる本技術に係る情報処理方法、及びプログラムの実行は、例えば左眼及び右眼の動作情報の算出処理やユーザのモデルの制御処理等が、単体のコンピュータにより実行される場合、及び各処理が異なるコンピュータにより実行される場合の両方を含む。また所定のコンピュータによる各処理の実行は、当該処理の一部または全部を他のコンピュータに実行させその結果を取得することを含む。
すなわち本技術に係る情報処理方法及びプログラムは、1つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成にも適用することが可能である。
以上説明した本技術に係る特徴部分のうち、少なくとも2つの特徴部分を組み合わせることも可能である。すなわち各実施形態で説明した種々の特徴部分は、各実施形態の区別なく、任意に組み合わされてもよい。また上記で記載した種々の効果は、あくまで例示であって限定されるものではなく、また他の効果が発揮されてもよい。
なお、本技術は以下のような構成も採ることができる。
(1)ユーザの左眼の動作情報と前記ユーザの右眼の動作情報とをそれぞれ取得する取得部と、
人間の眼の動作に関する人間特性に応じた所定の条件に基づいて、前記取得された左眼の動作情報及び右眼の動作情報に対して非線形となるように、前記ユーザのモデルの左眼及び右眼の各々の動作を互いに連動させて制御する動作制御部と
を具備する情報処理装置。
(2)(1)に記載の情報処理装置であって、
前記取得部は、前記ユーザの前記左眼の撮像情報及び前記右眼の撮像情報に基づいて、前記左眼の動作情報及び前記右眼の動作情報を取得する
情報処理装置。
(3)(1)又は(2)に記載の情報処理装置であって、
前記所定の条件は、目蓋の動作及び眼球の動作の少なくとも1つに関する人間特性に応じた条件である
情報処理装置。
(4)(3)に記載の情報処理装置であって、
前記所定の条件は、前記目蓋の開閉動作が無意識の瞬き動作であるか意識的な眼を閉じる動作であるかを判定するための判定条件を含む
情報処理装置。
(5)(4)に記載の情報処理装置であって、
前記判定条件は、前記目蓋の閉動作の有無を判定するための第1の時間と、前記目蓋の閉動作が前記無意識の瞬き動作であるか前記意識的な眼を閉じる動作であるかを判定するための前記第1の時間よりも長い第2の時間とを含む
情報処理装置。
(6)(4)又は(5)に記載の情報処理装置であって、
前記取得部は、前記左眼の開閉状態、前記右眼の開閉状態、前記左眼の閉眼時間、及び前記右眼の閉眼時間を取得する
情報処理装置。
(7)(5)又は(6)に記載の情報処理装置であって、
前記動作制御部は、前記左眼の閉眼時間及び前記右眼の閉眼時間のいずれか一方が、前記第1の時間よりも長く前記第2の時間よりも短い場合に、前記モデルの左眼及び右眼の両方に瞬き動作を実行させる
情報処理装置。
(8)(5)から(7)のうちいずれか1つに記載の情報処理装置であって、
前記動作制御部は、前記ユーザの左眼及び右眼のいずれか一方の眼の閉眼時間が前記第2の時間よりも長くなるタイミングで他方の眼が閉状態である場合に、前記モデルの左眼及び右眼の両方に閉じる動作を実行させる
情報処理装置。
(9)(5)から(8)のうちいずれか1つに記載の情報処理装置であって、
前記動作制御部は、前記左眼の閉眼時間が前記第1の時間よりも短い場合に前記モデルの左眼の状態を維持し、前記右眼の閉眼時間が前記第1の時間よりも短い場合に前記モデルの右眼の状態を維持する
情報処理装置。
(10)(3)から(9)のうちいずれか1つに記載の情報処理装置であって、
前記所定の条件は、前記眼球の視線の可動範囲に関する条件を含む
情報処理装置。
(11)(10)に記載の情報処理装置であって、
前記取得部は、前記左眼の視線方向、及び前記右眼の視線方向を取得する
情報処理装置。
(12)(10)又は(11)に記載の情報処理装置であって、
前記動作制御部は、前記左眼の視線方向と前記右眼の視線方向とのずれが所定の閾値よりも大きい場合に、前記左眼の視線方向及び前記右眼の視線方向のいずれか一方の視線方向に基づいて、前記モデルの左眼及び右眼の各々の視線方向を制御する
情報処理装置
(13)(10)から(12)のうちいずれか1つに記載の情報処理装置であって、
前記動作制御部は、前記眼球の視線の可動範囲に収まるように、前記左眼の視線方向及び前記右眼の視線方向を補正して、前記モデルの左眼及び右眼の各々の視線方向を制御する
情報処理装置。
(14)(10)から(13)のうちいずれか1つに記載の情報処理装置であって、
前記動作制御部は、前記モデルの眼球の視線の可動範囲に基づいて、前記モデルの左眼及び右眼の各々の視線方向を制御する
情報処理装置。
(15)(10)から(14)のうちいずれか1つに記載の情報処理装置であって、
前記動作制御部は、前記モデルの左眼及び右眼の各々における、黒目及び白目の面積比に基づいて、前記モデルの左眼及び右眼の各々の視線方向を制御する
情報処理装置。