(57)【特許請求の範囲】
【請求項１】
コンピュータにより仮想空間におけるアバターの行動を記録する装置であって、
前記仮想空間を、各々に固有のＩＤが付与された複数のブロックに分割する手段と、
前記仮想空間内で行動するアバターが入室したブロックのＩＤと時刻を含む移動履歴を前記コンピュータの記憶域に記録する手段と、
前記アバターが入った複数のブロックが同一方向に直線的に連続する場合、当該直線の最初と最後のブロックに挟まれた区間の移動履歴を削除する手段と、
前記アバターの行動に伴いイベントが発生した場合、前記イベントの内容、前記移動履歴、および繰り返し回数を１つの行動データとして行動記録ＤＢに記録する手段とを具備し、
前記行動記録ＤＢに記録する手段が、行動の繰り返し回数とともに行動データを記録する手段であって、入室ブロックＩＤとイベント内容が同一の行動データが既に前記行動記録ＤＢに存在する場合には、前記繰り返し回数を１つ増分して記録することを特徴とする、
行動記録装置。
【請求項２】
前記複数のブロックに分割する手段が、全てのブロックについて該ブロックが接する左右、前後、上下の各ブロックと既定の距離だけ重ね合わせて分割する手段であり、前記アバターのブロックへの入室は、前記既定の距離だけ当該ブロック内に入った時刻をもって入室と判断する、請求項１記載の装置。
【請求項３】
前記移動履歴を記録する手段が、さらに、前記アバターが同一のブロックに再入室した場合には前に入室した時点から現在までの移動履歴を削除する手段を有する、請求項１記載の装置。
【請求項４】
前記コンピュータがクライアント・コンピュータであり、サーバとの通信により他のクライアントと仮想空間を共有している場合、前記行動記録ＤＢに記録する手段がさらに、通信インターフェースを介して前記行動データをサーバに送信する手段を有し、これによりサーバにも前記行動データが記録される、請求項１記載の装置。
【請求項５】
各々に固有のＩＤが付与された複数のブロックに分割された仮想空間におけるアバターを操作しているユーザに対してコンピュータにより想起支援を行う装置であって、
アバターの行動を記録したデータである、イベントの内容、移動履歴、および当該行動の繰り返し回数を含む行動データを記録した行動記録ＤＢから、前記アバターが入室したブロックのＩＤを含む行動データを検索する手段と、
前記検索された行動データが想起支援に相応しい行動データであるかを判断する手段であって、該手段が、
前記行動データの重要度を前記イベントの内容と繰り返し回数から計算する手段と、
前記重要度が既定の値より大きい場合に想起支援に相応しい行動データであると判断する手段、
を有し、
前記想起支援に相応しいと判断された行動データを前記コンピュータのディスプレイに表示する手段であって、該手段が、
前記アバターの近傍に、前記行動データの移動履歴を表示する手段と、
前記アバターの近傍に、前記行動データのイベント内容を表示する手段
を有する、
想起支援装置。
【請求項６】
前記移動履歴を表示する手段が、前記アバターと前記イベントが生じた位置の間に、アバターのグラフィックを連続して表示する手段である、請求項５に記載の装置。
【請求項７】
前記イベント内容を表示する手段が、前記アバターの近傍または前記イベントが生じた位置の近傍に、イベントの内容を表示する手段である、請求項５に記載の装置。
【請求項８】
前記仮想空間がサーバ・コンピュータと複数のクライアント・コンピュータと共有され、前記行動記録ＤＢが前記サーバ・コンピュータに記録されており、当該行動記録ＤＢの行動データに基づき前記各手段を行うことにより、他のクライアントの行動データに基づき想起支援がなされる、請求項５に装置。
【請求項９】
前記他のクライアントの行動データに基づく想起支援については自己の行動データに基づく想起支援とは異なる属性で表示される、請求項８記載の装置。
【請求項１０】
コンピュータにより仮想空間におけるアバターの行動を記録する方法であって、
前記仮想空間を、各々に固有のＩＤが付与された複数のブロックに分割する段階と、
前記仮想空間内で行動するアバターが入室したブロックのＩＤと時刻を含む移動履歴を前記コンピュータの記憶域に記録する段階と、
前記アバターが入った複数のブロックが同一方向に直線的に連続する場合、当該直線の最初と最後のブロックに挟まれた区間の移動履歴を削除する段階と、
前記アバターの行動に伴いイベントが発生した場合、前記イベントの内容、前記移動履歴、および繰り返し回数を１つの行動データとして行動記録ＤＢに記録する段階とを具備し、
前記行動記録ＤＢに記録する段階が、行動の繰り返し回数とともに行動データを記録する段階であって、入室ブロックＩＤとイベント内容が同一の行動データが既に前記行動記録ＤＢに存在する場合には、前記繰り返し回数を１つ増分して記録することを特徴とする、
行動記録方法。
【請求項１１】
各々に固有のＩＤが付与された複数のブロックに分割された仮想空間におけるアバターを操作しているユーザに対してコンピュータにより想起支援を行う装置であって、
アバターの行動を記録したデータである、イベントの内容、移動履歴、および当該行動の繰り返し回数を含む行動データを記録した行動記録ＤＢから、前記アバターが入室したブロックのＩＤを含む行動データを検索する段階と、
前記検索された行動データが想起支援に相応しい行動データであるかを判断する段階であって、該段階が、
前記行動データの重要度を前記イベントの内容と繰り返し回数から計算する段階と、
前記重要度が既定の値より大きい場合に想起支援に相応しい行動データであると判断する段階、
を有し、
前記想起支援に相応しいと判断された行動データを前記コンピュータのディスプレイに表示する段階であって、該段階が、
前記アバターの近傍に、前記行動データの移動履歴を表示する段階と、
前記アバターの近傍に、前記行動データのイベント内容を表示する段階
を有する、
想起支援方法。
【請求項１２】
仮想空間におけるアバターの行動を記録するプログラムであって、該プログラムが、コンピュータに、
前記仮想空間を、各々に固有のＩＤが付与された複数のブロックに分割するステップと、
前記仮想空間内で行動するアバターが入室したブロックのＩＤと時刻を含む移動履歴を前記コンピュータの記憶域に記録するステップと、
前記アバターが入った複数のブロックが同一方向に直線的に連続する場合、当該直線の最初と最後のブロックに挟まれた区間の移動履歴を削除するステップと、
前記アバターの行動に伴いイベントが発生した場合、前記イベントの内容、前記移動履歴、および繰り返し回数を１つの行動データとして行動記録ＤＢに記録するステップとを具備し、
前記行動記録ＤＢに記録するステップが、行動の繰り返し回数とともに行動データを記録するステップであって、入室ブロックＩＤとイベント内容が同一の行動データが既に前記行動記録ＤＢに存在する場合には、前記繰り返し回数を１つ増分して記録するステップ、
を実行させる、プログラム。
【請求項１３】
各々に固有のＩＤが付与された複数のブロックに分割された仮想空間におけるアバターを操作しているユーザに対して想起支援を行うためのプログラムであって、該プログラムがコンピュータに、
アバターの行動を記録したデータである、イベントの内容、移動履歴、および当該行動の繰り返し回数を含む行動データを記録した行動記録ＤＢから、前記アバターが入室したブロックのＩＤを含む行動データを検索するステップと、
前記検索された行動データが想起支援に相応しい行動データであるかを判断するステップであって、該ステップが、
前記行動データの重要度を前記イベントの内容と繰り返し回数から計算するステップと、
前記重要度が既定の値より大きい場合に想起支援に相応しい行動データであると判断するステップ、
を有し、
前記想起支援に相応しいと判断された行動データを前記コンピュータのディスプレイに表示するステップであって、該ステップが、
前記アバターの近傍に、前記行動データの移動履歴を表示するステップと、
前記アバターの近傍に、前記行動データのイベント内容を表示するステップ
を有する、
ステップを実行させる、プログラム。
【請求項１４】
請求項１２〜１３の何れかに記載のプログラムをコンピュータ可読媒体に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想空間における行動履歴の記録および再生に関し、特に行動履歴の効率的記録および再生を行う装置および方法に関する。
【背景技術】
【０００２】
仮想空間は、コンピュータを利用して擬似的に作り出される空間である。従って現実では実現が困難であったサービスを提供することが可能になる。その反面、人間の記憶など知的処理能力には限界があるため、仮想空間内では大量かつ多種多様な経験をうまく活用できない状況が生じる。例えば自由に仮想空間内を移動している時、その風景などから、過去に何か特別な経験をしたことがあるように思われても、その詳細が思い出せない場合がある。あるいは、何かを目的に、ある場所や建物にたどり着いたとして、そこからの正確な目的地までの移動経路を思い出せない場合がある。さらには、曖昧な記憶で行動していると、何度も同じ道を行き来してしまったり、無用な経験をしてしまったりすることもある。加えて、仮想空間では、短時間に引っ越しや建て替えなどか可能であるため、上記のような状況をますます引き起こしやすくなっている。
【０００３】
一方、仮想空間内の動作および操作を記録する方法として特開２００１−８４２０９「仮想空間履歴記録方法及び装置及びこの方法を記録した記録媒体」がある。しかし、この方式では、記録するデータの効率的な保存方法について何ら配慮が無いので、膨大な仮想空間の履歴をそのまま記録することになり、実際に適用するのは非現実的である。また記録したデータに基づき効果的に想起支援する方法が記載されていない。さらに他人の行動を活用する方法について具体的な解決策が記載されていない。
【特許文献１】特開２００１−８４２０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上述した従来技術の問題点に鑑みてなされたものであり、効率的な行動履歴の記録と、想起支援を行う再生の方法およびシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、コンピュータにより仮想空間におけるアバターの行動を記録する装置であって、前記仮想空間を、各々に固有のＩＤが付与された複数のブロックに分割する手段と、前記仮想空間内で行動するアバターが入室したブロックのＩＤと時刻を含む移動履歴を前記コンピュータの記憶域に記録する手段と、前記アバターが入った複数のブロックが同一方向に直線的に連続する場合、当該直線の最初と最後のブロックに挟まれた区間の移動履歴を削除する手段と、前記アバターの行動に伴いイベントが発生した場合、前記イベントの内容、前記移動履歴、および繰り返し回数を１つの行動データとして行動記録ＤＢに記録する手段とを具備し、前記行動記録ＤＢに記録する手段が、行動の繰り返し回数とともに該行動データを記録する手段であって、入室ブロックＩＤとイベント内容が同一の行動データが既に前記行動記録ＤＢに存在する場合には、前記繰り返し回数を１つ増分して記録することを特徴とする、行動記録装置を提供する。効率的に行動を記録した上記行動記録ＤＢは後の想起支援に用いられる。
【０００６】
想起支援を行うために、本発明は、各々に固有のＩＤが付与された複数のブロックに分割された仮想空間におけるアバターを操作しているユーザに対してコンピュータにより想起支援を行う装置であって、アバターの行動を記録したデータである、イベントの内容、移動履歴、および当該行動の繰り返し回数を含む行動データを記録した行動記録ＤＢから、前記アバターが入室したブロックのＩＤを含む行動データを検索する手段と、前記検索された行動データが想起支援に相応しい行動データであるかを判断する手段であって、該手段が、前記行動データの重要度を前記イベントの内容と繰り返し回数から計算する手段と、前記重要度が既定の値より大きい場合に想起支援に相応しい行動データであると判断する手段を有し、前記想起支援に相応しいと判断された行動データを前記コンピュータのディスプレイに表示する手段であって、該手段が、前記アバターの近傍に、前記行動データの移動履歴を表示する手段と、前記アバターの近傍に、前記行動データのイベント内容を表示する手段を有する、想起支援装置を提供する。これによりアバターを操作するユーザに適切に想起支援がなされる。
【０００７】
さらに、上記行動データをクライアントだけでなくサーバ・コンピュータにも記録することにより、サーバに接続された複数のクライアントの行動が記録され、この記録により自己の行動記録による想起支援のみならず他人の行動記録に基づく想起支援がなされる。
【発明の効果】
【０００８】
本発明によれば仮想空間における効率的な行動履歴の記録と想起支援を行うことが可能になる。ユーザの記憶が曖昧な場合や、仮想空間に未経験なユーザであっても迷わずに行動することを支援することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面に従って本発明の実施例を説明する。図１は、本実施形態に係るクライアント・コンピュータ１００とサーバ・コンピュータ１２０の接続例を示す。クライアント・コンピュータ１００と、サーバ・コンピュータ１２０はインターネット１１０によって接続されている。この接続は無線、有線に限らない。図２はクライアント・コンピュータ１００のハードウェア構成例である。クライアント・コンピュータ１００は、システム・バス２５０に接続された、メイン・メモリ２１０やハードディスクドライブ２４０などの記憶装置、演算処理を行うＣＰＵ２２０、ハードディスクドライブ２４０をコントロールするＩＤＥコントローラ２３０、仮想空間を表示するためのディスプレイ２７０をコントロールするディスプレイ・コントローラ２６０、キーボード等の入出力を行うＩ／Ｏインターフェース２９０、そしてネットワークインターフェースカードなどの通信インターフェース２８０を有する。これらのハードウェア構成は必須ではなく、また一例に過ぎず一般的なパーソナル・コンピュータの機能を持つハードウェアであれば不都合なく使用できる。サーバ・コンピュータ１２０のハードウェアもクライアント・コンピュータ１００と同様、一般的なパーソナル・コンピュータを機能を持つハードウェアであれば不都合なく使用できる。
【００１０】
サーバ・コンピュータ１２０は、記憶装置に記録されたプログラムを実行することで、仮想空間サーバとして機能する。サーバ・コンピュータ１２０の記憶装置は仮想世界に存在するオブジェクトなどの立体的形状を示すデータ、例えば３Ｄ形状モデルと呼ばれるデータを記憶している。サーバ・コンピュータ１２０は、このようなデータを含む各種の情報を、クライアント・コンピュータ１００から受けた要求に応じてクライアント・コンピュータ１００に対し送信する。サーバは複数のクライアントと通信を行い、クライアント同士は仮想空間を共有することができる。クライアント・コンピュータ１００は、記憶装置に記憶されたプログラムを実行することで、前記３Ｄ形状モデルデータを含む仮想空間をディスプレイ２７０に表示する。キーボードやマウス等の入力がＩ／Ｏインターフェースを介して入力されると仮想空間におけるユーザーの化身であるアバターがその入力に応じて３次元の空間を移動する。またアバターの行動や、ユーザからの特定の入力、仮想空間における特定の環境、特定の条件になると様々なイベントが生じる。これらのアバターの行動に伴い生じたイベントはディスプレイ２７０に表示される。ハードディスク等の記憶装置や、フレキシブル・ディスク、ＣＤＲＯＭ、またはＤＶＤなどのコンピュータ可読媒体に記録された本発明のプログラムを実行することにより、上記アバターの行動およびイベントの情報はクライアント・コンピュータ１００の記憶装置に効率的に記憶される。好ましくはアバターの行動およびイベントの情報はサーバ・コンピュータ１２０にも効率的に記憶される。そして記憶された情報はアバターの現在の行動に応じて検索され、読み出され過去の記録がディスプレイ２７０に表示される。
【００１１】
本発明は図３に示されるように、大きく分けて２つの処理部、行動記録部３１０および想起支援部３２０から構成される。行動記録部３１０は仮想空間におけるアバターの行動履歴を行動記録ＤＢ３３０へ効率的に記録する。想起支援部３２０は前記行動記録ＤＢ３３０から過去の行動履歴を読み取りユーザに過去の記録を呼び起こすための想起支援を行う。
【００１２】
［行動記録部の動作］
図４に行動記録部３１０の処理フローを示す。まずステップ４１０で行動データの初期化を行う。初期化とは行動データを行動記録ＤＢ３３０へ記録するためのデータセットを準備することを意味する。このデータセットを図５に示す。図５で示されるようにデータセットは大きく分けて、行動データ５１０、イベント履歴５２０、移動履歴５３０からなる。それらのデータ形式は以下の通りである。行動データ５１０は、イベントＩＤ、イベント履歴５２０へのポインタ、移動履歴５３０へのポインタ、繰り返し回数から構成されている。ポインタとは、情報処理分野ではよく知られているように、データそのものではなくそのデータが記録されている場所を示す情報である。イベントＩＤとは移動を含むイベントの識別子である。例えばアバター同士のチャットや、座る、買う、立つ、ジェスチャーをする、何かを装備する、触るなど全てのイベントに予め定義されたＩＤ番号である。イベント履歴５２０は、イベントの発生時刻とイベントの内容から構成される。移動履歴５３０は３Ｄ空間内のブロックを示す識別子（ブロックＩＤ）とそのブロックに入った時刻の複数の組によって構成される。繰り返し回数は、その行動が何回繰り返されたかを表す値であり、０なら初めての行動、１なら過去に１度同じ行動を行ったことを表す。なお行動データ５１０、イベント履歴５２０、移動履歴５３０は行動記録ＤＢに個別に記録される。
【００１３】
次にステップ４２０でブロックの検出を行う。本発明でのブロックの定義は以下の通りである。空間をx, y, z 方向に n 分割し、それぞれのブロックを B(xn,yn,zn)で表す。例えば、256メートル四方の空間がある場合、一つのブロックを4メートル四方として分割すれば、B(0,0,0) から B(63,63,63) までの 262144個(64x64x64) のブロックが得られる。このとき、B(xn,yn,zn)の左右、前後、上下に接するブロックは、B(xn+1,yn,zn),B(xn-1,yn,zn), B(xn,yn+1,zn), B(xn,yn-1,zn), B(xn,yn,zn+1), B(xn,yn,zn-1)と表現される。図１６にブロックが 2x2x2 の例を示す。ブロックを移動したかどうかは、単に異なるブロックに移動したかどうかだけでは判断されない。移動元ブロックから、一定距離離れた時に、始めて離れたと判断する。この一定距離を DistanceH とする。いったん移動したと見なされた後は直ちに移動先ブロックからの距離が計算されるが、すでに DistanceH 分だけ移動先のブロックに入っているので、ブロックの境界でふらふらしていても、元のブロックにすぐに戻ったと見なされるケースが削減される。戻ったとみなす為には、戻る側に DistanceH 分だけ入り込む必要がある。こうして、ヒステリシスを持たせることでブロック境界付近でのばたつきを防ぐ。具体例として一つの区画が 256m 四方の空間の場合一つのブロックは4m 四方程度が妥当である。この場合、64x64x64個のブロックが存在することになる。ブロックＩＤは座標そのものとして (x,y,z) で表しても良いし、1〜262145の番号で表しても良い。座標が明確になれば良い。この場合は重なり DistanceH は50cm 程度が適当である。図１７にブロックの重ね合わせを示す。ブロックＡとＢは既定の距離 DistanceH 分ずつ重ね合わされている。実際の３次元仮想空間では全てのブロックについて該ブロックが接する左右、前後、上下の各ブロックと双方に DistanceH だけ重ね合わせて分割されている。アバターのブロックへの入室はどちらかに DistanceH だけブロック内に入った時刻をもって入室と判断する。
【００１４】
次にステップ４３０で、移動を含む全イベントリストの先頭のイベントを抽出する。イベントは移動を含め記憶装置に順番にキューされており、そのイベントのリストをイベントリストと呼ぶ。キューが空の場合はキューされるのを待つ。ステップ４４０で抽出したイベントが移動であるか、そうでないかを判断する。抽出したイベントが移動の場合、処理はステップ４８０へ移り、移動後の座標と時刻を取得する。具体的には移動履歴５３０にブロックＩＤと時刻を追記する。そしてステップ４９０で別のブロックに移動したかどうか判断される。この判断は上記で説明したように移動元ブロックから、一定距離（DistanceH）離れた時に、始めて離れたと判断する。別のブロックに移動している場合には処理はステップ４２０へ戻る。別のブロックに移動していないと判断された場合には処理は４３０へ戻る。
【００１５】
ステップ４４０で抽出したイベントが移動でない場合、ステップ４５０で移動履歴のスリム化を行う。移動ではないイベントが発生した時、一つの行動が完了したとし見なし、行動データの保存を開始する。イベント履歴は、イベント発生時刻とイベント内容からなり、イベント内容は、イベント名称と特徴とする項目、会話であれば会話内容なども記録の対象となる。行動データは、好ましくは個人の行動データのみを保存するクライアントの行動記録ＤＢ３３０と、全ての利用者の行動データを保存するサーバの行動記録ＤＢの両方に記録する。記録するイベント内容は、それぞれのＤＢによって、サーバの行動記録ＤＢには会話の内容は保持しないなど、事前に設定することが可能である。なおサーバ行動記録ＤＢへの書き込みデータは通信インターフェース２８０を介してサーバへ送信し書き込みを行う。
【００１６】
仮想空間の中のアバターは同じブロックに何回も入室している可能性がある。つまり無駄な寄り道や、回り道をしているケースがある。そのような場合、最短経路を求めることによって冗長なデータを削除する。図６にこのスリム化処理の方法を図示する。スリム化前の移動履歴（６００）があるとすると、冗長な経路を削除（６２０）する。スリム化後の移動履歴（６３０）を記録する。図６では説明の都合上２次元のベクトルで表現しているが実際には３次元でスリムを行う。移動履歴が下記の場合、経路がどのように削除されるかを説明する。
【００１７】
[1,1,0] --> [2,1,0]--> [2,2,0] --> [3,2,0] --> [4,2,0] --> [3,2,0] --> [3,3,0]--> [4,3,0] --> [3,3,0] --> [3,4,0] -->[2,4,0] --> [1,4,0]--> [1,3,0] --> [2,3,0] -->[3,3,0] --> [3,4,0] --> [4,4,0] -->[5,4,0] --> (goal)
【００１８】
経路の途中では再び同じブロックを通過している。例えば、[3,2,0]は２回入室している。このような場合、その間の[4,2,0]は破棄してしまう。同様に[3,4,0]も繰り返し登場しているのでその間の移動履歴は削除する。すなわちアバターが同一のブロックに再入室した場合には前に入室した時点から現在までの移動履歴を破棄する。アルゴリズム的には現在のブロックより過去の方を見てペアで挟まれた経路を削除する。別の態様として現在のブロックより未来の方を見てペアを捜し挟まれた経路を削除する方法も取り得る。そして同一地点の１つを削除する。削除対象および同じ地点を削除すると次のようにスリム化される。
【００１９】
[1,1,0] --> [2,1,0] --> [2,2,0]--> [3,2,0] --> [3,3,0] --> [3,4,0] --> [4,4,0] --> [5,4,0]--> (goal)
【００２０】
このような経路のスリム化を好まないユーザは選択により解除することも可能である。次に移動するブロックが左、右、前、後、上、下に連続して同じ方向になる場合には、挟まれるブロックに関する移動履歴は省略することができる。すなわちアバターが入室した複数のブロックが同一方向に直線的に連続する場合、直線の最初と最後のブロックに挟まれた区間の移動履歴を削除する。上記３次元ベクトルの移動履歴の例であれば、[3,2,0] --> [3,3,0] --> [3,4,0] の移動は直線であるので下記のように[3,2,0] --> [3,4,0] と省略することができる。
【００２１】
[1,1,0] --> [2,1,0] --> [2,2,0]--> [3,2,0] -->--> [3,4,0] --> [4,4,0] --> [5,4,0] --> (goal)
【００２２】
次にステップ４６０でイベント履歴５２０と移動履歴５３０へのポインタを含む行動データ５１０を行動記録ＤＢ３３０に追加して記録する。好ましくは行動データをサーバ・コンピュータ１２０の行動履歴ＤＢにも追記する。クライアント・コンピュータ１００の行動記録ＤＢ３３０に対しては、ほとんどのデータ、例えば会話などがあれば、その内容についても、詳細に保存する。サーバ・コンピュータ１２０の行動記録ＤＢには、プライバシーやセキュリティに配慮した上で、許可されたものだけを記録するようにする。図７にイベントの種類とクライアントとサーバにおいて何を記録するかのテーブルを示す。行動データ５１０は、さらに繰り返し回数が加えられ行動記録ＤＢ３３０に保存される。追記する際には、過去に時刻は異なるが、移動履歴５３０およびイベント履歴５２０が同じ行動データが存在しないか検索し、存在する場合には繰り返し回数のみを増加させる。なお同じ行動データが存在しない場合には繰り返し回数０を有する行動データとして記録する。
【００２３】
次にステップ４７０で行動データのスリム化を行う。この処理のより詳細なステップを図８に示す。図８のステップ８１０で行動記録ＤＢ３３０のサイズが既定の最大保管サイズに達した時点で記録データのスリム化を行う。スリム化は重要度の低い記録データの破棄処理（ステップ８３０）との冗長性のある記録データのマージ処理（ステップ８４０〜８８０）による。なおスリム化を行うタイミングは他の要因をトリガーにしても良い。またどちらか一方の処理でも構わない。好ましくはこの処理はサーバ側でも同様に行われる。まずステップ８１０で行動記録ＤＢ３３０の現在の使用サイズを取得する。次にステップ８２０で予め決めておいた最大サイズ actDBsizeMax と比較する。このサイズを超える場合には、ステップ８３０のスリム化処理に進む。このサイズを超えない場合は、何もせずに処理を終了する。ステップ８３０では重要度が低いと想定される行動データを削除する。重要度は行動データのうち、繰り返し回数Ｃ、イベント番号Ｅ、保存期間Ｔ、移動距離Ｒを元データとし、繰り返し回数Ｃとイベント番号Ｅから重要度を算出するＦｃ(Ｃ,Ｅ)関数と、保存期間Ｔとイベント番号Ｅから重要度を算出するＦｔ(Ｔ,Ｅ)と、移動距離Ｒとイベント番号Ｅから重要度を計算するＦｒ(Ｒ,Ｅ)の総和により決定する。例えば以下の式により重要度Ｗを計算し、この値が一定以下のものを重要度が低いと判断し削除する。
Ｗ = Ｆｃ(Ｃ,Ｅ) + Ｆｔ(Ｔ,Ｅ) + Ｆｒ(Ｒ,Ｅ) ・・・ 式１
Ｆｃ(Ｃ,Ｅ)関数は、おおよそ繰り返し回数Ｃと正の相関関係を持って値を出力する。Ｆｔ(Ｔ,Ｅ)は、おおよそ保存期間Ｔと正の相関関係を持って値を出力する。Ｆｒ(Ｒ,Ｅ)も同様に、おおよそ移動距離と正の相関関係を持って大きな値を出力する。それぞれの関数にはイベント番号Ｅが与えられるので、イベント番号別に重みを付けて計算される。例えば以下のように計算する。
Ｆｃ(Ｃ,Ｅ) = kc(Ｅ) x Ｃ : kc(E)はイベント番号Ｅにおける、繰り返し回数に対する重み係数
Ｆｔ(Ｔ,Ｅ) = kt(Ｅ) x Ｔ : kt(E)はイベント番号Ｅにおける、保存期間に対する重み係数
Ｆｒ(Ｒ,Ｅ) = kr(Ｅ) x Ｒ : kr(E)はイベント番号Ｅにおける、移動距離に対する重み係数
イベント番号によっては、繰り返し回数を重視するもの、保存期間を重視するもの、あるいは移動距離を重視するものがあるため、このように個別に計算し合計する。
【００２４】
しかしながら繰り返し数が少ないことが重要度が低いということにはならない点に注意する必要がある。たった一回であっても、本人にとっては貴重な思い出の可能性もある。保存期間が長いからといって重要でないとは言えない場合もある。むしろ古い思い出ほど思い出し支援には必要かもしれない。そのような観点から、実際に削除を行う場合にユーザへプロンプトを表示して削除確認するようにしてもよい。
【００２５】
次にステップ８４０で行動記録ＤＢ３３０に保存されている行動データについて、イベント内容が同じで、かつ、イベントの発生ブロックが同じものを、経路の重なり具合に合わせて、統合を試みる。より具体的には、直前に記録した行動データと、イベント内容とイベントの発生ブロックが同一、かつ、スタート地点が他方の経路上にある行動データを、行動履歴ＤＢ３３０から探し行動データリストを作成する。ステップ８５０でリストにある行動データのうち、一つを抜き出す。空の場合は処理は終了する。ステップ８６０で経路が完全に重なる行動データである場合はステップ８７０へ進み、重ならない部分がある行動データである場合はステップ８８０へ進む。ステップ８７０で、行動データの短い方の経路を削除し、長い方の経路を残す。繰り返し回数は両方の行動データの合計として記録する。この処理を図９に示す。図９において行動データＢの経路は、行動データＡの経路に完全に含まれるので、行動データを一本にまとめる。つまり、行動データＢは廃棄する。この時、繰り返し回数は、行動データＡと行動データＢの二つを合わせたものを行動データＡの繰り返し回数として記録する。Ｇは移動先のＧｏａｌを示す。ステップ８８０は、行動データで重ならない部分がある場合に繰り返し回数の多い行動データを残す処理である。この場合も繰り返し回数は合計する。この処理を図１０に示す。行動データの経路が異なる場合、繰り返し回数の多い方の経路を残す。図１０の場合は、Ｂの方が繰り返し回数が多い場合として説明している。繰り返し回数は、行動データＡと行動データＢの二つを合わせたものを行動データＡの繰り返し回数として記録する。以上で図４の各ステップのフローの説明を終わる。
【００２６】
［想起支援部の動作］
図１１に想起支援部３２０の処理フローを示す。想起支援とは本人あるいは他人の行動データの履歴を活用し、利用者が仮想空間上で何か行動しようとするときに、過去の代表的な行動例を仮想空間上にビジュアルに示すことで、利用者に思い出しを起こさせたり、次の行動への動機を与えたりすることである。まずステップ１１１０で想起支援の対象となるアバターが位置しているブロックを検出する。検出されたブロックをＣとする。次にステップ１１２０で行動記録ＤＢ３３０からブロックＣを経路に含む行動データをリストアップする。次にステップ１１３０で想起支援の対象となる行動データが無かった場合は、想起支援を行わず、ステップ１１５０に進み、次のブロックの移動を待つ。想起支援の対象となる行動データがある場合は、ステップ１１４０に進み想起支援を行う。好ましくはクライアントの行動記録ＤＢだけでなくサーパの行動記録ＤＢからも行動データを検索してリストアップすると他人の行動データに基づく想起支援が可能になり、想起支援のバリエーションが増える。このステップ１１４０のより詳細なフローは後で説明する。ステップ１１５０ではブロックを移動するイベントが発生するのを待つ。そしてステップ１１６０で想起支援を継続するかどうか判断する。この継続の判断は主にアバターを動かしているユーザの入力により行われる。
【００２７】
図１２にステップ１１４０における想起支援のより詳細な処理フローを示す。ステップ１２１０では、クライアントあるいはサーバの行動データのリストの先頭から一つ行動データを抜き出す。もし、両方のリストが既に空であった場合は処理はステップ１２４０に進む。ステップ１２４０では行動データで示されるイベント発生ブロックにすでに達している場合は想起支援の表示を削除する。また想起支援の重なり合いなど、表示上の見づらさがあれば調整する。ステップ１２１０でリストが空でない場合にはステップ１２２０で、抜き出した行動データが想起支援に相応しい行動データか判断する。重要度の算出には式１を用いて算出する。この値が一定以下の行動データは重要度が低いと判断し、想起支援を行わない。この場合、処理はステップ１２１０へ戻る。行動データが重要と判断された場合にはステップ１２３０で想起支援を行う。
【００２８】
想起支援における表示の方法を図１３、図１４に示す。行動データで示される移動履歴に従って、その先に過去にイベントが発生した地域があることを示すガイド線を、空間上に点線や実線を引いたり、アバターの姿を連続的に配置することで提示する。具体的にはアバターとイベントが生じた位置（Goal）の間にアバターのグラフィックをディスプレイに連続して表示し、アバターの近傍またはイベントが生じた位置の近傍にイベントの内容をディスプレイにテキスト表示する。グラフィックの配置は過去の移動履歴をなぞるように正確に描画する。しかしながら経路上に時間の変遷により以前には存在しなかった建物や地形がある場合、それらを迂回するように描画する。もちろんそれを無視してゴールまで直線的に引いても構わない。好ましくはガイドの先に、どんなイベントが発生したかを示す、テキストやアイコンを提示する。好ましくはそのガイドが、自分自身の経験であるのか、他人の経験であるかを分かるようにする。自分自身の経験とは、クライアントの行動記録ＤＢから得られた過去の行動データであり、他人の経験とは、サーバの行動記録ＤＢから得られた過去の行動データである。この場合、他人の行動データなのか、自己の行動データなのか分かるように表示属性を変更して提示する。例えば他人の行動データの場合には自己の行動データに基づく想起支援とは異なる、色、形、輝度などで表示する。
【００２９】
図１３のアバターＡは過去にお茶を飲みに行った行動データに基づき想起支援がなされている。アバターＢは銀行でお金を下ろした行動データに基づき想起支援がなされている。図１４の想起支援はアバターを連続的に配置する方法の例である。この場合の表示方法についての一例を図１５で説明する。図１５ではブロックＣにアバターＢが到達した時の想起支援の表示例を示している。Ｃからイベント発生（Goal）した場所に向かってアバターのグラフィック画像を１から順に５まで段階的に縮小表示して一部を重ね合わせながら表示していく。またこの例の場合は「お金を下ろす」というテキストをイベントが発生したブロックＧの近傍に表示している。上記表示方法は一例であって種々の変形が可能である。例えば「お金を下ろす」というイベントは動画アイコンを用いてお金が下ろされている様子をアニメーション表示してもよい。また高速なクライアント・コンピュータであれば、予めアバターの歩く動作を動画像データとして記憶しておくことにより、アバターの近傍からブロックＧに向かってアニメーションのように動画像を表示しても良い。
【図面の簡単な説明】
【００３０】
【図１】本実施形態に係るクライアントとサーバの接続例を示す図である。
【図２】クライアント・コンピュータ１００のハードウェア構成例である。
【図３】本発明の行動記録部および想起支援部を示す図である。
【図４】本発明の行動記録部の処理フローである。
【図５】行動データのデータセットを示す図である。
【図６】経路のスリム化処理の方法を示す図である。
【図７】イベントの種類とクライアントとサーバにおいて何を記録するかのテーブルを示す。
【図８】行動データのスリム化のより詳細なステップである。
【図９】行動データの統合の方法を示す図である。
【図１０】行動データの別の統合の方法を示す図である。
【図１１】想起支援部の処理フローを示す図である。
【図１２】想起支援部のより詳細な処理フローである。
【図１３】想起支援部における表示方法を示す図である。
【図１４】想起支援部における別の表示方法を示す図である。
【図１５】表示方法についての一例を示す図である。
【図１６】仮想空間のブロック分割例を示す図である。
【図１７】ブロックの重なりを説明する図である。
【符号の説明】
【００３１】
１００  クライアント・コンピュータ
１１０  インターネット
１２０  サーバ・コンピュータ
２１０  メイン・メモリ
２２０  ＣＰＵ
２３０  コントローラ
２４０  ハードディスクドライブ
２５０  システム・バス
２６０  ディスプレイ・コントローラ
２７０  ディスプレイ
２８０  通信インターフェース
２９０  Ｉ／Ｏインターフェース
３１０  行動記録部
３２０  想起支援部
３３０  行動記録ＤＢ
５１０  行動データ
５２０  イベント履歴
５３０  移動履歴
【図１】
0005004777.tif 000002
【図２】
0005004777.tif 000003
【図３】
0005004777.tif 000004
【図４】
0005004777.tif 000005
【図５】
0005004777.tif 000006
【図６】
0005004777.tif 000007
【図７】
0005004777.tif 000008
【図８】
0005004777.tif 000009
【図９】
0005004777.tif 000010
【図１０】
0005004777.tif 000011
【図１１】
0005004777.tif 000012
【図１２】
0005004777.tif 000013
【図１３】
0005004777.tif 000014
【図１４】
0005004777.tif 000015
【図１５】
0005004777.tif 000016
【図１６】
0005004777.tif 000017
【図１７】
0005004777.tif 000018