IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社スクウェア・エニックスの特許一覧

特開2023-13732アニメーション生成プログラム、及びアニメーション生成システム
<>
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図1
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図2
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図3
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図4
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図5
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図6
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図7
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図8
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図9
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図10
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図11
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図12
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図13
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図14
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図15
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図16
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図17
  • 特開-アニメーション生成プログラム、及びアニメーション生成システム 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023013732
(43)【公開日】2023-01-26
(54)【発明の名称】アニメーション生成プログラム、及びアニメーション生成システム
(51)【国際特許分類】
   G06T 13/40 20110101AFI20230119BHJP
【FI】
G06T13/40
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021118118
(22)【出願日】2021-07-16
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り [刊行物1] 令和3年6月17日掲載、掲載アドレス https://schedule.gdconf.com/session/animation-summit-from-design-full-procedural-animations-for-mechs/879440
(71)【出願人】
【識別番号】308033283
【氏名又は名称】株式会社スクウェア・エニックス
(74)【代理人】
【識別番号】100188662
【弁理士】
【氏名又は名称】浅見 浩二
(74)【代理人】
【識別番号】100177895
【弁理士】
【氏名又は名称】山田 一範
(72)【発明者】
【氏名】森 寅嘉
(72)【発明者】
【氏名】並木 幸介
(72)【発明者】
【氏名】マルティンス グスタボ
(72)【発明者】
【氏名】坂田 新平
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050AA08
5B050BA08
5B050BA09
5B050BA12
5B050CA06
5B050CA07
5B050EA07
5B050EA12
5B050EA19
5B050EA28
(57)【要約】
【課題】オブジェクトに実行させるアニメーションを動的に生成することを可能とすること。
【解決手段】オブジェクトを構成するパーツに対する指定動作の内容を指定動作情報として予め登録し、オブジェクトを構成するパーツに実行させる指定動作を特定するための指定動作情報を取得し、オブジェクトを構成するパーツのうち動作が必要なパーツについて所定の規則に従って関節部の回転角度を動的に演算することで当該パーツのアニメーションを生成し、各パーツのアニメーションに基づいてオブジェクト全体のアニメーションを生成する。
【選択図】図3
【特許請求の範囲】
【請求項1】
少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をサーバに実現させるためのアニメーション生成プログラムであって、
前記サーバに、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを
実現させるためのアニメーション生成プログラム。
【請求項2】
前記取得機能で取得される前記指定動作情報は、複数の前記オブジェクトパーツに対する前記指定動作を組み合わせた命令である第1組み合わせ命令情報によって特定される
請求項1記載のアニメーション生成プログラム。
【請求項3】
前記サーバに、前記生成機能により生成されたアニメーションにおける前記オブジェクトが有するボーン及び/又は前記関節部の状態に基づいて、当該アニメーションの異常の発生を判定する判定機能を
実現させるための請求項1又は請求項2記載のアニメーション生成プログラム。
【請求項4】
前記サーバに、
前記オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定の前記オブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、前記所定部位又は前記付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録するエイム情報登録機能と、
前記所定部位又は前記付随物体の一部を指定されるエイム方向に向けるエイム命令を取得するエイム命令取得機能とを実現させ、
前記取得機能では、取得された前記エイム命令によって指定されるエイム方向に基づいて演算に必要な前記エイム情報を取得し、取得した前記エイム情報に基づいて前記エイム命令を実行するために必要な前記指定動作情報を取得する機能を
実現させるための請求項1から請求項3のうち何れかに記載のアニメーション生成プログラム。
【請求項5】
通信ネットワークと、サーバと、ユーザ端末とを備え、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成するアニメーション生成システムであって、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録手段と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得手段と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成手段とを含む
ことを特徴とするアニメーション生成システム。
【請求項6】
少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をユーザ端末に実現させるためのアニメーション生成プログラムであって、
前記ユーザ端末に、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを
実現させるためのアニメーション生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態の少なくとも1つは、仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を実現させるためのアニメーション生成プログラム、及びアニメーション生成システムに関する。
【背景技術】
【0002】
従来から、ビデオゲーム等の分野において、仮想空間内で3次元モデルで表現されたオブジェクトに連続的に所定の動作を実行させてアニメーションを生成することが行われてきた。
【0003】
オブジェクトに関するアニメーションを生成する手法として、各姿勢における3次元モデルの部位の座標や関節の回転角度を指定して全ての姿勢を連続再生することでアニメーションとするために予め登録しておくアニメーションデータ(以下、静的アニメーションデータ)を用意し、当該静的アニメーションデータを組み合わせて用いることで他のアニメーションを生成するものがある。ここで、「静的」なアニメーションとは、オブジェクトの全ての姿勢について3次元モデルの全ての部位の座標や関節の回転角度を指定して生成したアニメーションのことをいう。
【0004】
例えば、特許文献1には、キャラクタが基準平面を移動する基本移動動作を表す基本移動動作データを用いて、傾斜がある面上を移動する際のキャラクタのアニメーション(モーション)を自動生成するシステムが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2018-028812号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、静的アニメーションデータを用いてオブジェクトのアニメーションを自動生成する方法の場合、開発者によって静的アニメーションデータを予め作成する必要があり、開発規模が大きくなるに従って開発者の負担が増大してしまう問題が発生していた。特許文献1においては、平面移動時のアニメーションを利用して傾斜面を移動する際のアニメーションを生成することで、アニメーションの作成負担を軽減しているが、静的なアニメーションデータを用意しなければならないという開発者の負担については依然として残ってしまうといえる。また、あるオブジェクトを対象として作成された静的アニメーションデータを他のオブジェクトに転用することになるので、他のオブジェクトに適用する場合の当該静的アニメーションデータによるアニメーション再生には、3次元モデルにおいて想定した関節の可動域を超えて動作を実行してしまうなど何らかの異常が生じる可能性があるという問題があった。
【0007】
本発明の少なくとも1つの実施形態の目的は、上記課題を解決し、オブジェクトに実行させるアニメーションを動的に生成することを可能とすることである。
【課題を解決するための手段】
【0008】
非限定的な観点によると、本発明の一実施形態に係るアニメーション生成プログラムは、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をサーバに実現させるためのアニメーション生成プログラムであって、前記サーバに、前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを実現させるためのものである。
【0009】
非限定的な観点によると、本発明の一実施形態に係るアニメーション生成システムは、通信ネットワークと、サーバと、ユーザ端末とを備え、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成するアニメーション生成システムであって、前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録手段と、前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得手段と、前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成手段とを含むことを特徴とする。
【0010】
非限定的な観点によると、本発明の一実施形態に係るアニメーション生成プログラムは、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をユーザ端末に実現させるためのアニメーション生成プログラムであって、前記ユーザ端末に、前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを実現させるためのものである。
【発明の効果】
【0011】
本願の各実施形態により1または2以上の不足が解決される。
【図面の簡単な説明】
【0012】
図1】本発明の実施形態の少なくとも一つに対応するアニメーション生成システムの構成の例を示すブロック図である。
図2】本発明の実施形態の少なくとも一つに対応するサーバの構成を示すブロック図である。
図3】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理の例を示すフローチャートである。
図4】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理におけるサーバ側の動作の例を示すフローチャートである。
図5】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理における端末側の動作の例を示すフローチャートである。
図6】本発明の実施形態の少なくとも一つに対応するサーバの構成を示すブロック図である。
図7】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理の例を示すフローチャートである。
図8】本発明の実施形態の少なくとも一つに対応するサーバの構成を示すブロック図である。
図9】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理の例を示すフローチャートである。
図10】本発明の実施形態の少なくとも一つに対応するサーバの構成を示すブロック図である。
図11】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理の例を示すフローチャートである。
図12】本発明の実施形態の少なくとも一つに対応するサーバの構成を示すブロック図である。
図13】本発明の実施形態の少なくとも一つに対応するアニメーション生成処理の例を示すフローチャートである。
図14】本発明の実施形態の少なくとも一つに対応するオブジェクトパーツの例について説明するための説明図である。
図15】本発明の実施形態の少なくとも一つに対応する指定動作情報の一例を説明する説明図である。
図16】本発明の実施形態の少なくとも一つに対応する第1組み合わせ命令情報の一例を説明する説明図である。
図17】本発明の実施形態の少なくとも一つに対応する第2組み合わせ命令情報の一例を説明する説明図である。
図18】本発明の実施形態の少なくとも一つに対応するエイム動作を実現するための「aimIK」の一例を説明する説明図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態の例について図面を参照して説明する。なお、以下で説明する各実施形態の例における各種構成要素は、矛盾等が生じない範囲で適宜組み合わせ可能である。また、ある実施形態の例として説明した内容については、他の実施形態においてその説明を省略している場合がある。また、各実施形態の特徴部分に関係しない動作や処理については、その内容を省略している場合がある。さらに、以下で説明する各種フローを構成する各種処理の順序は、処理内容に矛盾等が生じない範囲で順不同である。
【0014】
[第1の実施形態]
図1は、本発明の一実施の形態におけるアニメーション生成システム100の構成の例を示すブロック図である。図1に示すように、アニメーション生成システム100は、サーバ10と、アニメーション生成システム100のユーザ(ユーザ)が使用するユーザ端末(ユーザ端末)20,201~20N(Nは任意の整数)とを含む。なお、アニメーション生成システム100の構成はこれに限定されず、単一のユーザ端末を複数のユーザが使用する構成としてもよいし、複数のサーバを備える構成としてもよい。
【0015】
サーバ10と複数のユーザ端末20,201~20Nは、それぞれインターネットなどの通信ネットワーク30に接続されている。なお、図示しないが、複数のユーザ端末20,201~20Nは、通信業者によって管理される基地局と無線通信回線によるデータ通信を行うことによって、通信ネットワーク30と接続する。
【0016】
アニメーション生成システム100は、サーバ10と複数のユーザ端末20,201~20Nとを備えることにより、ユーザの操作に応じて各種処理を実行するための各種機能を実現する。
【0017】
サーバ10は、アニメーション生成システム100の管理者によって管理され、複数のユーザ端末20,201~20Nに対して各種処理に関する情報を提供するための各種機能を有する。本例において、サーバ10は、WWWサーバなどの情報処理装置によって構成され、各種情報を格納する記憶媒体を備える。サーバ10の構成は、制御部や通信部などコンピュータとして各種処理を行うための一般的な構成を備えていれば特に限定されない。以下、サーバ10のハードウェア構成の例について簡単に説明する。
【0018】
図1に示すように、サーバ10は、CPU(Central Processing Unit)101と、メモリ102と、記憶装置103とを少なくとも備える。
【0019】
CPU101は、各種の演算および制御を行う中央処理装置である。また、サーバ10がGPU(Graphics Processing Unit)を備える場合には、各種の演算および制御の一部をGPUによって行うようにしてもよい。サーバ10は、適宜メモリ102に読み出したデータを用いてアニメーションの生成に必要な各種の情報処理をCPU101にて実行し、得られた処理結果を必要に応じて記憶装置103に記憶させる。
【0020】
記憶装置103は、各種情報を格納する記憶媒体としての機能を有する。記憶装置103の構成は特に限定されないが、複数のユーザ端末20,201~20Nそれぞれにかかる処理負荷を軽減させるといった観点から、アニメーションの生成に必要な各種情報を全て記憶可能な構成であることが好ましい。このような例には、HDDやSSDがある。ただし、各種情報を記憶する記憶部は、サーバ10がアクセス可能な状態で記憶領域を備えていればよく、例えば専用の記憶領域をサーバ10の外部に有する構成とされていてもよい。
【0021】
図2は、サーバ10の構成の例であるサーバ10Aの構成を示すブロック図である。図2に示すように、サーバ10Aは、登録部11と、取得部12と、生成部13とを少なくとも備える。
【0022】
登録部11はオブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録する機能を有する。
【0023】
ここで、オブジェクトとは、仮想空間に配置され得る仮想的なものであって、少なくとも関節部を1以上ずつ備えるオブジェクトパーツの組み合わせによって構成されるものを意味する。オブジェクトは、オブジェクトパーツの組み合わせにより構成されていれば特に限定されない。オブジェクトパーツとオブジェクトパーツの間の接続については、関節で接続されているものもあれば、固定的に接続されているものもあり得る。オブジェクトの種類の例としては、人型のオブジェクトや、4足歩行の動物型のオブジェクトなど、様々な種類が考えられる。このようなオブジェクトの構成を予め3次元モデルとして備えさせておく。なお、以下においては主としてオブジェクトが3次元モデルであることを想定して説明を行うが、2次元モデルを排除するものではなく、2次元モデルを用いたアニメーションを生成する場合に対しても適用可能である。
【0024】
また、オブジェクトパーツとは、オブジェクトを構成する3次元モデルにおける所定範囲の部位を意味する。オブジェクトパーツは、オブジェクトの中の所定の範囲を占める部分である。オブジェクトパーツは、少なくとも1以上の関節部を備える。1つのオブジェクトパーツの一部又は全体は、関節部を中心として回転運動を行う。例えば、2つのオブジェクトパーツ間は互いに関節部を介して接続される。ここで、複数のオブジェクトパーツ間の境界は適宜定めることが可能である。例えば、オブジェクト全体に対する1つのオブジェクトパーツの範囲は、例えば関節部を境界として定められる。境界上の関節部をどのように扱うかは適宜決定され得るものであるが、例えば、何れか一方のオブジェクトパーツに属するように扱うことが考えられる。
【0025】
また、指定動作とは、オブジェクトパーツに実行させる動作を意味する。また、指定動作情報とは、指定動作の内容を特定するための情報を意味する。さらに、指定動作情報には、指定動作を実行するための関節部の回転角度を動的に演算するために必要な情報が含まれる。動的演算に必要な情報としては、例えば、指定動作を実行させるための目標姿勢、部位の目標方向又は部位の軌跡を指定する情報と、それらの情報を用いて指定動作を実行する際の各姿勢状態における関節部の回転角度を動的に演算するための所定の演算規則を指定する情報とが含まれる。また、例えば、指定動作を実行させるための目標姿勢、部位の目標方向又は部位の軌跡を指定する情報と、それらの情報を用いて指定動作を実行する際の各姿勢状態における関節部の回転角度を動的に演算するための所定の演算規則の情報を全て内包させた関数を指定動作情報として登録するようにしてもよい。ここで、所定の演算規則は、汎用の演算規則(汎用の関数)を登録しておいて、指定動作実行時に汎用の演算規則を読みだして利用するものであってもよいし、指定動作の内容に特化した演算処理を実行するように設定したオリジナルの関数として登録する演算規則であってもよい。ここで、本例における関数とは、所定種類のパラメータの入力に基づいてオブジェクトパーツに実行させる指定動作の各姿勢状態に必要な各関節部の回転角度を動的に演算して出力するための演算規則を意味する。なお、「動的に演算」とは、指定動作を実行させるための目標姿勢、部位の目標方向又は部位の軌跡が指定された場合に、その途中過程でのオブジェクトパーツの姿勢状態及びそのときの関節部の回転角度については予めアニメーションデータとして保持するのではなく、その状況に応じた最適な姿勢状態とするための関節部の回転角度をその都度演算して取得することを意味する。
【0026】
また、指定動作の内容を指定動作情報として予め登録するための構成は特に限定されず、サーバ10が備える所定の記憶手段でもよいしサーバ10と通信可能な装置(例えばユーザ端末20)における所定の記憶領域でもよい。
【0027】
取得部12は、オブジェクトパーツに実行させる指定動作を特定するための指定動作情報を取得する機能を有する。
【0028】
ここで、指定動作情報を取得するとは、何らかの手段によって指定されたアニメーションに実行させる指定動作情報を取得することを意味する。指定動作情報を指定する主体としては、例えば、オブジェクトに対する操作を決定するユーザや、オブジェクトの行動を制御するためのAIであることが考えられる。指定動作情報を取得する具体的構成は特に限定されないが、例えば、オブジェクトパーツに対する指定動作の内容が決定されたことを受けて、それを実現するための指定動作情報を登録部11における登録先の記憶領域を参照して読み出すという構成が考えられる。
【0029】
生成部13は、オブジェクトのオブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する機能を有する。
【0030】
ここで、動作が必要なオブジェクトパーツとは、指定動作情報により特定された指定動作を実行する主体のオブジェクトパーツを意味する。オブジェクトを構成する全てのオブジェクトパーツについて動作が必要とは限らないため、指定動作情報が取得された動作が必要なオブジェクトパーツのみについて処理を行う意図である。
【0031】
また、関節部の回転角度とは、その関節部に接続された2つの部位のうちの一方の部位に対する他方の部位の位置の初期位置(デフォルト位置)を基準とした場合に、そのデフォルト位置からの関節の回転角度を意味している。すなわち、一方の部位がどのような姿勢状態であるかに関わらず他方の部位についての回転角度を指定するための情報を意味する。
【0032】
また、関節部の回転角度を動的に演算するとは、オブジェクトパーツに対して与えられた目標姿勢、部位の目標位置、目標方向、目標軌跡などの情報に基づいて、そこに向かうまでの各姿勢状態における各関節部の回転角度を、演算開始時の外部環境や演算開始時の姿勢状態など都度変化する諸条件に応じてその都度必要な演算を実行することを意味する。諸条件については、アニメーション生成結果に影響を与える可能性があればどのようなものであっても採用可能である。
【0033】
また、パーツアニメーションとは、オブジェクトパーツに指定動作を実行させるように制御するための当該オブジェクトパーツのみのアニメーションデータのことをいう。複数のオブジェクトパーツに対するパーツアニメーションを組み合わせることでオブジェクト全体のアニメーションが生成される。
【0034】
複数のユーザ端末20,201~20Nは、それぞれ、ユーザによって管理され、例えば携帯電話端末やPDA(Personal Digital Assistants)、携帯型装置や所謂ウェアラブルデバイスなどのネットワーク配信型のアニメーション生成を行うことが可能な通信端末によって構成される。なお、アニメーション生成システム100が含み得るユーザ端末の構成は上述した例に限定されず、ユーザがアニメーションの生成内容を認識し得る構成であればよい。ユーザ端末の構成の他の例には、各種通信端末を組み合わせたものやパーソナルコンピュータがある。
【0035】
また、複数のユーザ端末20,201~20Nは、それぞれ、通信ネットワーク30に接続し、サーバ10との通信を行うことにより各種処理を実行するためのハードウェア(例えば、座標に応じたブラウザ画面やアニメーション生成画面を表示する表示装置など)及びソフトウェアを備える。なお、複数のユーザ端末20,201~20Nそれぞれは、サーバ10を介さずに互いに直接通信を行うこともできる構成とされていてもよい。
【0036】
次に、本例のアニメーション生成システム100(システム100)の動作について説明する。
【0037】
図3は、システム100が実行するアニメーション生成処理の例を示すフローチャートである。本例におけるアニメーション生成処理では、ユーザ端末20(端末20)のユーザの操作に応じてアニメーションの生成を制御することに関連する処理が行われる。以下、サーバ10Aと端末20とが、アニメーション生成処理を実行する場合を例にして説明する。
【0038】
アニメーション生成処理は、例えばサーバ10Aにアクセスした端末20がアニメーションの生成要求を伴う画面表示を要求したことを契機に開始される。
【0039】
サーバ10Aは、先ず、アニメーション生成処理に必要な情報として、オブジェクトパーツに対する指定動作の内容を指定動作情報として予め登録する(ステップS11)。サーバ10Aは、例えば、指定動作の対象のオブジェクトパーツを特定する情報と、オブジェクトパーツに対して実行させる指定動作における目標姿勢、部位の目標位置、目標方向、目標軌跡などを定めるための情報と、動的に演算を実行するための所定の演算規則の情報とを予め指定動作情報として登録する。
【0040】
次に、サーバ10Aは、オブジェクトパーツに対する指定動作を特定するための指定動作情報を取得する(ステップS12)。指定動作は、例えば、オブジェクトに対するユーザ操作に基づいて与えられ、サーバ10Aは、その指定動作に対応した指定動作情報を、予め登録した複数の指定動作情報の中から選択して取得する。
【0041】
次に、サーバ10Aは、取得した指定動作情報に基づいてパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する(ステップS13)。本例においてサーバ10Aは、オブジェクトパーツ毎に、指定動作を実行させるために各姿勢状態において必要な関節部の回転角度を動的に演算してパーツアニメーションを生成し、生成したパーツアニメーションを組み合わせてオブジェクト全体のアニメーションを生成する。本例においてサーバ10Aは、オブジェクト全体のアニメーションを端末20に表示させるための出力情報を端末20に送信する。
【0042】
端末20は、サーバ10Aから情報を受信すると、所定の表示装置の表示画面にアニメーションの生成結果を表示する画面を出力する(ステップS14)。本例において端末20がアニメーションの生成結果を表示する画面を出力すると、ここでの処理を終了する。
【0043】
図4は、アニメーション生成処理におけるサーバ10A側の動作の例を示すフローチャートである。ここでは、システム100におけるサーバ10Aの動作について改めて説明する。
【0044】
サーバ10Aは、先ず、アニメーション生成処理に必要な情報として、オブジェクトパーツに対する指定動作の内容を指定動作情報として予め登録する(ステップS101)。次に、サーバ10Aは、オブジェクトパーツに対する指定動作を特定するための指定動作情報を取得する(ステップS102)。次に、サーバ10Aは、取得した指定動作情報に基づいてパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する(ステップS103)。サーバ10Aは、オブジェクト全体のアニメーションを生成すると、ここでの処理を終了する。
【0045】
図5は、端末20がアニメーション生成処理を実行する場合の端末20側の動作の例を示すフローチャートである。以下、端末20が、単体でアニメーション生成処理を実行する場合を例にして説明する。なお、端末20の構成については、サーバ10Aから各種情報を受信することを除きサーバ10Aの構成と同様の機能を備えるものであるため、重複説明を避ける観点から記載を省略する。
【0046】
端末20は、先ず、アニメーション生成処理に必要な情報として、オブジェクトパーツに対する指定動作の内容を指定動作情報として予め登録する(ステップS201)。次に、端末20は、オブジェクトパーツに対する指定動作を特定するための指定動作情報を取得する(ステップS202)。次に、端末20は、取得した指定動作情報に基づいてパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する(ステップS203)。端末20は、オブジェクト全体のアニメーションを生成すると、ここでの処理を終了する。
【0047】
以上に説明したように、第1の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するサーバ10Aが、登録部11と、取得部12と、生成部13とを備える構成としているので、オブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録し、オブジェクトパーツに実行させる指定動作を特定するための指定動作情報を取得し、オブジェクトのオブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成し、オブジェクトのデザインの自由度を十分に確保しつつオブジェクトのアニメーション生成についての開発者の負担を軽減することが可能となる。
【0048】
また、第1の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するユーザ端末20が、登録部11と、取得部12と、生成部13とを備える構成としているので、オブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録し、オブジェクトパーツに実行させる指定動作を特定するための指定動作情報を取得し、オブジェクトのオブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成し、オブジェクトのデザインの自由度を十分に確保しつつオブジェクトのアニメーション生成についての開発者の負担を軽減することが可能となる。
【0049】
すなわち、オブジェクトの姿勢や関節部の回転角度が静的に定められたアニメーションデータ、いわゆるアセットにおいて3次元モデルとセットで登録管理される静的なアニメーションデータを用いることなく、オブジェクトに実行させるアニメーションを動的に生成することが可能となるため、オブジェクトのアニメーション生成に際し、静的なアニメーションデータを予め作成する必要が無くなり、開発者の負担を軽減することが可能となる。これにより、例えばビデオゲームの開発速度の向上を期待できるようになる。
【0050】
[第2の実施形態]
図6は、サーバ10の例であるサーバ10Bの構成を示すブロック図である。本例において、サーバ10Bは、登録部11と、取得部12Bと、生成部13とを少なくとも備える。
【0051】
第2の実施形態において取得部12Bで取得される指定動作情報は、複数のオブジェクトパーツに対する指定動作を組み合わせた命令である第1組み合わせ命令情報によって特定される。
【0052】
ここで、第1組み合わせ命令情報とは、少なくとも1以上のオブジェクトパーツに対する複数の指定動作を組み合わせた命令を意味する。第1組み合わせ命令情報は、複数の異なるオブジェクトパーツそれぞれに対する指定動作を組み合わせたものであってもよいし、1つのオブジェクトパーツに対する複数の指定動作を組み合わせたものであってもよい。取得部12Bでは、第1組み合わせ命令情報に含まれる複数の指定動作を特定し、特定された各指定動作に対応した指定動作情報を予め登録した中から選択して取得する。
【0053】
図7は、システム100が実行するアニメーション生成処理の例を示すフローチャートである。以下、サーバ10Bと、端末20の動作を例にして説明する。なお、サーバ10Bと端末20それぞれの動作を示すフローチャートについては、重複説明を避ける観点から記載を省略する。
【0054】
サーバ10Bは、第1組み合わせ命令情報を取得する(ステップS2-11)。次に、サーバ10Bは、第1組み合わせ命令情報に含まれる複数の指定動作を特定し、特定された各指定動作に対応した指定動作情報を予め登録した中から選択して取得する(ステップS2-12)。
【0055】
以上に説明したように、第2の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するサーバ10Bが、登録部11と、取得部12Bと、生成部13とを少なくとも備える構成とし、取得部12Bで取得される指定動作情報は、複数のオブジェクトパーツに対する指定動作を組み合わせた命令である第1組み合わせ命令情報によって特定されるようにしたので、第1組み合わせ命令情報によって、少なくとも1以上のオブジェクトパーツに対する複数の指定動作を組み合わせて指定することが可能となり、パーツアニメーションを組み合わせたオブジェクトのアニメーションを1つの第1組み合わせ命令情報によって表現することが可能となる。
【0056】
[第3の実施形態]
図8は、サーバ10の例であるサーバ10Cの構成を示すブロック図である。本例において、サーバ10Cは、登録部11と、取得部12と、生成部13と、判定部14とを少なくとも備える。
【0057】
判定部14は、生成部13により生成されたアニメーションにおけるオブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定する機能を有する。
【0058】
ここで、ボーンとは、オブジェクトパーツが備える要素の1つであり、関節部の間を繋ぐ骨格部分を意味する。2つのボーンは関節部により接続される。ボーンは、関節部の回転角度が変化することで当該関節部を回転中心とした回転運動を行う。オブジェクトパーツのアニメーション生成に際し、例えばボーン及びスキニングについては予め設定されているものとすると、アニメーションの再生においてボーンの位置及び/又は姿勢の変化に従って当該ボーンに対応付けされたCGモデル等の位置及び/又は姿勢が変化することになる。ここでのボーンの状態を判定するための構成は特に限定されないが、ボーンの位置(座標)の変化やボーンの姿勢(角度)の変化に基づいた構成が好ましい。また、関節部の状態を判定するための構成は特に限定されないが、関節部の位置(座標)の変化や回転角度の変化に基づく構成が好ましい。異常の発生を判定するための条件の一例としては、ボーン及び/又は関節部の位置や回転角度の変化量が想定される範囲を超えた変化量であるかを判定する構成が考えられる。
【0059】
また、アニメーションの異常とは、アニメーションデータで実行されるオブジェクトの動作が異常と判定されるべき条件を充足したことを意味する。アニメーションの異常の例としては、ボーン及び/又は関節部の位置や回転角度が許容範囲を超えてしまうことが考えられる。
【0060】
また、異常の発生を判定する対象であるアニメーションは特に限定されず、判定の対象はパーツアニメーション単体でもよいし、パーツアニメーションの組み合わせでもよい。ここで、パーツアニメーションの組み合わせは、オブジェクト全体のアニメーションでもよいしオブジェクト全体のうちの一部分である複数のパーツアニメーションの組み合わせでもよい。
【0061】
図9は、システム100が実行するアニメーション生成処理の例を示すフローチャートである。以下、サーバ10Cと、端末20の動作を例にして説明する。なお、サーバ10Cと端末20それぞれの動作を示すフローチャートについては、重複説明を避ける観点から記載を省略する。
【0062】
サーバ10Cは、オブジェクト全体のアニメーションを生成すると、生成されたアニメーションにおけるオブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定する(ステップS3-11)。例えば、サーバ10Cは、ボーン及び/又は関節部の位置や回転角度が想定される範囲の動きであるか否かを判定することでアニメーションの異常の発生を判定する。
【0063】
以上に説明したように、第3の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するサーバ10Cが、登録部11と、取得部12と、生成部13と、判定部14とを少なくとも備える構成とし、生成部13により生成されたアニメーションにおけるオブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定するようにしたので、動的に生成したアニメーションの異常有無の判定を容易に行うことが可能となる。
【0064】
[第4の実施形態]
図10は、サーバ10の例であるサーバ10Dの構成を示すブロック図である。本例において、サーバ10Dは、登録部11と、取得部12Dと、生成部13と、エイム情報登録部15と、エイム命令取得部16とを少なくとも備える。
【0065】
エイム情報登録部15は、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録する機能を有する。
【0066】
ここで、各関節部を様々に角度変化させるとは、各関節部の回転角度の組み合わせを様々に変化させることを意味する。角度変化させる関節部は、一部若しくは全部である。オブジェクトが有する関節部の一部の回転角度が変化していない場合でもオブジェクトが有する他の関節部の回転角度が変化していれば各関節部を様々に角度変化させることに該当する。なお、登録する際の関節部の角度の変化量は特に限定されないが、各関節毎に所定の角度ずつ変化させる、例えば、5度ずつ変化させるようにしてもよい。
【0067】
また、付随物体とは、仮想空間においてオブジェクトパーツに付随して配置され得る物体であって当該オブジェクトパーツに従うように位置及び/又は姿勢が変化する物体を意味する。付随物体としては、例えば、オブジェクトが把持する武器などが考えられる。付随物体は、オブジェクトパーツに付随していれば特に限定されないが、オブジェクトパーツの位置及び/又は姿勢が変化するに従って位置及び/又は姿勢が概略同一に変化するものであることが好ましい。
【0068】
また、ここでのエイム方向とは、オブジェクトのそのときの姿勢状態において所定部位又は付随物体の一部が向いている方向を意味する。所定部位又は付随物体の一部が向いている方向の例には、オブジェクトの下腕が向いている方向や、オブジェクトが保持するライフルの銃口が向いている方向などが考えられる。
【0069】
また、エイム情報とは、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部を特定の方向に向ける動作を実現させるための情報を意味する。具体的には、エイム情報は、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けされた情報である。エイム情報はオブジェクトの姿勢とエイム方向とが対応付けされていれば特に限定されない。また、同じエイム方向に対して複数の姿勢状態が登録されることもあり得る。
【0070】
また、エイム情報を登録するための構成は特に限定されず、サーバ10Dが備える所定の記憶手段でもよいしサーバ10Dと通信可能な装置(例えばユーザ端末20)が備える記憶手段でもよい。
【0071】
エイム命令取得部16は、所定のオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向けるエイム命令を取得する機能を有する。
【0072】
エイム命令は、オブジェクトパーツの所定部位又は付属物体の一部を指定されたエイム方向に向ける動作をオブジェクトに対して実行させることを要求する命令である。このエイム命令は、ユーザ操作により発令される場合や、オブジェクトの一例であるキャラクタを制御するAIによって発令される場合が考えられるが、エイム命令には、指定されたオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向ける命令が含まれる。
【0073】
取得部12Dは、エイム命令取得部16で取得されたエイム命令によって指定されるエイム方向に基づいて演算に必要なエイム情報を取得し、取得したエイム情報に基づいてエイム命令を実行するために必要な指定動作情報を取得する機能を有する。
【0074】
ここで、演算に必要なエイム情報を取得するとは、エイム命令に含まれるエイム方向の情報を用いてエイム情報登録部15で登録済みのエイム情報を参照して、エイム方向に対応するエイム情報を取得することを意味する。
【0075】
また、エイム情報登録部15で登録済みのエイム情報におけるエイム方向と、エイム命令によって指定されるエイム方向が完全一致するとは限らないので、その場合には、エイム命令で指定されたエイム方向に最も近いエイム方向のエイム情報を取得対象として特定する構成が好ましい。あるいは、近いエイム方向についての複数の登録済みエイム情報を用いて、エイム命令で指定されたエイム方向のエイム情報を近似的に算出するようにしてもよい。近似的に算出する際には、関節部それぞれの回転角度についても、登録済みの複数のエイム情報における各姿勢状態の関節部の回転角度から近似して算出することが好ましい。
【0076】
また、エイム命令を実行するために必要な指定動作情報とは、エイム情報登録部15において登録されたエイム情報においてエイム方向と対応付けて登録されている姿勢状態(若しくは、複数の登録済みエイム情報を用いて近似的に算出したエイム情報における姿勢状態)となるようにオブジェクトに動作を実行させる場合に、オブジェクトを構成する各オブジェクトパーツに必要な動作を指定するための指定動作情報を少なくとも含むことを意味する。
【0077】
図11は、システム100が実行するアニメーション生成処理の例を示すフローチャートである。以下、サーバ10Dと、端末20の動作を例にして説明する。なお、サーバ10Dと端末20それぞれの動作を示すフローチャートについては、重複説明を避ける観点から記載を省略する。
【0078】
サーバ10Dは、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を予め登録する(ステップS4-11)。
【0079】
サーバ10Dは、所定のオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向けるエイム命令を取得する(ステップS4-12)。
【0080】
サーバ10Dは、エイム命令を取得すると、取得したエイム命令によって指定されるエイム方向に基づいて演算に必要なエイム情報を取得する(ステップS4-13)。
【0081】
サーバ10Dは、エイム情報を取得すると、取得したエイム情報に基づいてエイム命令を実行するために必要な指定動作情報を取得する(ステップS4-14)。
【0082】
以上に説明したように、第4の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するサーバ10Dが、登録部11と、取得部12Dと、生成部13と、エイム情報登録部15と、エイム命令取得部16とを少なくとも備える構成とし、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録し、所定のオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向けるエイム命令を取得し、エイム命令取得部16で取得されたエイム命令によって指定されるエイム方向に基づいて演算に必要なエイム情報を取得し、取得したエイム情報に基づいてエイム命令を実行するために必要な指定動作情報を取得するようにしたので、様々な方向に対するエイム命令に対して動的にアニメーションを生成することができ、かつ、エイム情報として予め登録した情報を用いることでアニメーション生成時の処理負荷を低減させることが可能となる。
【0083】
また、上述した第4の実施形態の例では特に言及していないが、取得部12Dによるエイム情報の取得処理において、エイム命令によって指定されるエイム方向と概略同一方向のエイム方向を含むエイム情報が登録されていない場合やオブジェクトの関節部の回転角度の範囲制限によりエイム命令によって指定されるエイム方向に所定のオブジェクトパーツの所定部位又は付随物体の一部を向けることが不可能な場合等の状況が発生し得る。このような場合、取得部12Dは、エイム命令によって指定されるエイム方向に最も近いエイム方向のエイム情報を取得しエイム情報に基づいて指定動作情報を取得し、さらに指定される方向に所定部位又は付随物体の一部を向ける指定動作情報を取得してもよい。そして、生成部13は、取得されたエイム情報及び指定動作情報に基づいてエイム情報に含まれるエイム方向に所定部位又は付随物体の一部を向けさせ、当該エイム方向からエイム命令によって指定されるエイム方向に向ける指定動作をオブジェクトに実行させるアニメーションを生成してもよい。このようにすることで、エイム情報に含まれていない方向に対するエイム命令をオブジェクトに実行させることが可能となる。
【0084】
[第5の実施形態]
[プロシージャルアニメーションの生成]
先ず、プロシージャルアニメーションの生成に関して説明を行う。本例では、オブジェクトを構成するオブジェクトパーツ毎に動的かつプロシージャル(数式、スクリプト、条件定義などで制御すること)にアニメーションを生成できるようにするために、指定動作情報によって各オブジェクトパーツに対する制御内容を演算するようにしている。以下、具体的構成について説明を行う。
【0085】
図12は、システム100(図1参照)におけるサーバ10の例であるサーバ10Zの構成を示すブロック図である。本例において、サーバ10Zは、登録部11Zと、取得部12Zと、生成部13Zと、判定部14Zと、エイム情報登録部15Zと、エイム命令取得部16Zとを少なくとも備える。
【0086】
登録部11Zは、オブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録する機能を有する。
【0087】
ここで、オブジェクトとは、仮想空間に配置され得る仮想的なものを意味し、少なくとも関節部を1以上ずつ備えるオブジェクトパーツの組み合わせによって構成される。本例において、オブジェクトは、例えば人型キャラクタや人型のロボットである。
【0088】
また、オブジェクトパーツとは、オブジェクトを構成する所定の部位を意味する。例えば、オブジェクトが人型キャラクタや人型のロボットである場合には、オブジェクトは、「頭」、「胴」、「右腕」、「右手」、「左腕」、「左手」、「腰」、「右脚」、「右足」、「左脚」及び「左足」の各オブジェクトパーツの組み合わせによって構成される。
【0089】
また、オブジェクトパーツの動作とは、オブジェクトパーツの位置及び/又は姿勢が変化する動きを意味する。また、指定動作とは、オブジェクトパーツに実行させる動作を意味する。本例においては、人型キャラクタのオブジェクトパーツそれぞれについて、対応する指定動作が存在する。
【0090】
また、指定動作とは、オブジェクトパーツに実行させる動作を意味する。また、指定動作情報とは、指定動作の内容を特定するための情報を意味する。さらに、指定動作情報は、指定動作を実行するための関節部の回転角度を動的に演算するための条件に関する情報が含まれる。当該条件は、例えば目標姿勢や目標方向を示す情報である。
【0091】
また、登録部11Zが指定動作情報として登録する情報には、オブジェクトが指定動作を実現するための演算規則の情報が含まれるものとしてもよい。
【0092】
ここで、所定の演算規則とは、オブジェクトパーツに実行させる動作について動的に演算するための規則を意味する。具体的には、所定の演算規則は、オブジェクトパーツを動作させるときに、指定される姿勢や軌跡、方向の動作となるように種々の演算を実行するための規則である。
【0093】
また、演算規則は、指定動作によって目標姿勢におけるオブジェクトパーツの所定部位の座標又は所定部位の向く方向が指定された場合に、所定部位を指定された座標位置に移動させる又は指定された方向を向くように移動させるための当該オブジェクトパーツの関節部の回転角度を動的に演算するための規則を少なくとも含んでよい。例えば、演算規則は、IK(Inverse Kinematics)を用いた規則を少なくとも含んでよい。
【0094】
また、演算規則は、指定動作によって目標姿勢における前記オブジェクトパーツの関節部の回転角度の情報が指定された場合に、指定された関節部の回転角度の情報に基づいて、目標姿勢に到達するまでの当該関節部それぞれの回転量を演算する規則を少なくとも含んでよい。例えば、演算規則は、FK(Forward Kinematics)を用いた規則を少なくとも含んでよい。
【0095】
IK及びFKは、オブジェクトに実行させたい動作の内容<に応じて使い分けられる。
【0096】
また、登録部11Zは、指定動作情報として登録する情報に、オブジェクトが指定動作を実現するための関数の情報が含まれるものとしてもよい。
【0097】
ここで、指定動作を実現するための関数とは、所定種類のパラメータの入力に基づいてオブジェクトパーツに実行させる動作についての演算を実行し、オブジェクトパーツが備える各関節部の回転角度やオブジェクトパーツの軌跡を示す情報等を出力するものを意味する。本例において、指定動作を実現するための関数は、IK又はFKを用いた関数である。
【0098】
なお、指定動作を実現するための関数は、指定動作情報とは別のものでよい。また、指定動作情報がその指定動作の目標姿勢や目標位置、目標方向の情報を含む一方で、指定動作を実現するための関数は、指定動作情報とは別のものでもよい。一方、指定動作を実現するための関数には、その指定動作の目標姿勢や目標位置、目標方向の情報が含まれていてもよい。
【0099】
なお、指定動作情報として登録する内容は、動的にパーツアニメーションを生成するために利用可能な情報であればどのようなものであってもよく、関数の他、データ構造体やクラスなどであってもよい。
【0100】
また、演算規則は、少なくとも動作が必要なオブジェクトパーツについての位置及び/又は姿勢の情報と、当該オブジェクトパーツの周辺環境の情報とを取得し、取得した情報に基づいて指定動作を動的に実行するための演算を行う規則であってもよい。
【0101】
ここで、オブジェクトパーツの周辺環境の情報とは、オブジェクトパーツの周りの状況の情報を意味する。オブジェクトパーツの周辺環境の情報は特に限定されないが、オブジェクトパーツが指定動作を実行させる場合に当該指定動作の過程や結果に影響を与え得る要因が少なくとも含まれている情報が好ましい。オブジェクトパーツの周辺環境の情報の例には、オブジェクトパーツの近傍に物体が存在するか否かを示す情報や仮想空間内の地面の形状を示す情報がある。本例においては、オブジェクトパーツの周辺環境の情報は、人型キャラクタが立っている場所近傍の地形情報や人型キャラクタ近傍に配置されている物体の情報等である。
【0102】
取得部12Zは、オブジェクトパーツに実行させる指定動作を特定するための指定動作情報を取得する機能を有する。
【0103】
ここで、取得対象となる指定動作情報を特定する構成は特に限定されず、ユーザ操作により指定動作情報が特定されてもよいし、オブジェクトの一例であるキャラクタを制御するAIによって指定動作情報が特定されてもよい。
【0104】
また、取得部12Zで取得される指定動作情報は、複数のオブジェクトパーツに対する指定動作を組み合わせた命令である第1組み合わせ命令情報によって特定される。以下において、「アニメーションクリップ」との表現は、本例における第1組み合わせ命令情報のことを指す用語として用いるものとする。アニメーションクリップは、複数のオブジェクトパーツそれぞれに対する指定動作が組み合わされたり一のオブジェクトパーツに対する指定動作が複数個組み合わされたりする命令である。
【0105】
また、取得部12Zで取得される指定動作情報は、複数の第1組み合わせ命令情報をさらに組み合わせた命令である第2組み合わせ命令情報によって特定される。以下において、「アニメーションシーケンス」との表現は、本例における第2組み合わせ命令情報のことを指す用語として用いるものとする。アニメーションシーケンスに基づいてアニメーションが生成される場合、まずアニメーションシーケンスを構成するアニメーションクリップが特定され、特定されたアニメーションクリップを構成する指定動作が特定される。そして、取得部12Zは、特定した指定動作に基づいて指定動作情報を取得する。
【0106】
生成部13Zは、オブジェクトのオブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する機能を有する。
【0107】
ここで、動作が必要なオブジェクトパーツとは、指定動作情報により特定された指定動作を実行する主体のオブジェクトパーツを意味する。本例において、動作が必要なオブジェクトパーツは、取得部12Zで取得される指定動作情報によって特定される。
【0108】
また、関節部の回転角度とは、その関節部に接続された2つのオブジェクトパーツについて一方のオブジェクトパーツに対する他方のオブジェクトパーツの基準の向きを、当該関節部を中心とした他方のオブジェクトパーツの回転角の大きさとして表現したものを意味する。本例において、関節部の回転角度の演算は、人型キャラクタのモデルデータのデフォルト状態を基準とした値が用いられる。
【0109】
また、関節部の回転角度を動的に演算するとは、その関節部を有するオブジェクトパーツの状況に応じて演算することを意味する。
【0110】
また、パーツアニメーションとは、オブジェクトパーツに指定動作を実行させるように制御するための当該オブジェクトパーツのみのアニメーションデータのことをいう。また、複数のオブジェクトパーツに対するパーツアニメーションを組み合わせることでオブジェクト全体のアニメーションが生成される。
【0111】
また、生成部13Zは、演算規則として関数を用いて、オブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算する機能を有してもよい。
【0112】
ここで、演算規則として用いる関数は、例えば登録部11Zが登録した指定動作情報に含まれるオブジェクトが指定動作を実現するための関数の情報で特定される関数である。
【0113】
また、生成部13Zは、1つのオブジェクトパーツについて指定動作が実行開始されて終了するまでの間に他の指定動作の実行開始の命令がされた場合、実行期間が重複した複数の指定動作のうち、何れの指定動作を実行させるかを所定の優先順位に基づいて決定し、決定した指定動作を重複時点から実行するように制御することでパーツアニメーションを生成する機能を有してもよい。
【0114】
ここで、指定動作の実行開始の命令とは、指定される時点から指定動作を実行させる命令を意味する。本例において、指定される時点は、パーツアニメーションによる指定動作について適宜指定される実行開始時点やアニメーションクリップやアニメーションシーケンスにて特定される実行開始時点である。
【0115】
また、所定の優先順位とは、実行を優先させる指定動作の順番を意味する。実行を優先させる指定動作は特に限定されないが、指定動作に設定された情報に基づいて予め特定される又はアニメーションの生成時に決定されることが好ましい。本例において、所定の優先順位は、実行期間が重複した場合に後から実行期間が開始する指定動作を優先するか否かで実行を優先させる順番である。本例においては、複数の指定動作の実行期間が少なくとも一部重複している(競合している)場合において指定動作に設定された情報に応じた順番で指定動作の評価が行われる。
【0116】
また、決定した指定動作を重複時点から実行するとは、決定した指定動作の実行に重複時点から切り替えること又は決定した指定動作の実行を重複時点後も継続することを意味する。なお、オブジェクトパーツに実行させる指定動作を重複時点で切り替える場合、切替期間に2種のパーツアニメーションがブレンドされてもよい。
【0117】
このような構成とすることで、オブジェクトにとってより自然な行動を取らせることが可能となる。オブジェクトパーツ単位でパーツアニメーションを生成するようにしたので、例えば、ロボットのオブジェクトについてのオブジェクトパーツをユーザの要望に応じて変更、カスタマイズ可能なビデオゲームの場合、オブジェクトパーツの交換と同時にそのオブジェクトパーツに関するパーツアニメーションも交換することで、カスタマイズに応じてアニメーションを生成することが可能となる。また、上記構成においては、アニメーション生成のための制御対象を関節部の回転角度として説明を行ったが、これに限定されるものではなく、オブジェクトパーツの移動、拡縮についても制御対象とすることで、アニメーションのバリエーションを増やすことが可能となる。例えば、ロボットの腕が伸びるという表現のアニメーションを生成することができるようになる。
【0118】
また、本例におけるプロシージャルアニメーションの生成手法は、キャラクタが歩いている最中に壁に軽く手をつく、地面の起伏に合わせて足の高さを調整するなど、環境への対応が可能である点が最たる利点であるが、それに加えて自己衝突という判定が可能となる。例えば、パーツ交換可能なロボットがオブジェクトである場合、パーツの交換により自己の形状が大きく変化することになるが、そのときに、自己衝突を判定することができるため、動的にアニメーションを生成することが可能となる。自己衝突を判定することにより、アニメーションの齟齬をなくすことができ、アニメーションの品質をあげることができる。
【0119】
[アニメーションの異常検出]
上記構成により、アニメーションを動的かつプロシージャルに生成可能となるが、プロシージャルアニメーションは無限に生成可能であることからそれぞれについて目視で異常の有無を確認するということが困難であるため、プロシージャルアニメーションに異常が発生するか否かを自動で判定できる構成を備えることが好ましい。
【0120】
そこで、サーバ10Zにさらに判定部14Zを設けて、生成したアニメーションにおけるオブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定するようにしてもよい。ここで、ボーンとは、オブジェクトパーツが備える要素の1つであり、関節部の間を繋ぐ骨格部分を意味する。2つのボーンは関節部により接続される。ボーンは、関節部の回転角度が変化することで当該関節部を回転中心とした回転運動を行う。また、アニメーションの異常とは、アニメーションデータで実行されるオブジェクトの動作が異常と判定されるべき条件を充足したことを意味する。アニメーションの異常の例としては、ボーン及び/又は関節部の位置や回転角度が許容範囲を超えてしまうことが考えられる。
【0121】
また、サーバ10Zが判定部14Zとして、生成したアニメーションについて所定の時間間隔の2つの時点におけるボーン及び/又は関節部の回転角度の差分が所定の閾値を超えた場合に異常が発生したと判定してもよい。所定の時間間隔の2つの時点は、例えば所定動作実行中の2つのフレームや所定動作における重要な2つのポーズ時点である。このような構成によって一定時間内での角変化量が大きすぎないかを判定することで、ボーンの位置が連続性を欠いて瞬間移動するようなアニメーションを異常として判定することが可能となる。
【0122】
また、サーバ10Zが判定部として、生成したアニメーションについてボーン及び/又は関節部の回転角度が所定範囲の角度を超えた場合にボーンの回転についての異常が発生したと判定してもよい。ここで、所定範囲の角度は、ボーン及び/又は関節部ごとに適宜設定され得る。このような構成とすることで、ボーンの位置や関節部の回転角度が許容範囲を超えて移動するアニメーションを異常として判定することが可能となる。
【0123】
また、サーバ10Zが記憶部として、パーツアニメーション又はオブジェクト全体のアニメーションのうち所定の基準を満たすアニメーションについて、そのアニメーションの生成に用いた指定動作情報(複数の指定動作の組み合わせも含む。)を所定の記憶手段に記憶させてもよい。ここで、所定の基準は特に限定されないが、アニメーションの異常が発生するという基準が考えられる。記憶部により所定の記憶手段に記憶される情報は、所定の基準を満たすアニメーションが再現できるものであれば特に限定されない。本例において、記憶部により記憶される情報は、指定動作情報や第1組み合わせ命令情報、第2組み合わせ命令情報等である。すなわち、記憶部によりアニメーションの生成に用いた指定動作情報(複数の指定動作の組み合わせも含む。)を所定の記憶手段に記憶させることで、パーツアニメーションやアニメーションクリップ、アニメーションシーケンスの何れの階層のアニメーションであっても再現することができる。このような構成とすることで、所定の基準を満たすアニメーションの内容を製作者が容易に確認できるようになり、開発効率の向上を期待できるようになる。すなわち、無限に生成可能なプロシージャルアニメーションについては、問題が発生したアニメーションを後から再現するのが困難であるため、デバッグをどのように行うかという課題があるが、異常が発生したアニメーションを記憶させることができれば、異常が発生する条件についての蓄積情報を構築できるようになるため、結果として、プロシージャルアニメーションでありながら、異常の発生する条件を予め回避することが可能となるという効果が得られる。
【0124】
このように、動的に生成したアニメーションについて、オブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定可能とすることで、無限に生成可能なプロシージャルアニメーションについて自動で異常判定を行うことが可能となり、生成されたアニメーションのクォリティを担保することが可能となる。
【0125】
[エイム動作に関するアニメーション生成]
オブジェクトパーツ毎のパーツアニメーションを指定動作情報に基づいて動的に演算することでアニメーションを動的かつプロシージャルに生成可能となるが、ターゲットにオブジェクトのパーツの一部を向ける、あるいは、オブジェクトが所持する銃の銃口をターゲットに向けるといった動作、いわゆるエイム動作については、あらゆる角度で特定方向に対してエイム動作を行う手法が存在しなかった。
【0126】
そこで、サーバ10Zにさらにエイム情報登録部15Zを設けて、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録するようにしてもよい。
【0127】
ここで、各関節部を様々に角度変化させるとは、各関節部の回転角度の組み合わせを様々に変化させることを意味する。角度変化させる関節部は、一部若しくは全部である。オブジェクトが有する関節部の一部の回転角度が変化していない場合でもオブジェクトが有する他の関節部の回転角度が変化していれば各関節部を様々に角度変化させることに該当する。なお、登録する際の関節部の角度の変化量は特に限定されないが、各関節毎に所定の角度ずつ変化させる、例えば、5度ずつ変化させるようにしてもよい。
【0128】
また、付随物体とは、仮想空間においてオブジェクトパーツに付随して配置され得る物体であって当該オブジェクトパーツに従うように位置及び/又は姿勢が変化する物体を意味する。本例において、付随物体は、例えば、人型キャラクタが手によって保持している銃が該当する。
【0129】
また、本例におけるエイム方向とは、オブジェクトのそのときの姿勢状態において所定部位又は付随物体の一部が向いている方向を意味する。所定部位又は付随物体の一部が向いている方向の例には、オブジェクトの下腕が向いている方向や、オブジェクトが保持するライフルの銃口が向いている方向などが考えられる。
【0130】
また、エイム情報とは、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部を特定の方向に向ける動作を実現させるための情報を意味する。本例において、エイム情報は、例えば、人型キャラクタが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について関節部それぞれの回転角度と、人型キャラクタが手で保持する銃の銃口の位置と、銃口を向けている方向であるエイム方向とを対応付けされた情報が該当する。
【0131】
また、サーバ10Zにさらにエイム命令取得部16Zを設けて、所定のオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向けるエイム命令を取得するようにしてもよい。エイム命令は、オブジェクトパーツの所定部位又は付属物体の一部を指定されたエイム方向に向ける動作をオブジェクトに対して実行させることを要求する命令である。このエイム命令は、ユーザ操作により発令される場合や、オブジェクトの一例であるキャラクタを制御するAIによって発令される場合が考えられるが、エイム命令には、指定されたオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向ける命令が含まれる。
【0132】
本例において指定されるエイム方向とは、指定される対象に対して狙いをつけるときの方向を意味する。本例において、指定されるエイム方向は、特定の対象に人型キャラクタが手で保持している銃の銃口を向ける方向である。
【0133】
また、取得部12Zは、取得したエイム命令によって指定されるエイム方向に基づいて演算に必要なエイム情報を取得し、取得したエイム情報に基づいてエイム命令を実行するために必要な指定動作情報を取得してもよい。
【0134】
ここで、演算に必要なエイム情報を取得するとは、エイム命令に含まれるエイム方向の情報を用いてエイム情報登録部15Zで登録済みのエイム情報を参照して、エイム方向に対応するエイム情報を取得することを意味する。本例において、例えば、取得部12Zは、指定されるエイム方向に一致又は一番近いエイム方向のエイム情報を取得対象として特定する。
【0135】
図13は、サーバ10Zが実行するアニメーション生成の例を示すフローチャートである。本例におけるアニメーション生成処理では、アニメーションを生成することに関連する処理が行われる。以下、各処理について説明する。なお、各処理の順序は、処理内容に矛盾等が生じない範囲で順不同である。
【0136】
アニメーション生成処理は、例えばサーバ10Zにアクセスした端末20がアニメーション生成に関する処理の開始を要求したことを契機に開始される。
【0137】
サーバ10Zは、アニメーション生成処理において、まず、オブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録する(ステップS301)。本例では、サーバ10Zは、何れのオブジェクトパーツであるかを示す情報と、人型キャラクタのオブジェクトパーツに指定動作を実行させるための関節部の回転角度を動的に演算するための条件に関する情報とを対応付けて指定動作情報として登録する。
【0138】
サーバ10Zは、指定動作の内容を指定動作情報として予め登録すると、第2組み合わせ命令情報を取得する(ステップS302)。本例では、サーバ10Zは、アニメーションシーケンスの実行命令がされたことに応じて第2組み合わせ命令情報を取得する。
【0139】
サーバ10Zは、第2組み合わせ命令情報を取得すると、取得した第2組み合わせ命令情報を構成する第1組み合わせ命令情報を特定する(ステップS303)。本例では、サーバ10Zは、アニメーションシーケンスを構成するアニメーションクリップの内容を特定するために、取得した第2組み合わせ命令情報に含まれる第1組み合わせ命令情報を特定するための情報に基づいて第1組み合わせ命令情報を特定する。
【0140】
サーバ10Zは、第1組み合わせ命令情報を特定すると、特定した第1組み合わせ命令情報を構成する指定動作を特定する(ステップS304)。本例では、サーバ10Zは、アニメーションクリップを構成するパーツアニメーションを生成するために、特定した第1組み合わせ命令情報に含まれる取得対象の指定動作情報を特定する情報に基づいて指定動作を特定する。
【0141】
サーバ10Zは、指定動作を特定すると、特定した指定動作の指定動作情報を取得する(ステップS305)。本例では、サーバ10Zは、本例においてサーバ10Aは、登録した指定動作情報から取得対象として特定したものを選択して取得する。
【0142】
サーバ10Zは、指定動作情報を取得すると、取得した指定動作情報に基づいてパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成する(ステップS306)。本例では、サーバ10Zは、何れのオブジェクトパーツであるかを示す情報と、人型キャラクタのオブジェクトパーツに指定動作を実行させるための関節部の回転角度を動的に演算するための条件に関する情報に基づいてパーツアニメーションを生成し、生成したパーツアニメーションを組み合わせてアニメーションクリップを生成する。そして、サーバ10Zは、アニメーションクリップを組み合わせてアニメーションシーケンスを生成する。
【0143】
本例では、サーバ10Zは、オブジェクト全体のアニメーションを生成すると、ここでの処理を終了する。
【0144】
図14は、本発明の実施形態の少なくとも一つに対応するオブジェクトパーツの例について説明するための説明図である。図14には、オブジェクトの一例である人型キャラクタが示されている。図14に示されている人型キャラクタは、「頭」、「胴」、「右腕」、「右手」、「左腕」、「左手」、「腰」、「右脚」、「右足」、「左脚」及び「左足」の計11個のオブジェクトパーツから構成される。また、これらのオブジェクトパーツは、互いに関節部により接続されている。すなわち、2つのオブジェクトパーツは、関節部を境界として接続されている。オブジェクトパーツの境界に位置する関節部は、何れか片方のオブジェクトパーツに属するものと扱われる。例えば、「胴」と「右腕」の境界の関節部は「右腕」に属する。また例えば、「頭」と「胴」の境界の関節部は「頭」に属する。なお、関節部はオブジェクトパーツの境界以外にもオブジェクトパーツ内に備えられる場合もある。例えば、「右腕」は中間の肘の位置に関節部を1つ備える。
【0145】
図15は、本発明の実施形態の少なくとも一つに対応する指定動作情報の一例を説明する説明図である。図15には、登録部11Zで登録される指定動作情報の一例が示されている。
【0146】
ここで、「ID」は、指定動作の種類を識別するための情報である。
【0147】
また、「パーツ」は、指定動作が何れのオブジェクトパーツの動作であるかを示すための情報である。本例において、「パーツ」は、左右を区別せずに何れの部位のオブジェクトパーツの動作であるかを示す。
【0148】
また、「指定動作名」は、「ID」に対応する指定動作の名前である。本例において、「指定動作名」として「武器保持」や「エイム」などのように指定動作の概要が分かる名前が示されている。このように、指定動作には種々の状況で利用できるものがある。一方で、IDが「A03」の指定動作名は「反動表現」である。「反動表現」は、キャラクタが保持する銃で発砲した場合の反動を表現する指定動作である。このように、利用状況が限定された指定動作があってもよい。
【0149】
また、「動作内容」は、指定動作を実行するためのオブジェクトパーツの具体的な動作の内容である。本例において、「動作内容」は、オブジェクトパーツの具体的な動きの概要を示す情報である。各指定動作について、「動作内容」に応じてIK又はFKを用いた関節部の回転角度の演算が行われる。なお、パーツが「足」の指定動作「ウォーク」は、指定の軌跡を目標に演算が行われパーツアニメーションが生成される周期性を持った動作である。
【0150】
また、「優先順位」は、1つのオブジェクトパーツについて複数の指定動作の実行が重複した場合に何れの指定動作を実行させるかを定める情報である。本例では、優先順位を定める情報として「overwrite」、「IK」、「additive」の3種のうち何れかが指定動作に対応付けされる。
【0151】
「overwrite」の指定動作は既に実行期間が開始している指定動作に対し上書きする。具体的には、1つのオブジェクトパーツについて優先順位が「overwrite」である指定動作の実行期間が開始する場合は当該指定動作が優先して実行される。なお、「overwrite」は、FKを用いた演算によりアニメーションが生成される動作に設定される。
【0152】
「IK」の指定動作は「overwrite」の指定動作よりも優先される。具体的には、1つのオブジェクトパーツについて優先順位が「IK」である指定動作の実行期間が開始する場合は「overwrite」の実行期間が開始している場合でも「IK」である指定動作が優先して実行される。なお、「IK」は、IKを用いた演算によりアニメーションが生成される動作に設定される。
【0153】
「additive」の指定動作は、その時点での姿勢の制御状態に対して加算処理を行う。IK具体的には、「overwrite」や「IK」の指定動作の実行期間中に「additive」の指定動作の実行が開始する場合、「overwrite」や「IK」の指定動作実行中の状態を基準として「additive」の指定動作が加算されるように実行される。
【0154】
なお、複数の指定動作の実行期間が少なくとも一部重複している(競合している)場合、「overwrite」、「IK」、「additive」の順番で指定動作の(パーツアニメーションの)評価が行われ、上述した優先順位に関する処理が実行される。
【0155】
図16は、本発明の実施形態の少なくとも一つに対応する第1組み合わせ命令情報の一例を説明する説明図である。図16には、第1組み合わせ命令情報(アニメーションクリップ)の内容が示されている。図16に示されるように、第1組み合わせ命令情報は複数の指定動作の組み合わせを示す情報であり、各指定動作を特定する指定動作情報はオブジェクトが指定動作を実現するための関数の情報である。ここで、各指定動作について実行開始タイミングや実行時間長、実行期間長に対する動作進行速度等の指定が可能である。ここで、指定動作は、実行期間が長くなるに従って遅く実行され、実行期間が短くなるに従って速く実行される。対象のオブジェクトパーツが異なり実行期間が重複している指定動作は同時に実行されるものである。また、実行期間長に対する動作進行速度は、実行期間長に対する指定動作の実行の進み具合の速さである。なお、図16に示される例では、複数の指定動作のうち最初に実行が開始される時点から最後に実行が終了する時点までの期間をアニメーションクリップの実行期間としている。この図16の例では、胴(body)と頭(head)を所定の方向に向ける指定動作をdirection()という関数で実行し、胴(body)を所定方向に向ける指定動作をaim()という関数で実行し、右腕(armR)を所定方向に向ける指定動作をaim()という関数で実行することをアニメーションクリップによって順次実行させることで、「頭と胴を所定方向に向けて目標物を発見し、目標物に対して胴と右腕を順次向けて対象物に銃口を向ける」という一連の動作のアニメーションを動的に生成することが可能となる。
【0156】
図17は、本発明の実施形態の少なくとも一つに対応する第2組み合わせ命令情報の一例を説明する説明図である。図17には、第2組み合わせ命令情報(アニメーションシーケンス)の内容が示されている。図17に示されるように、第2組み合わせ命令情報は複数の第1組み合わせ命令情報をさらに組み合わせた命令である。アニメーションシーケンスは、アニメーションクリップと同様に、アニメーションクリップの実行開始タイミングや実行期間等の指定が可能である。ここで、アニメーションクリップは、実行期間が長くなるに従って遅く実行され、実行期間が短くなるに従って早く実行される。なお、図17に示される例では、複数のアニメーションクリップのうち最初に実行が開始される時点から最後に実行が終了する時点までの期間をアニメーションシーケンスの実行期間としている。本例では、アニメーションシーケンスは、FIFO(First In First Out)方式でキューに蓄えられ順次実行処理される。なお、所定の割り込み条件が満たされた場合はキューの最後尾以外の場所に新しくアニメーションシーケンスが追加される。アニメーションシーケンスによれば、アニメーションクリップを組み合わせてより複雑な動作を実行するためのアニメーションを動的に生成することが可能となる。
【0157】
図18は、本発明の実施形態の少なくとも一つに対応するエイム動作を実現するための「aimIK」の一例を説明する説明図である。aimIKは、オブジェクトの一部やオブジェクトの付随物体の一部の向きをターゲットに対して向ける処理を動的に実現するために新たに開発した手法である。例えば、「腕の方向をターゲットに向ける」という処理を実現するために、肩の関節部の回転が不可欠であるような場合に、aimIKでは、先ず、手の先に設定されたエイム方向の情報(エイム方向を示すベクトル)を肩の関節部に移動させる。次に、エイム方向を示すベクトルを移動させた分と同じだけターゲットについても移動させて仮想ターゲットを配置する。そして、仮想ターゲットに対して肩の関節部に移動させたベクトルの方向が向くように肩の関節部を回転させる。このような手順によって肩の関節部のベクトル方向が仮想ターゲットに向いた状態となると、手のエイム方向についても元のターゲットに向いた状態となる。なお、図18のような平面空間であれば一回の処理でエイムが完了するが、実際は立体空間における3次元オブジェクトであることと各関節部によって回転軸が異なることから、一回の処理では正確に狙えないという実状がある。そのためaimIKを実際に実行する場合には各関節部について処理を繰り返すことで、オブジェクトの一部やオブジェクトの付随物体の一部の向きが徐々にエイム方向に向くように処理が行われる。このようなaimIKによるエイム動作は、エイム情報登録部15Zにおいて登録済みのエイム情報におけるエイム方向と、エイム命令によって指定されるエイム方向が完全一致しない場合に、近似するエイム情報に基づいて近い姿勢状態までは姿勢制御するようにし、その状態からエイム命令によって指定されるエイム方向に完全一致するまでのエイム動作をaimIKによって実現するようにすることで、関節部の回転角度の限度(関節の可動範囲)を超えた動きが発生する事態を回避しつつ、エイム命令によって指定されたエイム方向に対して正確に向きを揃えるエイム動作を常に実現することが可能となる。
【0158】
以上に説明したように、第5の実施形態の一側面として、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能を有するサーバ10Zが、登録部11Zと、取得部12Zと、生成部13Zとを備える構成としているので、オブジェクトを構成するパーツ(オブジェクトパーツ)に対する指定動作の内容を指定動作情報として予め登録し、オブジェクトパーツに実行させる指定動作を特定するための指定動作情報を取得し、オブジェクトのオブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツのパーツアニメーションに基づいてオブジェクト全体のアニメーションを生成し、オブジェクトのデザインの自由度を十分に確保しつつオブジェクトのアニメーション生成についての開発者の負担を軽減することが可能となる。
【0159】
すなわち、オブジェクトの姿勢や関節部の回転角度が静的に定められたアニメーションデータ(アセット)を用いずにオブジェクトのアニメーションを動的に生成するため、オブジェクトのアニメーション生成に際し、静的なアニメーションデータを予め作成する必要が無くなり、開発者の負担を軽減することが可能となり、例えばビデオゲームの開発速度の向上を期待できるようになる。また、アニメーションデータを用いないため、当該データからオブジェクトのデザインへの制限を受けないようにすることが可能となる。
【0160】
また、上述した第5の実施形態の例では、取得部12Zで取得される指定動作情報は、複数のオブジェクトパーツに対する指定動作を組み合わせた命令である第1組み合わせ命令情報(アニメーションクリップ)によって特定され、複数のパーツアニメーションを束ねたオブジェクトの行動を命令情報として表現することが可能となる。
【0161】
また、上述した第5の実施形態の例では、生成部13Zにより生成されたアニメーションにおけるオブジェクトが有するボーン及び/又は関節部の状態に基づいて、当該アニメーションの異常の発生を判定し、アニメーションを動的に生成することからアニメーションの異常の有無を開発者自身が予め確認できない場合であってもアニメーションの異常を発見することが可能となる。
【0162】
また、上述した第5の実施形態の例では、オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定のオブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、所定部位又は付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録し、所定のオブジェクトパーツの所定部位又はオブジェクトパーツに付随する付随物体の一部を指定されるエイム方向に向けるエイム命令を取得し、エイム命令取得部16Zで取得されたエイム命令によって指定されるエイム方向に基づいて演算に必要なエイム情報を取得し、取得したエイム情報に基づいてエイム命令を実行するために必要な指定動作情報を取得し、動作実行過程の姿勢や関節部の回転角度を指定する静的なアニメーションデータを用いずに、様々な方向に対するエイム命令を動的に実行することが可能となる。
【0163】
以上に説明したように、本願の各実施形態により1または2以上の不足が解決される。なお、夫々の実施形態による効果は、非限定的な効果または効果の一例である。
【0164】
なお、上述した各実施形態では、複数のユーザ端末20,201~20Nとサーバ10は、自己が備える記憶装置に記憶されている各種制御プログラム(例えば、アニメーション生成プログラム)に従って、上述した各種の処理を実行する。
【0165】
また、システム100の構成は上述した各実施形態の例として説明した構成に限定されず、例えばユーザ端末が実行する処理として説明した処理の一部または全部をサーバ10が実行する構成としてもよいし、サーバ10が実行する処理として説明した処理の一部または全部を複数のユーザ端末20,201~20Nの何れか(例えば、ユーザ端末20)が実行する構成としてもよい。また、サーバ10が備える記憶部の一部または全部を複数のユーザ端末20,201~20Nの何れかが備える構成としてもよい。すなわち、システム100におけるユーザ端末20とサーバ10のどちらか一方が備える機能の一部または全部を、他の一方が備える構成とされていてもよい。
【0166】
また、プログラムが、上述した各実施形態の例として説明した機能の一部または全部を、通信ネットワークを含まない装置単体に実現させる構成としてもよい。
【0167】
[付記]
[1]
少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をサーバに実現させるためのアニメーション生成プログラムであって、
前記サーバに、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを
実現させるためのアニメーション生成プログラム。
[2]
前記取得機能で取得される前記指定動作情報は、複数の前記オブジェクトパーツに対する前記指定動作を組み合わせた命令である第1組み合わせ命令情報によって特定される
[1]記載のアニメーション生成プログラム。
[2-1]
前記取得機能で取得される前記指定動作情報は、複数の前記第1組み合わせ命令情報をさらに組み合わせた命令である第2組み合わせ命令情報によって特定される
[2]記載のアニメーション生成プログラム。
[3]
前記登録機能は、前記指定動作情報として登録する情報に、前記オブジェクトが前記指定動作を実現するための関数の情報が含まれるものとし、
前記生成機能は、前記演算規則として前記関数を用いて、前記オブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算する
[1]又は[2]記載のアニメーション生成プログラム。
[4]
前記演算規則は、少なくとも動作が必要な前記オブジェクトパーツについての位置及び/又は姿勢の情報と、当該オブジェクトパーツの周辺環境の情報とを取得し、取得した情報に基づいて前記指定動作を動的に実行するための演算を行う規則である
[1]から[3]のうち何れかに記載のアニメーション生成プログラム。
[5]
前記生成機能では、1つの前記オブジェクトパーツについて前記指定動作が実行開始されて終了するまでの間に他の前記指定動作の実行開始の命令がされた場合、実行期間が重複した複数の前記指定動作のうち、何れの指定動作を実行させるかを所定の優先順位に基づいて決定し、決定した前記指定動作を重複時点から実行するように制御することでパーツアニメーションを生成する機能を
実現させるための[1]から[4]のうち何れかに記載のアニメーション生成プログラム。
[6]
前記演算規則は、前記指定動作によって目標姿勢における前記オブジェクトパーツの所定部位の座標又は所定部位の向く方向が指定された場合に、前記所定部位を指定された座標位置に移動させる又は指定された方向を向くように移動させるための当該オブジェクトパーツの前記関節部の回転角度を演算する規則を少なくとも含む
[1]から[5]のうち何れかに記載のアニメーション生成プログラム。
[7]
前記演算規則は、前記指定動作によって目標姿勢における前記オブジェクトパーツの関節部の回転角度の情報が指定された場合に、指定された関節部の回転角度の情報に基づいて、目標姿勢に到達するまでの当該関節部それぞれの回転量を演算する規則を少なくとも含む
[1]から[6]のうち何れかに記載のアニメーション生成プログラム。
[8]
前記サーバに、前記生成機能により生成されたアニメーションにおける前記オブジェクトが有するボーン及び/又は前記関節部の状態に基づいて、当該アニメーションの異常の発生を判定する判定機能を
実現させるための[1]から[7]のうち何れかに記載のアニメーション生成プログラム。
[8-1]
前記判定機能では、前記生成機能により生成されたアニメーションについて所定の時間間隔の2つの時点における前記ボーン及び/又は前記関節部の回転角度の差分が所定の閾値を超えた場合に異常が発生したと判定する機能を
実現させるための[8]記載のアニメーション生成プログラム。
[8-2]
前記判定機能では、前記生成機能により生成されたアニメーションについて前記ボーン及び/又は前記関節部の回転角度が所定範囲の角度を超えた場合に前記ボーンの回転についての異常が発生したと判定する機能を
実現させるための[8]又は[8-1]記載のアニメーション生成プログラム。
[9]
前記サーバに、前記パーツアニメーション又は前記オブジェクト全体のアニメーションのうち所定の基準を満たすアニメーションについて、そのアニメーションの生成に用いた前記指定動作情報(複数の前記指定動作の組み合わせも含む。)を所定の記憶手段に記憶させる記憶機能を
実現させるための[1]から[8]のうち何れかに記載のアニメーション生成プログラム。
[10]
前記サーバに、
前記オブジェクトが有する各関節部を様々に角度変化させた場合の複数の姿勢状態について、関節部それぞれの回転角度と、所定の前記オブジェクトパーツの所定部位又は当該オブジェクトパーツに付随する付随物体の一部の位置と、前記所定部位又は前記付随物体の一部が向いている方向であるエイム方向とを対応付けたエイム情報を登録するエイム情報登録機能と、
前記所定部位又は前記付随物体の一部を指定されるエイム方向に向けるエイム命令を取得するエイム命令取得機能とを実現させ、
前記取得機能では、取得された前記エイム命令によって指定されるエイム方向に基づいて演算に必要な前記エイム情報を取得し、取得した前記エイム情報に基づいて前記エイム命令を実行するために必要な前記指定動作情報を取得する機能を
実現させるための[1]から[9]のうち何れかに記載のアニメーション生成プログラム。
[11]
[1]から[10]のうち何れかに記載のアニメーション生成プログラムが前記サーバに実現させる機能のうち少なくとも1つの機能を、当該サーバと通信可能なユーザ端末に実現させるためのアニメーション生成プログラム。
[12]
通信ネットワークと、サーバと、ユーザ端末とを備え、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成するアニメーション生成システムであって、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録手段と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得手段と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成手段とを含む
ことを特徴とするアニメーション生成システム。
[13]
前記サーバが、前記登録手段と、前記取得手段と、前記生成手段とを含み、
前記ユーザ端末が、前記表示手段により前記所定のオブジェクトの様子を表す画面を表示装置の表示画面に出力する出力手段を含む
[12]記載のアニメーション生成システム。
[14]
少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成する機能をユーザ端末に実現させるためのアニメーション生成プログラムであって、
前記ユーザ端末に、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録機能と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得機能と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成機能とを
実現させるためのアニメーション生成プログラム。
[15]
少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成するアニメーション生成方法であって、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録処理と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得処理と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成処理とを含む
ことを特徴とするアニメーション生成方法。
[16]
通信ネットワークと、サーバと、ユーザ端末とを備えるアニメーション生成システムが、少なくとも関節部を1以上ずつ備えるパーツの組み合わせによって構成されるオブジェクトであって仮想空間において動作を実行するオブジェクトのアニメーションを生成するアニメーション生成方法であって、
前記オブジェクトを構成する前記パーツ(以下、オブジェクトパーツという。)に対する指定動作の内容を指定動作情報として予め登録する登録処理と、
前記オブジェクトパーツに実行させる前記指定動作を特定するための前記指定動作情報を取得する取得処理と、
前記オブジェクトの前記オブジェクトパーツのうち動作が必要なオブジェクトパーツのそれぞれについて、所定の演算規則に従ってオブジェクトパーツの前記指定動作に必要な関節部の回転角度を動的に演算することでそのオブジェクトパーツの前記指定動作を制御するパーツアニメーションを生成し、各オブジェクトパーツの前記パーツアニメーションに基づいて前記オブジェクト全体のアニメーションを生成する生成処理とを含む
ことを特徴とするアニメーション生成方法。
【産業上の利用可能性】
【0168】
本発明の実施形態の一つによれば、オブジェクトのデザインの自由度を十分に確保しつつオブジェクトのアニメーション生成についての開発者の負担を軽減するのに有用である。
【符号の説明】
【0169】
10 サーバ
20,201~20N ユーザ端末
11 登録部
12 取得部
13 生成部
14 判定部
15 エイム情報登録部
16 エイム命令取得部
30 通信ネットワーク
100 アニメーション生成システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18