(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-19
(45)【発行日】2023-10-27
(54)【発明の名称】処理システム、情報処理装置、プログラム及び処理方法
(51)【国際特許分類】
G06T 13/40 20110101AFI20231020BHJP
【FI】
G06T13/40
(21)【出願番号】P 2019164169
(22)【出願日】2019-09-10
【審査請求日】2022-09-08
(73)【特許権者】
【識別番号】000134855
【氏名又は名称】株式会社バンダイナムコエンターテインメント
(74)【代理人】
【識別番号】100104710
【氏名又は名称】竹腰 昇
(74)【代理人】
【識別番号】100124682
【氏名又は名称】黒田 泰
(74)【代理人】
【識別番号】100090479
【氏名又は名称】井上 一
(72)【発明者】
【氏名】森本 直彦
【審査官】益戸 宏
(56)【参考文献】
【文献】特開平9-330424(JP,A)
【文献】特開2018-28813(JP,A)
【文献】特開2011-253308(JP,A)
【文献】特開2002-319035(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/40
A63F 13/55
(57)【特許請求の範囲】
【請求項1】
反映元モデルのモーションを、前記反映元モデルとは骨格形状が異なる反映先モデルのモーションに反映させるリターゲット処理を行うリターゲット処理部と、
前記リターゲット処理後の前記反映先モデルのモーションの補正処理を行う補正処理部と、
を含み、
前記補正処理部は、
前記反映先モデルの第1基準関節位置と、前記反映先モデルの対象面への接触部位の関節位置である第1接触関節位置とを通る線が、前記反映元モデルの前記対象面への接触部位の関節位置である第2接触関節位置を通過するように、前記第1基準関節位置を回転中心として、前記反映先モデルの前記第1接触関節位置を含む関節位置群を回転移動させる回転処理と、
前記関節位置群に対応する骨群のスケールを変更するスケーリング処理を、
前記補正処理として行うことを特徴とする処理システム。
【請求項2】
請求項1において、
前記補正処理部は、
前記第1基準関節位置と前記第1接触関節位置の距離と、前記第1基準関節位置と前記第2接触関節位置の距離との比に応じたスケーリング率で、前記骨群の前記スケーリング処理を行うことを特徴とする処理システム。
【請求項3】
請求項1又は2において、
前記リターゲット処理部は、
時系列に入力される前記反映元モデルのモーションを前記反映先モデルのモーションに反映させる前記リターゲット処理を行い、
前記補正処理部は、
前記リターゲット処理後の時系列の前記反映先モデルのモーションに対して、前記補正処理を行うことを特徴とする処理システム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記反映元モデルのモーションは、人物のモーションキャプチャにより取得されたモーションであり、前記反映先モデルのモーションは、仮想的なキャラクタのモーションであることを特徴とする処理システム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記リターゲット処理部、前記補正処理部は、時系列に入力される前記反映元モデルのモーションに基づいて、リアルタイムに前記リターゲット処理、前記補正処理を行うことを特徴とする処理システム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記補正処理部は、
前記反映先モデル又は前記反映元モデルの骨群の屈伸状態を判定し、前記屈伸状態に応じて、前記補正処理として、前記回転処理及び前記スケーリング処理を行うか否かを判断することを特徴とする処理システム。
【請求項7】
請求項6において、
前記補正処理部は、
前記屈伸状態が、第1状態であると判定された場合には、前記補正処理として、前記回転処理及び前記スケーリング処理を行い、前記屈伸状態が、前記第1状態よりも屈曲した状態である第2状態であると判定された場合には、前記補正処理として、前記第1接触関節位置を前記対象面に設定するインバースキネマティクス処理を行うことを特徴とする処理システム。
【請求項8】
請求項7において、
前記補正処理部は、
前記屈伸状態が、前記第1状態と前記第2の状態の間の第3状態であると判定された場合には、前記骨群のスケールを変更する第2スケーリング処理を行い、前記第2スケーリング処理の後に前記インバースキネマティクス処理を行うことを特徴とする処理システム。
【請求項9】
請求項7において、
前記補正処理部は、
前記屈伸状態が、前記第2状態であると判定された場合には、前記骨群のスケールを変更する第2スケーリング処理を行い、前記第2スケーリング処理の後に前記インバースキネマティクス処理を行うことを特徴とする処理システム。
【請求項10】
請求項8又は9のいずれかにおいて、
前記補正処理部は、
前記第2スケーリング処理における前記骨群のスケーリング率を、前記屈伸状態に応じて変化させることを特徴とする処理システム。
【請求項11】
請求項6乃至10のいずれかにおいて、
前記補正処理部は、
前記反映先モデルの前記第1基準関節位置と前記第1接触関節位置との距離、前記第1基準関節位置と前記第1接触関節位置との間の関節での関節角、前記反映元モデルの第2基準関節位置と前記第2接触関節位置との距離、又は前記第2基準関節位置と前記第2接触関節位置との間の関節での関節角に基づいて、前記屈伸状態を判定することを特徴とする処理システム。
【請求項12】
請求項1乃至11のいずれかに記載の処理システムを含むことを特徴とする情報処理装置。
【請求項13】
反映元モデルのモーションを、前記反映元モデルとは骨格形状が異なる反映先モデルのモーションに反映させるリターゲット処理を行うリターゲット処理部と、
前記リターゲット処理後の前記反映先モデルのモーションの補正処理を行う補正処理部として、
コンピュータを機能させ、
前記補正処理部は、
前記反映先モデルの第1基準関節位置と、前記反映先モデルの対象面への接触部位の関節位置である第1接触関節位置とを通る線が、前記反映元モデルの前記対象面への接触部位の関節位置である第2接触関節位置を通過するように、前記第1基準関節位置を回転中心として、前記反映先モデルの前記第1接触関節位置を含む関節位置群を回転移動させる回転処理と、
前記関節位置群に対応する骨群のスケールを変更するスケーリング処理を、
前記補正処理として行うことを特徴とするプログラム。
【請求項14】
反映元モデルのモーションを、前記反映元モデルとは骨格形状が異なる反映先モデルのモーションに反映させるリターゲット処理と、
前記リターゲット処理後の前記反映先モデルのモーションの補正処理と、
を行い、
前記補正処理において、
前記反映先モデルの第1基準関節位置と、前記反映先モデルの対象面への接触部位の関節位置である第1接触関節位置とを通る線が、前記反映元モデルの前記対象面への接触部位の関節位置である第2接触関節位置を通過するように、前記第1基準関節位置を回転中心として、前記反映先モデルの前記第1接触関節位置を含む関節位置群を回転移動させる回転処理と、
前記関節位置群に対応する骨群のスケールを変更するスケーリング処理と、
を行うことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理システム、情報処理装置、プログラム及び処理方法等に関する。
【背景技術】
【0002】
従来より、モーションキャプチャにより取得されたモーションデータに基づいて、仮想空間に配置される仮想的なキャラクタを動作させるシステムが知られている。このようなシステムの従来技術としては、例えば特許文献1に開示される技術がある。特許文献1では、基準モーションにしたがって仮想的なキャラクタを動作させる場合に、音楽データに基づいて基準モーションの補正処理を行うことで、楽曲に合うようにキャラクタを動作させている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
モーションキャプチャなどを用いて取得された反映元モデルのモーションを、仮想的なキャラクタなどの反映先モデルのモーションに反映させる場合に、反映元モデルの骨格形状と反映先モデルの骨格形状とが異なることが多々ある。このため、反映元モデルのモーションをそのまま反映先モデルに適用すると、反映先モデルの動きや表示に違和感が生じてしまうという問題があった。
【0005】
本開示によれば、反映元モデルのモーションを反映先モデルのモーションに適用した場合に、反映先モデルの動きや表示に違和感が生じるのを抑制できる処理システム等を提供できる。
【課題を解決するための手段】
【0006】
本開示の一態様は、反映元モデルのモーションを、前記反映元モデルとは骨格形状が異なる反映先モデルのモーションに反映させるリターゲット処理を行うリターゲット処理部と、前記リターゲット処理後の前記反映先モデルのモーションの補正処理を行う補正処理部と、を含み、前記補正処理部は、前記反映先モデルの第1基準関節位置と、前記反映先モデルの対象面への接触部位の関節位置である第1接触関節位置とを通る線が、前記反映元モデルの前記対象面への接触部位の関節位置である第2接触関節位置を通過するように、前記第1基準関節位置を回転中心として、前記反映先モデルの前記第1接触関節位置を含む関節位置群を回転移動させる回転処理と、前記関節位置群に対応する骨群のスケールを変更するスケーリング処理を、前記補正処理として行う処理システムに関係する。また本開示の一態様は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0007】
本開示の一態様によれば、反映元モデルのモーションを反映先モデルのモーションに反映させるリターゲット処理が行われる。そして反映先モデルの第1基準関節位置と第1接触関節位置とを通る線が、反映元モデルの第2接触関節位置を通過するように、反映先モデルの関節位置群を回転移動させる回転処理と、関節位置群に対応する骨群のスケールを変更するスケーリング処理とが、リターゲット処理後の反映先モデルのモーションの補正処理として行われる。このような回転処理及びスケーリング処理が行われることで、第1接触関節位置と対象面との位置関係が不適切な位置関係になってしまう事態を抑制できる。従って、反映元モデルのモーションを反映先モデルのモーションに適用した場合に、反映先モデルの動きや表示に違和感が生じるのを抑制できる処理システム等が提供が可能になる。
【0008】
また本開示の一態様では、前記補正処理部は、前記第1基準関節位置と前記第1接触関節位置の距離と、前記第1基準関節位置と前記第2接触関節位置の距離との比に応じたスケーリング率で、前記骨群の前記スケーリング処理を行ってもよい。
【0009】
このようなスケーリング率でスケーリング処理を行うことで、第1接触関節位置を第2接触関節位置の場所に設定することが可能になり、反映先モデルの動きや表示に違和感が生じるのを抑制できるようになる。
【0010】
また本開示の一態様では、前記リターゲット処理部は、時系列に入力される前記反映元モデルのモーションを前記反映先モデルのモーションに反映させる前記リターゲット処理を行い、前記補正処理部は、前記リターゲット処理後の時系列の前記反映先モデルのモーションに対して、前記補正処理を行ってもよい。
【0011】
このようにすることで、時系列に入力される反映元モデルのモーションを利用して、当該反映元モデルの動きに連動して動く反映先モデルのモーションを生成できるようになる。
【0012】
また本開示の一態様では、前記反映元モデルのモーションは、人物のモーションキャプチャにより取得されたモーションであり、前記反映先モデルのモーションは、仮想的なキャラクタのモーションであってもよい。
【0013】
このようにすることで、人物の動きに連動して動く仮想的なキャラクタの画像を視聴者に対して表示できるようになる。
【0014】
また本開示の一態様では、前記リターゲット処理部、前記補正処理部は、時系列に入力される前記反映元モデルのモーションに基づいて、リアルタイムに前記リターゲット処理、前記補正処理を行ってもよい。
【0015】
このようにすることで、反映元モデルのモーションを反映先モデルのモーションに即時に反映させることができ、反映元モデルの動きに応じて反映先モデルをリアルタイムに動かすことが可能になる。
【0016】
また本開示の一態様では、前記補正処理部は、前記反映先モデル又は前記反映元モデルの骨群の屈伸状態を判定し、前記屈伸状態に応じて、前記補正処理として、前記回転処理及び前記スケーリング処理を行うか否かを判断してもよい。
【0017】
このようにすれば、骨群の屈伸状態が、回転処理及びスケーリング処理による補正処理が必要な状態であると判定されときに、当該補正処理を実行して、反映先モデルの動きや表示に違和感が生じるのを抑制できるようになる。
【0018】
また本開示の一態様では、前記補正処理部は、前記屈伸状態が、第1状態であると判定された場合には、前記補正処理として、前記回転処理及び前記スケーリング処理を行い、前記屈伸状態が、前記第1状態よりも屈曲した状態である第2状態であると判定された場合には、前記補正処理として、前記第1接触関節位置を前記対象面に設定するインバースキネマティクス処理を行ってもよい。
【0019】
こうすれば、屈伸状態の各状態に応じた適切な補正処理を実現できるようになる。
【0020】
また本開示の一態様では、前記補正処理部は、前記屈伸状態が、前記第1状態と前記第2の状態の間の第3状態であると判定された場合には、前記骨群のスケールを変更する第2スケーリング処理を行い、前記第2スケーリング処理の後に前記インバースキネマティクス処理を行ってもよい。
【0021】
このようにすれば、屈伸状態が第3状態であるときに、インバースキネマティクス処理が原因で反映先モデルが不自然な屈伸状態になるのを、第2スケーリング処理を行うことで抑制できるようになる。
【0022】
また本開示の一態様では、前記補正処理部は、前記屈伸状態が、前記第2状態であると判定された場合には、前記骨群のスケールを変更する第2スケーリング処理を行い、前記第2スケーリング処理の後に前記インバースキネマティクス処理を行ってもよい。
【0023】
このようにすれば、屈伸状態が第2状態であるときに、インバースキネマティクス処理が原因で反映先モデルが不自然な屈伸状態になるのを、第2スケーリング処理を行うことで抑制できるようになる。
【0024】
また本開示の一態様では、前記補正処理部は、前記第2スケーリング処理における前記骨群のスケーリング率を、前記屈伸状態に応じて変化させてもよい。
【0025】
このようにすることで、屈伸状態の各状態の切り替わり時に不自然な表示になってしまう事態の発生を抑制できるようになる。
【0026】
また本開示の一態様では、前記補正処理部は、前記反映先モデルの前記第1基準関節位置と前記第1接触関節位置との距離、前記第1基準関節位置と前記第1接触関節位置との間の関節での関節角、前記反映元モデルの第2基準関節位置と前記第2接触関節位置との距離、又は前記第2基準関節位置と前記第2接触関節位置との間の関節での関節角に基づいて、前記屈伸状態を判定してもよい。
【0027】
このようにすることで、距離や関節角を用いて、屈伸状態が伸びた状態であるか、屈曲状態であるかを適切に判定できるようになる。
【0028】
また本開示の一態様は、上記に記載の処理システムを含む情報処理装置に関係する。
【0029】
また本開示の一態様は、反映元モデルのモーションを、前記反映元モデルとは骨格形状が異なる反映先モデルのモーションに反映させるリターゲット処理と、前記リターゲット処理後の前記反映先モデルのモーションの補正処理と、を行い、前記補正処理において、前記反映先モデルの第1基準関節位置と、前記反映先モデルの対象面への接触部位の関節位置である第1接触関節位置とを通る線が、前記反映元モデルの前記対象面への接触部位の関節位置である第2接触関節位置を通過するように、前記第1基準関節位置を回転中心として、前記反映先モデルの前記第1接触関節位置を含む関節位置群を回転移動させる回転処理と、前記関節位置群に対応する骨群のスケールを変更するスケーリング処理と、を行う処理方法に関係する。
【図面の簡単な説明】
【0030】
【
図1】本実施形態の処理システムの構成例を示すブロック図。
【
図2】反映元モデルのモーションの取得処理の一例の説明図。
【
図3】反映元モデルのモーションを反映先モデルに反映させるリターゲット処理の説明図。
【
図5】本実施形態の処理システムの適用例についての説明図。
【
図24】FKを用いた手法で表示されるキャラクタ画像の例。
【
図25】FKを用いた手法で表示されるキャラクタ画像の例。
【
図26】IKを用いた手法で表示されるキャラクタ画像の例。
【
図27】IKを用いた手法で表示されるキャラクタ画像の例。
【
図28】本実施形態の手法で表示されるキャラクタ画像の例。
【
図29】本実施形態の手法で表示されるキャラクタ画像の例。
【
図32】
図32(A)~
図32(C)は第2スケーリング処理及びIK処理による補正処理の説明図。
【
図34】本実施形態の詳細な処理例を説明するフローチャート。
【
図35】本実施形態の詳細な処理例を説明するフローチャート。
【発明を実施するための形態】
【0031】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲の記載内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、必須構成要件であるとは限らない。
【0032】
1.処理システム
図1は、本実施形態の処理システム(情報処理装置、アトラクション用装置、ゲーム装置)の構成例を示すブロック図である。なお、本実施形態の処理システムは
図1の構成に限定されず、その構成要素の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0033】
操作部160は、オペレータ(ユーザ、プレーヤ)が種々の操作情報(入力情報)を入力するためのものである。操作部160は、例えばキーボード、操作ボタン、方向指示キー、ジョイスティック、レバー又はタッチパネル型ディスプレイ等により実現できる。
【0034】
記憶部170は各種の情報を記憶する。記憶部170は、処理部100や通信部196などのワーク領域として機能する。プログラムや、プログラムの実行に必要なデータは、この記憶部170に保持される。記憶部170の機能は、半導体メモリ(DRAM、VRAM)、HDD(hard disk drive)、SSD(Solid State Drive)、又は光ディスク装置などにより実現できる。記憶部170は、モーションデータ記憶部172、オブジェクト情報記憶部174、描画バッファ178を含む。モーションデータ記憶部172は、キャラクタ等のモデルのモーション再生を行うためのモーションデータを記憶する。オブジェクト情報記憶部174は、モデルを構成するオブジェクトや仮想空間を構成するオブジェクトについての各種の情報(形状情報、位置情報等)を記憶する。描画バッファ178は、フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファである。
【0035】
情報記憶媒体180は、コンピュータにより読み取り可能な媒体であり、プログラムやデータなどを格納するものである。情報記憶媒体180は、光ディスク(DVD、BD、CD)、HDD、或いは半導体メモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(入力装置、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0036】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(Head Mounted Display)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ又はヘッドホン等により実現できる。
【0037】
I/F(インターフェース)部194は、携帯型情報記憶媒体195とのインターフェース処理を行うものであり、その機能はI/F処理用のASICなどにより実現できる。携帯型情報記憶媒体195は、プレーヤが各種の情報を保存するためのものであり、電源が非供給になった場合にもこれらの情報の記憶を保持する記憶装置である。携帯型情報記憶媒体195は、ICカード(メモリカード)、USBメモリ、或いは磁気カードなどにより実現できる。
【0038】
通信部196は、有線や無線のネットワークを介して外部(他の装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0039】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(或いは記憶部170)に配信してもよい。このようなサーバによる情報記憶媒体の使用も本実施形態の範囲内に含めることができる。
【0040】
処理部100(プロセッサ)は、操作部160からの操作入力情報やプログラムなどに基づいて、情報取得処理、リターゲット処理、補正処理、画像生成処理、或いは音生成処理などを行う。
【0041】
処理部100の各部が行う本実施形態の各処理はプロセッサ(ハードウェアを含むプロセッサ)により実現できる。例えば本実施形態の各処理は、プログラム等の情報に基づき動作するプロセッサと、プログラム等の情報を記憶するメモリにより実現できる。プロセッサは、例えば各部の機能が個別のハードウェアで実現されてもよいし、或いは各部の機能が一体のハードウェアで実現されてもよい。例えば、プロセッサはハードウェアを含み、そのハードウェアは、デジタル信号を処理する回路及びアナログ信号を処理する回路の少なくとも一方を含むことができる。例えば、プロセッサは、回路基板に実装された1又は複数の回路装置(例えばIC等)や、1又は複数の回路素子(例えば抵抗、キャパシター等)で構成することもできる。プロセッサは、例えばCPU(Central Processing Unit)であってもよい。但し、プロセッサはCPUに限定されるものではなく、GPU(Graphics Processing Unit)、或いはDSP(Digital Signal Processor)等、各種のプロセッサを用いることが可能である。またプロセッサはASICによるハードウェア回路であってもよい。またプロセッサは、アナログ信号を処理するアンプ回路やフィルター回路等を含んでもよい。メモリ(記憶部170)は、SRAM、DRAM等の半導体メモリであってもよいし、レジスターであってもよい。或いはハードディスク装置(HDD)等の磁気記憶装置であってもよいし、光学ディスク装置等の光学式記憶装置であってもよい。例えば、メモリはコンピュータにより読み取り可能な命令を格納しており、当該命令がプロセッサにより実行されることで、処理部100の各部の処理が実現されることになる。ここでの命令は、プログラムを構成する命令セットでもよいし、プロセッサのハードウェア回路に対して動作を指示する命令であってもよい。
【0042】
処理部100は、情報取得部102、リターゲット処理部104、補正処理部106、画像生成部120、音生成部130を含む。上述したように、これらの各部により実行される本実施形態の各処理は、プロセッサ(或いはプロセッサ及びメモリ)により実現できる。なお、これらの構成要素(各部)の一部を省略したり、他の構成要素を追加するなどの種々の変形実施が可能である。
【0043】
情報取得部102は、各種の情報の取得処理を行う。例えばモーションキャプチャなどにより反映元モデルである人物(アクター)のモーションデータが検出された場合に、当該モーションデータを取得する処理を行う。具合的には、例えばモーションキャプチャのシステムからの検出情報を通信部196を介して受信することで、モーションデータを取得する。或いは反映元モデルが仮想的なキャラクタであった場合には、当該キャラクタのモーションデータを反映元モデルのモーションデータとして取得する。取得された反映元モデルのモーションデータは、モーションデータ記憶部172に記憶される。なお、モーションキャプチャのシステムから検出情報を受信した場合だけでなく、ユーザによる取得開始操作などの取得要求をトリガーとして、モーションキャプチャのシステムからモーションデータを取得するようにしてもよい。
【0044】
リターゲット処理部104は、異なるモデルに対してモーションを反映させるリターゲット処理を行い、補正処理部106は、モーションの補正処理を行う。これらのリターゲット処理、補正処理によりモーション再生処理が実現される。モーション再生処理は、モデルのスケルトンの姿勢を変化させて、モデルを動かすための処理であり、アニメーション処理とも呼ばれる。リターゲット処理部104、補正処理部106の詳細については後述する。
【0045】
画像生成部120は、画像の生成処理を行う。例えば処理部100で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に表示する。具体的には画像生成部120は、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理を行い、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を作成する。そして画像生成部120は、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ178に描画する。これにより、仮想空間において仮想カメラから見える仮想空間画像が生成される。なお画像生成部120で行われる描画処理は、頂点シェーダ処理やピクセルシェーダ処理等により実現することができる。
【0046】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音の生成処理を行う。具体的には、楽曲(音楽、BGM)、効果音、又は音声などを生成し、音出力部192に出力させる。
【0047】
また処理部100は、ゲーム処理、仮想空間設定処理、仮想カメラ設定処理、移動体処理などを行ってもよい。ゲーム処理は、例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、開始したゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、或いはゲーム成績を演算する処理などである。仮想空間設定処理は、例えば、移動体(車、人、ロボット、電車、飛行機、船、モンスター又は動物等)、マップ(地形)、建物、観客席、コース(道路)、アイテム、樹木、壁、水面などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)を仮想空間に配置設定する処理である。例えば仮想空間設定処理では、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する処理が行われる。具体的には、記憶部170のオブジェクト情報記憶部174には、仮想空間でのオブジェクト(パーツオブジェクト)の位置、回転角度、移動速度又は移動方向等の情報であるオブジェクト情報がオブジェクト番号に対応づけて記憶される。仮想空間設定処理では、例えば各フレーム毎に、仮想空間情報であるオブジェクト情報の更新処理が行われる。また仮想カメラ設定処理は、仮想空間での仮想カメラの位置や方向を設定する処理である。例えば仮想カメラ設定処理では、移動体(キャラクタ)の位置や方向の情報や、或いは仮想カメラの位置や方向の設定情報に基づいて、仮想空間での仮想カメラの位置や方向を設定する処理が行われる。移動体処理は、仮想空間での移動体の移動情報を演算する処理である。例えば移動体処理では、仮想空間において移動体を移動させるための処理が行われる。
【0048】
そして本実施形態の処理システムは、
図1に示すように、リターゲット処理部104と補正処理部106を含む。
【0049】
リターゲット処理部104は、反映元モデルのモーション(モーションデータ)を反映先モデルのモーション(モーションデータ)に反映させるリターゲット処理(リターゲッティング)を行う。例えば、反映元モデルのモーションを、反映元モデルとは骨格形状(関節位置)が異なる反映先モデルのモーションに反映させるリターゲット処理を行う。例えば反映元モデルのスケルトンの姿勢(モーション)が変化した場合に、反映元モデルのスケルトンと同様の姿勢変化になるように、反映先モデルのスケルトンの姿勢(モーション)を変化させる。例えば、反映元モデルのモーションデータに基づいて反映先モデルのスケルトンのフォワードキネマティクス処理を行うことで、反映元モデルと同様の姿勢変化で反映先モデルの姿勢を変化させるリターゲット処理を実現できる。例えば反映元モデルと反映先モデルは、同様の骨の階層構造を共有しており、モーション(アニメーション)を共有できるモデルになっている。
【0050】
補正処理部106は、リターゲット処理後の反映先モデルのモーションの補正処理を行う。例えば反映元モデルのモーションを反映先モデルのモーションに適用することで生じた反映先モデルの動きや表示の不具合や不自然さを解消するための補正処理を実行する。
【0051】
補正処理部106は、補正処理として回転処理とスケーリング処理を行う。この場合に回転処理を行った後にスケーリング処理を行ってよいし、スケーリング処理を行った後に回転処理を行ってもよい。
【0052】
具体的には補正処理部106は、反映先モデルの第1基準関節位置と反映先モデルの第1接触関節位置とを通る線が、反映元モデルの第2接触関節位置を通過するように、第1基準関節位置を回転中心として、反映先モデルの第1接触関節位置を含む関節位置群を回転移動させる回転処理を行う。第1基準関節位置は、反映先モデルの関節位置群の回転移動の基準となる関節位置である。第2基準関節位置は、反映先モデルの第1基準関節位置に対応する反映元モデルの関節位置である。第1接触関節位置は、反映先モデルの対象面への接触部位の関節位置である。即ち第1接触関節位置は、反映先モデルの複数の部位のうち、対象面に接触する接触部位の関節位置である。第2接触関節位置は、反映元モデルの対象面への接触部位の関節位置である。即ち第2接触関節位置は、反映元モデルの複数の部位のうち、対象面に接触する接触部位の関節位置である。対象面への接触部位は、例えばスケルトンのエンドエフェクタの部位である。対象面は、当該接触部位の接触対象となる面であり、例えば地面、壁面又は天井面などである。関節位置群は、第1接触関節位置と、第1基準関節位置と第1接触関節位置の間にある1又は複数の関節位置である。
【0053】
また補正処理部106は、関節位置群に対応する骨群のスケールを変更するスケーリング処理を行う。例えば骨群の骨の少なくとも長辺方向でのスケールを変更するスケーリング処理を行う。骨のスケールを変更するとは、骨のスケールを縮小したり、拡大することである。具体的には第1接触関節位置と第2接触関節位置が同じ位置に設定されるようなスケールで、関節位置群に対応する骨群のスケールを変更(縮小又は拡大)する。例えば反映先モデルの接触部位が、対象面にめり込んでしまうような状況では、補正処理部106は、関節位置群に対応する骨群のスケールを縮小するスケーリング処理を行う。一方、反映先モデルの接触部位が、対象面から離れて浮いてしまうような状況では、補正処理部106は、関節位置群に対応する骨群のスケールを拡大するスケーリング処理を行う。
【0054】
また補正処理部106は、第1基準関節位置と第1接触関節位置の距離と、第1基準関節位置と第2接触関節位置の距離との比に応じたスケーリング率(縮小率又は拡大率)で、骨群のスケーリング処理を行う。第1基準関節位置と第1接触関節位置の距離をLD1とし、第1基準関節位置と第2接触関節位置の距離をLD2とした場合に、例えばLD2/LD1の比に応じたスケーリング率で、骨群のスケーリング処理を行う。例えばLD2/LD1<1である場合には、骨群の骨のスケールを縮小するスケーリング処理を行い、LD2/LD1>1である場合には、骨群の骨のスケールを拡大するスケーリング処理を行う。
【0055】
またリターゲット処理部104は、時系列に入力される反映元モデルのモーションを反映先モデルのモーションに反映させるリターゲット処理を行う。そして補正処理部106は、リターゲット処理後の時系列の反映先モデルのモーションに対して、補正処理を行う。例えば情報取得部102により、時系列の反映元モデルのモーション(モーションデータ)が取得される。そして、このように時系列に取得されたモーションを、反映先モデルのモーション(モーションデータ)に反映させるリターゲット処理が実行される。そして、このようなリターゲット処理により得られた時系列の反映先モデルのモーションに対して、上述した回転処理及びスケール処理による補正処理が実行される。
【0056】
また反映元モデルのモーションは、例えば人物のモーションキャプチャにより取得されたモーションである。一方、反映先モデルのモーションは、例えば仮想的なキャラクタのモーションである。例えば人物であるアクターが、モーションキャプチャ用のスーツなどを装着して、姿勢を変化させるなどの動作を行うと、アクターのモーションが、反映元モデルのモーションとして取得される。例えば情報取得部102が、通信部196を介してモーションキャプチャのシステムでの検出情報を受信することで、反映元モデルのモーションが取得される。そしてモーションについてのリターゲット処理及び補正処理が行われて、反映先モデルのモーションとして、仮想空間に登場する仮想的なキャラクタのモーションが求められる。そして求められたモーションによりキャラクタが動作するキャラクタ画像が、画像生成部120により生成されて、表示部190に表示される。
【0057】
またリターゲット処理部104、補正処理部106は、時系列に入力される反映元モデルのモーションに基づいて、リアルタイムにリターゲット処理、補正処理を行う。例えばモーションキャプチャなどにより、反映元モデルの時系列のモーションが検出され、検出された反映元モデルの時系列のモーションに対して、リアルタイムにリターゲット処理及び補正処理が実行される。例えば反映元モデルのモーションとして第1姿勢が検出されると、第1姿勢に対するリターゲット処理及び補正処理が行われて、反映先モデルの第1姿勢に対応する姿勢がリアルタイムに求められる。次に反映元モデルのモーションとして第2姿勢が検出されると、第2姿勢に対するリターゲット処理及び補正処理が行われて、反映先モデルの第2姿勢に対応する姿勢がリアルタイムに求められる。このようにして、反映元モデルのモーションとして、第1姿勢、第2姿勢・・・・第m姿勢が検出されると、これらの各姿勢に対応する反映先モデルのモーションがリアルタイム(順次)に求められる。
【0058】
また補正処理部106は、反映先モデル又は反映元モデルの骨群の屈伸状態を判定する。そして屈伸状態に応じて、補正処理として、回転処理及びスケーリング処理を行うか否かを判断する。例えば補正処理として、回転処理及びスケーリング処理を常に実行するのではなく、反映先モデル又は反映元モデルの骨群の屈伸状態に応じて、補正処理として、回転処理及びスケーリング処理を実行したり、実行しないようにする。例えば反映元モデルの骨群(スケルトン)の屈伸状態が、回転処理及びスケーリング処理が必要とされる状態であると判定される場合には、補正処理として、回転処理及びスケーリング処理を実行する。一方、屈伸状態が、回転処理及びスケーリング処理が必要とされない状態であると判定される場合には、補正処理として、回転処理及びスケーリング処理を実行しないようにする。
【0059】
例えば補正処理部106は、屈伸状態が、第1状態であると判定された場合には、補正処理として、回転処理及びスケーリング処理を行う。一方、屈伸状態が、第1状態よりも屈曲した状態である第2状態であると判定された場合には、補正処理として、第1接触関節位置を対象面に設定するインバースキネマティクス処理を行う。即ち補正処理として、回転処理及びスケーリング処理を行わずに、第1接触関節位置に対応する接触部位が対象面に接触するようにするインバースキネマティクス処理を実行する。例えば接触部位であるエンドエフェクタの部位が、対象面に接触(接地)するように、第1接触関節位置と第1基準関節位置の間の関節の関節角等を決定するインバースキネマティクス処理を実行する。
【0060】
また補正処理部106は、屈伸状態が、第1状態と第2の状態の間の第3状態であると判定された場合には、骨群のスケールを変更する第2スケーリング処理を行い、第2スケーリング処理の後にインバースキネマティクス処理を行う。例えば骨群の骨のスケールを拡大又は縮小する第2スケーリング処理を行い、その後に、第1接触関節位置を対象面に設定するインバースキネマティクス処理を行う。例えばインバースキネマティクス処理を行った場合にも自然な関節角になるように、骨群の骨の長辺方向等でのスケールを拡大又は縮小した後に、インバースキネマティクス処理を実行する。
【0061】
或いは補正処理部106は、屈伸状態が、第2状態であると判定された場合には、骨群のスケールを変更する第2スケーリング処理を行い、第2スケーリング処理の後にインバースキネマティクス処理を行う。即ち屈伸状態が第2状態であると判断された場合には、インバースキネマティクス処理の単体の補正処理ではなく、第2スケーリング処理及びインバースキネマティクス処理の両方を行う補正処理を実行する。即ち、インバースキネマティクス処理を行った場合にも自然な関節角になるように、骨群の骨の長辺方向でのスケールを拡大又は縮小した後にインバースキネマティクス処理を行うというような補正処理を実行する。
【0062】
また補正処理部106は、第2スケーリング処理における骨群のスケーリング率を、屈伸状態に応じて変化させる。例えば第2スケーリング処理が、骨群の骨のスケールを拡大するスケーリング処理である場合には、スケーリング率である拡大率を、屈伸状態に応じて変化させる。例えば拡大率を、1.0より大きい所与の値から1.0へと、屈伸状態に応じて変化させる。また第2スケーリング処理が、骨群の骨のスケールを縮小するスケーリング処理である場合には、スケーリング率である縮小率を、屈伸状態に応じて変化させる。例えば縮小率を、1.0より小さい所与の値から1.0へと、屈伸状態に応じて変化させる。
【0063】
また補正処理部106は、反映先モデルの第1基準関節位置と第1接触関節位置との距離、又は第1基準関節位置と第1接触関節位置との間の関節での関節角に基づいて、屈伸状態を判定する。或いは補正処理部106は、反映元モデルの第2基準関節位置と第2接触関節位置との距離、又は第2基準関節位置と第2接触関節位置との間の関節での関節角に基づいて、屈伸状態を判定する。例えば補正処理部106は、上記の距離が長いほど、或いは関節角が大きいほど、骨群(スケルトン)の屈伸状態は伸びた状態であると判定する。また上記の距離が短いほど、或いは関節角が小さいほど、骨群(スケルトン)の屈伸状態は屈曲した状態であると判定する。
【0064】
2.本実施形態の手法
次に本実施形態の手法について詳細に説明する。なお、以下では、反映元モデルが人物であるアクターであり、反映先モデルが仮想的なキャラクタである場合について主に例にとり説明するが、本実施形態の手法はこれに限定されない。例えば反映元モデルも仮想的なキャラクタであってもよい。また反映先モデル等のモデルとしては、オブジェクトにより構成される種々の形状、形態のモデルオブジェクトを想定できる。
【0065】
2.1 リターゲット処理
まずリターゲット処理について説明する。
図2では人物であるアクターACTが、モーションキャプチャ用のスーツSTを体に装着している。モーションキャプチャ用のスーツSTには複数のマーカーMKが取り付けられており、これらのマーカーMKの位置を測定することで、アクターのモーションを検出する。この場合の検出方式としては、光学式、慣性センサ式、機械式、磁気式などの種々の方式がある。光学式では、反射板等により実現されるマーカーMKが取り付けられたモーションキャプチャ用のスーツSTを着用したアクターACTの動きを、カメラで撮影する。その際に複数のカメラで撮影し、複数の撮影画像での画像のズレに基づいて対象までの距離を、三角測量の原理で計算することで、アクターACTの姿勢であるモーションを検出する。この場合にマーカーMKとして赤外線マーカーなどを用いてもよい。慣性センサ式では、マーカーとして、ジャイロセンサや加速度センサなどにより実現される慣性センサを設け、慣性センサの検出結果に基づいて、アクターACTのモーションを検出する。機械式では、ポテンションメータやエンコードなどの機械的な回転角や変位を測定するセンサを利用する。磁気式では受信器である磁気センサを設け、それに対して送出機である磁気発生装置から磁場を送る。或いは、Kinect(登録商標)と呼ばれる方式のように、デプスセンサやRGBセンサを利用して、アクターACTのモーションを検出してもよい。
【0066】
このように
図2では、人物であるアクターACTのモーションが、反映元モデルのモーションMTSとして検出される。このモーションMTSは、アクターACTに対応するスケルトンの姿勢を規定するものであり、スケルトンは、関節JA、JB、JCや、これらの関節で規定される骨BA、BBを有する。そして
図3に示すように、反映元モデルのモーションMTSを、反映先モデルのモーションMTDに反映させるリターゲット処理が行われる。
図3では反映先モデルは、仮想的なキャラクタCHであり、反映先モデルのモーションMTDは、キャラクタCHのスケルトンの姿勢を規定するものである。反映元モデルのモーションMTSと反映先モデルのモーションMTDとで骨格形状が異なっている。具体的には、例えばスケルトンの関節JA、JB、JCなどの位置が異なっており、骨BA、BBの長さも異なっているが、スケルトンの階層構造(親子構造)などは共通になっている。例えば反映元モデルと反映先モデルは体格は異なるが、反映元モデルのスケルトンの関節位置と反映先モデルのスケルトンの関節位置はリンクされて対応づけられている。
【0067】
図2、
図3のようなリターゲット処理が行われることで、反映元モデルの姿勢が変化すると、反映先モデルの姿勢もそれに応じて変化するようになる。例えば反映元モデルがしゃがむ姿勢になると、反映先モデルもしゃがむ姿勢になり、反映元モデルが足を上げる姿勢になると、反映先モデルも足を上げる姿勢になる。これにより、例えば反映元モデルであるアクターACTの動きに連動して、反映先モデルである仮想空間のキャラクタCHも動くようになり、アクターACTの動きをキャラクタCHに反映させることが可能になる。
【0068】
図4はモーションデータについての説明図である。モーションデータは、例えば
図4の親の骨BPAに対する子の骨BCHの、X軸、Y軸、Z軸回りの回転角度α、β、γなどの情報を含むことができる。或いはモーションデータは、X軸方向、Y軸方向、Z軸方向での骨のスケーリング率などの情報を含んでもよい。例えばモーションデータは、回転角度α、β、γ等が行列要素となる行列情報などにより実現される。
【0069】
図5は本実施形態の処理システムの適用例についての説明図である。
図5では処理システムは情報処理装置により実現される。即ち、この場合には情報処理装置が本実施形態の処理システムを含む構成になる。情報処理装置は、モーションデータなどの各種の情報を処理する装置であり、プロセッサ等により実現される。情報処理装置は、例えばパーソナルコンピュータや、スマートフォンなどの携帯型情報端末装置や、或いはゲーム装置などの端末装置である。或いは情報処理装置はサーバ装置であってもよい。また処理システムは端末装置とサーバ装置の分散処理により実現されてもよい。この場合には処理システムは複数の情報処理装置により実現される。この場合に端末装置は情報の入力処理や受信処理や送信処理や表示処理などだけを行うものであってもよい。
【0070】
例えば
図5のアクターエリアにおいて、アクターがモーションキャプチャ用のスーツを装着して、踊りなどの動きをする。すると情報処理装置により実現される本実施形態の処理システムが、モーションキャプチャ用のスーツからの検出情報により、アクターのモーションデータを取得する。そして処理システムは、アクターのモーションを仮想的なキャラクタのモーションに反映させるリターゲット処理や補正処理を行って、アクターの動きに連動して動くキャラクタの画像を生成する。これにより、観客席の前に設けられたステージのスクリーンに、アクターの動きに連動して動く仮想的なキャラクタが表示されるようになり、仮想的なキャラクタによるライブコンサートなどを実現できる。或いは本実施形態の処理システムは、ライブコンサートに限らず、SNSや動画配信サイトなどに対して、動画配信者が仮想的なキャラクタの動画を配信する用途に用いてもよい。そして仮想的なキャラクタは、現実世界の人物の動きと同様の動きをするため、予めプログラミングされた動きをするキャラクタに比べて、動きのリアル度を高めることができ、高い演出効果のモーション再生を実現できる。なおキャラクタ画像を表示する場合には、反映先モデルのモーションデータに基づいて、キャラクタを構成する部位オブジェクトの頂点を、重み付け係数を用いてスケルトンのモーションに追従させて移動させるスキニング処理を行えばよい。
【0071】
このように本実施形態では、リアルタイムにアクターのモーションを取得して、取得されたモーションを、仮想キャラクタのモデルに対してリアルタイムに反映させて動かすようにしている。これにより、時系列に取得したモーションデータにしたがって、リアルタイムに進行する仮想的なキャラクタのライブコンサートや動画配信サイトへの動画配信などを実現できる。なお本実施形態は、ゲーム制作やアニメーション制作における仮想的なキャラクタのモーション設定などにも適用可能である。この場合に、リアルタイムに取得したモーションデータを仮想的なキャラクタのモデルに反映させてもよいし、予め取得しておいたモーションデータを仮想的なキャラクタのモデルに反映させるようにしてもよい。また、ゲームやアニメーションの制作過程において、第1のキャラクタに対応付けられたモーションを、第1のキャラクタとは骨格形状(体格等)が異なる第2のキャラクタに反映させるような場合にも、本実施形態の手法は適用可能である。
【0072】
以上のように本実施形態では、時系列に入力される反映元モデルのモーションを反映先モデルのモーションに反映させるリターゲット処理を行い、リターゲット処理後の時系列の反映先モデルのモーションに対して、後述するような補正処理を行う。例えばアクターエリアでのアクターの動きにより取得された反映元モデルのモーションが、処理システムに時系列に入力される。処理システムは、時系列に入力される反映元モデルのモーションを、反映先モデルのモーションに反映させるリターゲット処理を行い、リターゲット処理後の時系列の反映先モデルのモーションに対して補正処理を行う。このようにすれば、時系列に入力される反映元モデルのモーションを利用して、当該反映元モデルの動きに連動して動く反映先モデルのモーションを生成できるようになる。
【0073】
また本実施形態では、反映元モデルのモーションは、例えば人物のモーションキャプチャにより取得されたモーションであり、反映先モデルのモーションは、仮想的なキャラクタのモーションである。例えば
図2、
図3では、人物であるアクターACTのモーションがモーションキャプチャにより取得される。そして処理システムは、アクターACTのモーションを仮想的なキャラクタCHに反映させるリターゲット処理や、補正処理を実行する。このようにすることで、
図5に示すように、アクターACTの動きに連動して動く仮想的なキャラクタCHの画像をスクリーンなどに表示できるようになる。
【0074】
また本実施形態では、時系列に入力される反映元モデルのモーションに基づいて、リアルタイムにリターゲット処理及び補正処理を行う。例えば
図5において、アクターエリアのアクターの動きにより取得された反映元モデルのモーションが、時間経過に応じて時系列に処理システムに入力される。そして処理システムは、入力された反映元モデルのモーションに対してリアルタイムに順次にリターゲット処理及び補正処理を実行して、反映先モデルのモーションを生成する。このようにすることで、反映元モデルのモーションを反映先モデルのモーションに即時に順次に反映させることができ、反映元モデルの動きに応じて反映先モデルをリアルタイムに動かすことが可能になる。
【0075】
2.2 補正処理
本実施形態では、反映元モデルに対応づけられたモーションを、反映元モデルとは骨格形状が異なる反映先モデルに適用する場合に、反映先モデルの動き(手や足の動き)や表示が、視聴者に対して見た目上の違和感を与えるような動きにならないようにする補正処理を行う。特に本実施形態では、反映先モデルの動きや表示に違和感が出ないようにするために、反映先モデルのスケルトンのスケール自体を変更している。
【0076】
例えば
図6に反映元モデルMSと反映先モデルMDのスケルトンの例を示す。なお以下では説明の簡素化のために、スケルトンの腰から下の部分だけを示して説明を行う。また以下では、反映先モデルMDの方が反映元モデルMSよりも体格が大きい場合を例にとり説明するが、反映元モデルMSの方が反映先モデルMDよりも体格が大きくてもよい。
【0077】
図6に示すように反映元モデルMSと反映先モデルMDではスケルトンの関節位置が異なっており、関節間の骨の長さも異なっている。本実施形態では、
図2、
図3で説明したように、反映元モデルMSから、反映元モデルMSとは骨格形状が異なる反映先モデルMDにモーションを移し替えるリターゲット処理を行う。
【0078】
3Dでのスケルトンの計算には、一般的には、フォワードキネマティクスと呼ばれる手法が用いられる。なお、以下では、フォワードキネマティクスを、適宜、FKと記載する。FKでは、
図7に示すように、例えば腰骨を基準に足先の骨に向けて相対的な位置関係を順次に計算して、各骨の姿勢を求めて行く。具体的には
図4で説明した各骨のX軸、Y軸、Z軸回りの回転角度α、β、γを行列要素とする行列を、腰骨から足先の骨へと順次に乗算して行くことで、FKが実現される。
【0079】
例えば
図8では、反映元モデルMSのモーションが、両足の膝を曲げてかがむ姿勢のモーションになっている。この反映元モデルMSのモーションを反映先モデルMDのモーションに反映させるリターゲット処理を行うことで、反映先モデルMDのモーションも、両足の膝を曲げてかがむ姿勢のモーションになる。また
図9では、反映元モデルMSのモーションが、両足を開いて膝を伸ばす姿勢のモーションになっている。この反映元モデルMSのモーションを反映先モデルMDのモーションに反映させるリターゲット処理を行うことで、反映先モデルMDのモーションも、両足を開いて膝を伸ばす姿勢のモーションになる。具体的には反映元モデルMSのモーションデータに基づくFKの処理を、反映先モデルMDのスケルトンに対して行うことで、
図8、
図9に示すようなリターゲット処理を実現できる。
【0080】
しかし、FKを用いて、例えば腰骨の位置を基準として骨の回転情報(α、β、γ)のみを反映元モデルMSから反映先モデルMDに移し替えるリターゲット処理を行った場合、ポーズとしては同じになるが、脚の長さの違いにより、地面との位置関係に矛盾が生じてしまう。具体的には、足が完全に浮いてしまったり、足が地面に大幅にめり込んでしまう現象が生じる。基準となる腰骨の位置が、反映先モデルMDの脚の長さに相応しくないため、このような現象が生じてしまう。
【0081】
ここで
図10に示すように、反映元モデルMSの脚の長さ(as+bs)は、反映元モデルMSの腰骨の高さcsに対応する。従って、反映先モデルMDの脚の長さを(ad+bd)とすると、反映元モデルMSの腰骨の高さcsに対して、脚の長さの比率である(ad+bd)/(as+bs)を乗算することで、反映先モデルMDにある程度相応しい腰骨の高さcdを求めることができる。そして、求められた腰骨の高さcdに反映先モデルMDの腰骨の位置を設定することで、足が完全に浮いてしまったり、足が地面に大幅にめり込んでしまう現象が発生するのを防止できる。
【0082】
しかしながら、反映元モデルMSと反映先モデルMDでは、対応する各骨の比率が同じではないため、足先の接地位置に問題が生じてしまう。例えば
図11は、FKの場合における第1ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図であり、
図12は横から見た図である。
図13は、FKの場合における第2ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図であり、
図14は横から見た図である。
図11、
図12の第1ポーズでは、
図12のA1に示すように右足が地面に少しめり込んでおり、A2に示すように左足が地面から少し浮いてしまっている。このように、FKを用いた手法では、
図10のような腰骨の位置合わせを行ったとしても問題を解決できない。
【0083】
このようなFKの問題を解決するために、インバースキネマティクスを用いる手法が考えられる。なお、以下では、インバースキネマティクスを、適宜、IKと記載する。IKでは、スケルトンの末端である足先を地面の位置に設定し、そのように足先が接地した状態での膝の関節角等を自動計算する。例えば
図15は、IKの場合における第1ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図であり、
図16は横から見た図である。
図17は、IKの場合における第2ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図であり、
図18は横から見た図である。IKを用いた手法では、
図18のB1、B2に示すように、第2ポーズのように脚が伸びるにしたがって、反映元モデルMSと反映先モデルMDとで、膝の関節角の差が大きくなり、ポーズの印象が異なったものになってしまうという問題が生じる。その原因としては、IKでは、直立時の骨の比で腰骨の位置を決めているため、反映先モデルMDの腰骨の位置がうまく定まらないためであると考えられる。即ち、IKを用いた場合であっても問題を解決できない。
【0084】
このような問題を解決するために本実施形態では、リターゲット処理後の反映先モデルMDの補正処理として、回転処理とスケーリング処理を行う。具体的には反映先モデルMDの第1基準関節位置と第1接触関節位置とを通る線が、反映元モデルMSの第2接触関節位置を通過するように、第1基準関節位置を回転中心として、反映先モデルの第1接触関節位置を含む関節位置群を回転移動させる回転処理を行う。また関節位置群に対応する骨群のスケールを変更するスケーリング処理を行う。これらの回転処理とスケーリング処理の順番は任意である。
【0085】
まず、
図19に示すように、FKのリターゲット処理の手法により、反映元モデルMSから反映先モデルMDにモーション(ポーズ)を移し替える処理を行う。これにより反映元モデルMSと反映先モデルMDにおける膝の関節角は同じになる。
【0086】
次に
図19に示すように、反映先モデルMDの第1基準関節位置JR1と第1接触関節位置JT1を通る線LNを求める。第1基準関節位置JR1は、本実施形態の補正処理の基準となる関節位置であり、例えば股関節(腰骨)に対応する関節位置である。第1接触関節位置JT1は、反映先モデルMDの対象面への接触部位の関節位置である。対象面が地面である場合には、第1接触関節位置JT1(第1接地関節位置)は、例えば反映先モデルMDの足関節に対応する関節位置である。線LNは、第1基準関節位置JR1から第1接触関節位置JT1へと向かうレイに対応する。
【0087】
そして
図20のRTに示すように、第1基準関節位置JR1と第1接触関節位置JT1とを通る線LNが、反映元モデルMSの第2接触関節位置JT2を通過するように、第1基準関節位置JR1を回転中心として、反映先モデルMDの関節位置群を回転移動させる回転処理を行う。即ち反映先モデルMDの脚全体を回転させる。例えば対象面が地面である場合には、
図20では関節位置群として、足関節に対応する第1接触関節位置JT1と、膝関節に対応する関節位置JK1が回転移動している。なお、第2接触関節位置JT2(第2接地関節位置)は、例えば反映元モデルMSの足関節に対応する関節位置である。
【0088】
次に
図21に示すように、反映先モデルMDの脚全体に適切なスケールをかける。即ち、反映先モデルMDの関節位置群に対応する骨群のスケールを変更するスケーリング処理を行う。例えば第1基準関節位置JR1と膝の関節位置JK1の間の骨や、膝の関節位置JK1と第1接触関節位置JT1の間の骨のスケールを縮小又は拡大するスケーリング処理を行う。具体的には、反映先モデルMDの第1接触関節位置JT1が反映元モデルMSの第2接触関節位置JT2に一致するようなスケーリング率でスケーリング処理を行う。例えば
図21では縮小のスケーリング処理を行うことで、第1接触関節位置JT1と第2接触関節位置JT2を一致させている。これにより足が地面にめり込むような状況が発生してしまうのを防止できる。なお足が地面にめり込むような状況では、縮小のスケーリング処理を行うが、足が地面から離れて浮いてしまうような状況では、拡大のスケーリング処理を行えばよい。また本実施形態では、第1接触関節位置JT1と第2接触関節位置JT2を一致させることが目的であるため、例えばスケーリング処理の後に回転処理を行うというように、処理の順番を入れ替えてもよい。
【0089】
例えば本実施形態では、第1基準関節位置JR1と第1接触関節位置JT1の距離LD1と、第1基準関節位置JR1と第2接触関節位置JT2の距離LD2との比に応じたスケーリング率で、骨群のスケーリング処理を行う。例えばスケーリング率SCは、SC=LD2/LD1と表すことができる。具体的には、
図4において、少なくとも骨の長辺方向であるX軸方向での骨のスケーリング率SCXを変更する。或いは、X軸方向での骨のスケーリング率SCXのみならず、Y軸方向でのスケーリング率SCYやZ軸方向でのスケーリング率SCZを変更してもよい。このように、距離LD1と距離LD2の比に応じたスケーリング率で、骨群のスケーリング処理を行うことで、第1接触関節位置JT1を第2接触関節位置JT2の場所に設定することが可能になり、反映先モデルMDの動きや表示に違和感が生じるのを抑制できるようになる。なお、このように骨のスケーリング率を変更するスケーリング処理を行うと、脚の大きさが、例えば数パーセント程度、変わってしまうが、その差異は非常に小さいため人間の目には殆どの場合、認知できない。また、動画を視聴する人間は、主として仮想的なキャラクタの動きに注意が向く傾向があるため、脚の大きさの変化を認識しにくい。逆に、仮想的なキャラクタの動きが不適切になっている場合には、視聴する人間の注意が動きに向いているため、人間が違和感を感じやすいため、本実施形態の手法は有効である。
【0090】
図22は、本実施形態の補正処理(回転処理及びスケーリング処理)を行った場合における第1ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図である。
図23は、本実施形態の補正処理を行った場合における第2ポーズの反映元モデルMS及び反映先モデルMDを、前方から見た図である。このように本実施形態の手法によれば、骨格形状が異なるモデル間でモーションを適用させる場合であっても、ポーズの印象に大きく影響する膝関節等のなす角度を維持したまま、両モデル間のリターゲット処理を行うことができる。即ち、骨格形状の異なるモデル間でモーションを適用させる場合であっても、反映先モデルに自然な動きをさせることが可能になる。
【0091】
なお以上では、対象面が地面である場合を例にとり説明したが、対象面としては、例えば壁面や天井面などの種々の面を想定できる。例えば対象面が壁面である場合には、腕の付け根に対応する肩関節を回転中心として上述したような回転処理を行うと共に、腕全体に適切なスケールをかけるスケーリング処理を行えばよい。また逆立ちの姿勢の場合には、地面が対象面になり、肩関節を回転中心とした回転処理と腕についてのスケーリング処理を行えばよい。
【0092】
図24、
図25は、
図11~
図14で説明したFKを用いた手法を適用した場合において、キャラクタCHが踊っている様子を示す表示画像の例である。FKを用いた手法では、
図24のC1や
図25のC2に示すように足が地面から不自然に浮いてしまったり、或いは、足が地面にめり込んでしまうような事態が発生してしまう。
【0093】
図26、
図27は、
図15~
図18で説明したIKを用いた手法を適用した場合において、キャラクタCHが踊っている様子を示す表示画像の例である。IKを用いた手法では、
図26のC3や
図27のC4に示すように、足が地面から浮いてしまったり、足が地面にめり込んでしまうような事態が発生するのを防止できる。しかしながら、
図27のC5に示すように、膝の関節部分において脚が不自然に伸びてしまうような画像が表示されてしまい、視聴者に違和感を与えてしまう。例えばキャラクタCHが踊っている映像では、膝が伸びてピョンピョンと跳ねているかのように見える不自然な画像になってしまう。
【0094】
図28、
図29は、
図19~
図23で説明した本実施形態の手法を適用した場合において、キャラクタCHが踊っている様子を示す表示画像の例である。本実施形態の手法によれば、
図28のC6や
図29のC7に示すように、足が地面から浮いてしまったり、足が地面にめり込んでしまうような事態が発生するのを防止できる。更に
図29のC8に示すように、IKの場合の
図27のC5に比べて、脚の膝の曲がり方が自然な曲がり具合になり、膝が伸びてピョンピョンと跳ねているかのように見える不自然な画像が表示されるのを防止できるようになる。
【0095】
2.3 屈伸状態に応じた補正処理
本実施形態ではモデルの屈伸状態に応じた補正処理を行う。具体的には反映先モデル又は反映元モデルの骨群の屈伸状態を判定し、屈伸状態に応じて、補正処理として上述した回転処理及びスケーリング処理を行うか否かを判断する。このようにすれば、骨群の屈伸状態が、回転処理及びスケーリング処理による補正処理が必要な状態であると判定されたときに、当該補正処理を実行して、反映先モデルの動きや表示に違和感が生じるのを抑制できるようになる。
【0096】
そして本実施形態では、屈伸状態が、第1状態であると判定された場合には、補正処理として、回転処理及びスケーリング処理を行い、屈伸状態が、第1状態よりも屈曲した状態である第2状態であると判定された場合には、補正処理として、第1接触関節位置を対象面に設定するIK処理を行う。
【0097】
例えば
図30(A)の屈伸状態パラメータPTは、モデルの屈伸状態を表すパラメータである。例えば脚が直立して伸びきった状態での屈伸状態パラメータPTの値を100(100%)とする。脚が屈曲するにつれて、屈伸状態パラメータPTの値は、最大値である100から、最小値である0へと減少して行く。即ち屈伸状態パラメータPTが大きいほど、脚が伸びた状態であることを表し、屈伸状態パラメータPTが小さいほど、脚が屈曲した状態であることを表している。
【0098】
そして
図30(A)において、屈伸状態パラメータPTが70~100(70%~100%)であるときを第1状態ST1とし、屈伸状態パラメータPTが0~40(0%~40%)であるときを第2状態ST2とする。また屈伸状態パラメータPTが40~70(40%~70%)であるときを第3状態ST3とする。第2状態ST2は第1状態ST1よりも、補正処理の対象部位である脚が屈曲した状態である。第3状態ST3は第1状態ST1と第2状態ST2の間の状態である。すると
図30(A)に示すように、屈伸状態が第1状態ST1である場合には、補正処理として、
図19~
図23で説明した回転処理及びスケーリング処理を行う。即ち
図19、
図20に示すように線LNが、反映元モデルの第2接触関節位置JT2を通過するように、脚の関節位置群を回転移動させる回転処理と、脚の骨群のスケールを変更するスケーリング処理を行う。
【0099】
一方、屈伸状態が、第1状態ST1よりも屈曲した状態である第2状態ST2である場合には、補正処理としてIK処理を行う。
図31(A)、
図31(B)はIK処理の一例の説明図である。
図31(A)では、脚の第1接触関節位置JT1は、地面である対象面SFに設定されていない。即ち対象面SFに接地していない。そこで
図31(B)では、第1接触関節位置JT1を対象面SFに設定するIK処理を行う。IK処理では、第1基準関節位置JR1と膝の関節位置JK1を結ぶ骨BMの長さ、及び関節位置JK1と第1接触関節位置JT1を結ぶ骨BNの長さについてはIK処理の前後で不変としながら、関節位置JK1に対応する膝の関節角が変更される。例えば第1接触関節位置JT1を対象面SFに接地させることで、第1基準関節位置JR1と第1接触関節位置JT1との距離が決まり、骨BM、BNの長さが不変であり決まっていることから、膝の関節角が一意に決まる。なおIK処理は
図31(A)、
図31(B)の手法に限定されない。例えば第1基準関節位置JR1と第1接触関節位置JT1との間に複数の関節がある場合には、第1接触関節位置JT1が対象面SFに接地するという条件を満たす複数の関節の最適な関節角を、例えばヤコビアンを用いた逆運動学やクォータニオン逆運動学などの公知のアルゴリズムにより求めればよい。
【0100】
例えばIKにおいて不自然な事態が生じるのは、
図18のB1、B2や
図27のC5に示すように脚が伸びた状態になっているときである。そこで本実施形態では
図30(A)に示すように、屈伸状態が、第2状態ST2よりも伸びた状態である第1状態ST1であるときには、本実施形態の回転処理及びスケール処理による補正処理を行う。一方、屈伸状態が、第1状態ST1よりも屈曲した状態である第2状態ST2であるときには、
図18のB1、B2や
図27のC5のように脚が伸びた状態にはなっていないため、IKによる補正処理を行う。こうすることで、屈伸状態の各状態に応じた適切な補正処理を実現できるようになり、反映先モデルの動きや表示に違和感が生じるのを抑制できるようになる。
【0101】
また本実施形態では、
図30(A)に示すように、屈伸状態が、第1状態ST1と前記第2状態ST2の間の第3状態ST3であると判定された場合には、骨群のスケールを変更する第2スケーリング処理を行い、第2スケーリング処理の後にIK処理を行う。第3状態ST3は、第1状態ST1よりも脚(対象部位)が屈曲した状態であり、且つ、第2状態ST2よりも脚が伸びた状態である。
【0102】
図32(A)~
図32(C)は第2スケーリング処理及びIK処理による補正処理の説明図である。
図32(A)では、第1接触関節位置JT1が対象面SFから離れて浮いている状況になっている。そこで、まず
図32(B)に示すように、第1基準関節位置JR1と第1接触関節位置JT1の間の骨群である骨BM、BNのスケールを変更する第2スケーリング処理を行う。例えば
図4において少なくともX軸方向でのスケールを変更する。
図32(B)では拡大のスケール変更を行っている。なお、第1接触関節位置JT1が対象面SFから浮いてしまうような状況では拡大のスケール変更を行えばよいが、第1接触関節位置JT1が対象面SFにめり込んでしまうような状況では、縮小のスケール変更を行えばよい。またX軸方向のみならずY軸方向やZ軸方向でのスケールを変更してもよい。そして
図32(B)の第2スケーリング処理の後に、
図32(C)に示すように、第1接触関節位置JT1を対象面SFに設定するIK処理を行う。このようにすれば、屈伸状態が第3状態ST3であるときに、IK処理が原因で反映先モデルが不自然な屈伸状態になるのを、第2スケーリング処理を行うことで抑制できるようになる。従って、
図18のB1、B2や
図27のC5のように膝の関節部分において脚が不自然に伸びてしまうなどの事態の発生を防止しながら、第1接触関節位置JT1が対象面SFから浮いてしまったり、めり込んでしまう事態の発生を防止できるようになる。
【0103】
また本実施形態では、第2スケーリング処理における骨群のスケーリング率を、屈伸状態に応じて変化させる。即ちスケーリング率である拡大率又は縮小率を、屈伸状態に応じて変化させる。
【0104】
例えば
図30(B)では、屈伸状態パラメータPTが100~70となる第1状態ST1でのスケーリング処理でのスケーリング率SC(拡大率)が1.2になっている。例えば第1接触関節位置JT1が対象面SFから浮いてしまうのを防止するために、前述したように関節群の回転処理と、スケーリング率SCが1.2となるスケーリング処理を行っている。この場合に、屈伸状態パラメータPTが70のときには、第2スケーリング処理でのスケーリング率SCも1.2に設定する。このようにすることでスケーリング率SCの連続性が保たれるようになるため、第1状態ST1から第3状態ST3への切り替わり時に不自然な表示になってしまう事態が発生するのを抑制できる。そして
図30(B)では、屈伸状態パラメータPTが小さくなるにつれて、第2スケーリング処理でのスケーリング率SCを減少させる。具体的には、屈伸状態パラメータPTが70から40へと小さくなるにつれて、スケーリング率SCを1.2から1.0へと減少させる。そして屈伸状態パラメータPTが40のときのスケーリング率SCを1.0とすることで、スケーリング率SCの連続性が保たれるようになるため、第3状態ST3から第2状態ST2への切り替わり時に不自然な表示になってしまう事態が発生するのを抑制できる。
【0105】
なお
図30(A)では、屈伸状態が第2状態ST2であると判定された場合にIK処理を行っているが、
図30(C)に示すように、屈伸状態が第2状態ST2であると判定された場合に、骨群のスケールを変更する第2スケーリング処理を行い、第2スケーリング処理の後にIK処理を行ってもよい。即ち屈伸状態が第2状態ST2であるときに、単なるIK処理を行うのではなく、第2スケーリング処理及びIK処理による補正処理を行う。このようにすれば、屈伸状態が第2状態ST2であるときに、IK処理が原因で反映先モデルが不自然な屈伸状態になるのを、第2スケーリング処理を行うことで抑制できるようになる。従って、膝の関節部分において脚が不自然に伸びてしまうなどの事態が発生するのを防止しながら、第1接触関節位置JT1を対象面SFから浮いてしまったり、めり込んでしまうような事態の発生を防止できるようになる。なお
図30(C)においても、
図30(B)で説明したように、第2スケーリング処理における骨群のスケーリング率SCを、屈伸状態に応じて変化させるようにする。
【0106】
図33は屈伸状態の判定処理の説明図である。
図33において、基準関節位置JRは、反映先モデルの第1基準関節位置JR1又は反映元モデルの第2基準関節位置JR2である。接触関節位置JTは、反映先モデルの第1接触関節位置JT1又は反映元モデルの第2接触関節位置JT2である。本実施形態では
図33において、基準関節位置JRと接触関節位置JTとの距離LDに基づいて、屈伸状態を判定する。即ち、反映先モデルの第1基準関節位置JR1と第1接触関節位置JT1との距離、或いは反映元モデルの第2基準関節位置JR2と第2接触関節位置JT2との距離に基づいて、屈伸状態を判定する。例えば距離LDが大きいほど、屈伸状態が伸びた状態であると判定し、距離LDが小さいほど、屈伸状態が屈曲した状態であると判定する。或いは本実施形態では基準関節位置JRと接触関節位置JTの間の関節での関節角θに基づいて、屈伸状態を判定してもよい。即ち、反映先モデルの第1基準関節位置JR1と第1接触関節位置JT1との間の関節での関節角、或いは反映元モデルの第2基準関節位置JR2と第2接触関節位置JT2との間の関節での関節角に基づいて、屈伸状態を判定する。例えば関節角θが大きいほど、屈伸状態が伸びた状態であると判定し、関節角θが小さいほど、屈伸状態が屈曲した状態であると判定する。このようにすることで、距離LDや関節角θを用いて、屈伸状態が伸びた状態であるか、屈曲状態であるかを適切に判定できるようになる。
【0107】
2.4 処理例
次に本実施形態の処理例の詳細について
図34、
図35のフローチャートを用いて説明する。
【0108】
図34では、まず反映元モデルのモーションを取得する(ステップS1)。
図2を例にとれば、モーションキャプチャにより、反映元モデルであるアクターACTのモーションを検出して取得する。そして反映元モデルのモーションを反映先モデルのモーションに反映させるリターゲット処理を実行する(ステップS2)。例えば
図3、
図8、
図9で説明したようにFK処理等により反映元モデルのモーションを反映先モデルのモーションに移し替えるリターゲット処理を実行する。
【0109】
次に反映先モデルの第1基準関節位置と第1接触関節位置とを通る線が、反映元モデルの第2接触関節位置を通過するように、第1基準関節位置を回転中心として、反映先モデルの関節位置群を回転移動させる回転処理を実行する(ステップS3)。例えば
図19、
図20のRTに示すように、関節位置JK1、第1接触関節位置JT1を回転移動する回転処理を実行する。また関節位置群に対応する骨群のスケールを変更するスケーリング処理を実行する(ステップS4)。例えば
図21に示すように骨のスケールを縮小したり、或いは拡大するなどのスケーリング処理を実行する。そして回転処理及びスケーリング処理による補正処理後の反映先モデルのモーションに基づいて、反映先モデルの画像を生成する(ステップS5)。例えば反映先モデルのスケルトンに、反映先モデルを構成するオブジェクトの頂点を追従させるスキニング処理や、スキニング処理後のオブジェクトの描画処理を行うことで、仮想的なキャラクタなどの反映先モデルの画像を生成して表示する。このようにすることで、例えば
図5において、アクターの動きに連動して動作する仮想的なキャラクタの画像を、視聴者に対して表示できるようになる。
【0110】
図35では、まず反映先モデル又は反映元モデルの骨群の屈伸状態を判定する(ステップS11)。例えば
図33の距離LDや関節角θなどに基づいて屈伸状態を判定する。そして屈伸状態が第1状態である場合には、補正処理として回転処理及びスケーリング処理を実行する(ステップS12、S13)。例えば屈伸状態が
図30(A)の第1状態ST1である場合には、
図19~
図21で説明した回転処理及びスケーリング処理を実行する。一方、屈伸状態が、第1状態ではなく第2状態である場合には、第1接触関節位置を対象面に設定するIK処理を実行する(ステップS14、S15)。例えば
図31(A)、
図31(B)で説明したようなIK処理を実行する。また屈伸状態が第1状態及び第2状態ではなく第3状態である場合には、骨群のスケールを変更する第2スケーリング処理を実行し、その後に第1接触関節位置を対象面に設定するIK処理を実行する(ステップS16、S17)。例えば
図32(A)~
図32(B)で説明したような第2スケーリング処理及びIK処理を実行する。
【0111】
なお、上記のように本実施形態について詳細に説明したが、本開示の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本開示の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(対象部位等)と共に記載された用語(脚等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また情報取得処理、リターゲット処理、補正処理、回転処理、スケーリング処理、FK処理、IK処理等も、本実施形態で説明したものに限定されず、これらと均等な手法・処理・構成も本開示の範囲に含まれる。
【符号の説明】
【0112】
100…処理部、102…情報取得部、104…リターゲット処理部、
106…補正処理部、120…画像生成部、130…音生成部、160…操作部、
170…記憶部、172…モーションデータ記憶部、174…オブジェクト情報記憶部、
178…描画バッファ、180…情報記憶媒体、190…表示部、192…音出力部、
194…I/F部、195…携帯型情報記憶媒体、196…通信部、
MTS…反映元モデルのモーション、MTD…反映先モデルのモーション、
MS…反映元モデル、MD…反映先モデル、ACT…アクター、ST…スーツ、
MK…マーカー、CH…キャラクタ、JA、JB、JC…関節、BA、BB…骨、
JR1…第1基準関節位置、JT1…第1接触関節位置、JK1…関節位置、
JR2…第2基準関節位置、JT2…第2接触関節位置、JK2…関節位置、
LN…線、SF…対象面、SC…スケーリング率、PT…屈伸状態パラメータ、
ST1…第1状態、ST2…第2状態、ST3…第3状態、
JR…基準関節位置、JT…接触関節位置、JK…関節位置、LD…距離、θ…角度