(57)【要約】【課題】メモリ消費量が少なく且つ高速高精度に変換するスキニング分解高速化技術の提供。【解決手段】オブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てるクラスタの割り当て処理部１２と、設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つシステム行列縮小処理部１３と、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する演算回数低減処理１４とを実行させる初期化工程を適用したスキニング分解高速化方法。【選択図】図１
2019159348.tif 000002
【特許請求の範囲】
【請求項１】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法であって、
該コンピュータに、
前記静止状態オブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項２】
前記［クラスタの割り当て処理工程］において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第１工程と、
該第１工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行う第２工程と、
該第２工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第３工程と、
該第３工程により可動部分が骨格等によりにより定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第４工程と、
該第３工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第５工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項３】
前記［システム行列縮小処理工程］において、
前記コンピュータに、
前記［クラスタの割り当て処理］のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第６工程と、
前記スキンウェイトを求める頂点が属しているクラスタ番号を取得する第７工程と、
該第７工程によりクラスタ番号を取得したクラスタとそのクラスタの第２近傍以内にあるボーンを取得する第８工程と（クラスタのクラスタリング）、
該第８工程により取得したボーンのみを対象としてスキンウェイトを算出する第９工程と、
該第９工程で算出したスキンウェイトのうち値が大きい上位４つのボーンを取出しそれらに対して再び２次計画問題を解き最終的なスキンウェイトを決定する第１０工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項４】
前記［演算回数低減処理］において、
前記コンピュータに、
前記［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第１１工程と、
該第１１工程で導入した評価関数式を用いて任意の２つのキーフレーム間の評価関数式の値を算出する第１２工程と
該第１２工程で算出した評価関数式の値が閾値以下であるかを判断する第１３工程と、
該第１３工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第１４工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項５】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化プログラムであって、
該コンピュータに、
前記静止状態オブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるためのウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項６】
前記［クラスタの割り当て処理工程］において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第１工程と、
該第１工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行う第２工程と、
該第２工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第３工程と、
該第３工程により可動部分が骨格等によりにより定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第４工程と、
該第３工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第５工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項７】
前記［システム行列縮小処理工程］において、
前記コンピュータに、
前記［クラスタの割り当て処理］のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第６工程と、
前記スキンウェイトを求める頂点が属しているクラスタ番号を取得する第７工程と、
該第７工程によりクラスタ番号を取得したクラスタとそのクラスタの第２近傍以内にあるボーンを取得する第８工程と（クラスタのクラスタリング）、
該第８工程により取得したボーンのみを対象としてスキンウェイトを算出する第９工程と、
該第９工程で算出したスキンウェイトのうち値が大きい上位４つのボーンを取出しそれらに対して再び２次計画問題を解き最終的なスキンウェイトを決定する第１０工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項８】
前記［演算回数低減処理］において、
前記コンピュータに、
前記［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第１１工程と、
該第１１工程で導入した評価関数式を用いて任意の２つのキーフレーム間の評価関数式の値を算出する第１２工程と
該第１２工程で算出した評価関数式の値が閾値以下であるかを判断する第１３工程と、
該第１３工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第１４工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、頂点ベースで作成された３次元オブジェクト（人物・動物・物体他）のアニメーションを３Ｄスキンアニメーションに変換するスキニング分解技術においてウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムに関する。
【背景技術】
【０００２】
スキニング（処理）とは、３次元のオブジェクトを変形させる手法の１つである。静止状態のオブジェクトに対し、オブジェクトを操作するためのボーン（コントロールポイント）及びボーンが各頂点にどれくらいの影響を及ぼすかを示すウェイトマップを設定する。これにより、ボーンの姿勢を操作することで物体全体を変形させることができる。近年の実時間アプリケーションにおけるＣＧキャラクタのスキニング処理には、線形ブレンドスキニング法（Ｌｉｎｅａｒ  Ｂｌｅｎｄ  Ｓｋｉｎｎｉｎｇ  、ＬＢＳ）が広く利用されている。さらに、補助骨と呼ばれる冗長なボーンを導入することによってスキンアニメーションの品質を改善するとともに，皮膚や筋肉の隆起などの複雑なスキン変形を表現する技法が実用化されている。一般的にボーンの数はオブジェクトの頂点数よりもずっと小さいため、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておくよりも、オブジェクトのウェイトマップと各フレームのボーンの姿勢を記憶しておく方が、メモリ消費量の観点から効率的である。また、スキニング処理は計算コストが低く、ハードウェアで高速化することが出来る。しかしながら、スキニング処理を行う為にはオブジェクトにボーンとそれに対応するウェイトマップ、各フレームにおけるボーンの姿勢を適切に設定する必要があり、アーティストにとって大きな負担となっている。
【０００３】
そこで、頂点ベースアニメーションをよりメモリ消費量が少なく演算コストの低いスキンアニメーションへ自動で変換する技術には高い需要がある。頂点ベースアニメーションをスキンアニメーションへ変換する技術は、スキニング分解と呼ばれる。このスキニング分解の代表的なものとしては、ＪａｍｅｓらのＳｋｉｎｎｉｎｇ  Ｍｅｓｈ  Ａｎｉｍａｔｉｏｎｓ、ＨａｓｌｅｒらのＬｅａｒｎｉｎｇ  Ｓｋｅｌｅｔｏｎｓ  ｆｏｒ  Ｓｈａｐｅ  ａｎｄ  Ｐｏｓｅ、ＬｉらのＳｍｏｏｔｈ  Ｓｋｉｎｎｉｎｇ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ    ｗｉｔｈ  Ｒｉｇｉｄ  Ｂｏｎｅｓ［ＳＳＤＲ］などがあり、ＳＳＤＲは正確性と応用性の観点から，現在最も注目されている手法の一つである。
【０００４】
ＳＳＤＲによるスキニング分解は線形ブレンドスキニング法の逆問題を解き、オブジェクトの例示データの集合を入力として、各例示データをもっともよく近似するようなスキニングのパラメータ（各ボーンの姿勢、ウェイトマップ）を出力する。具体的には、オブジェクトのアニメーションの１フレームごとの物体の形状を入力とし、それをもっともよく近似するような各ボーンの剛体変換行列を１フレームごとに算出する。ただしウェイトマップはアニメーション全体で１つのパラメータを算出する。ＳＳＤＲは、図３（ａ）に示す如く、クラスタリング（Ｃｌｕｓｔｅｒｉｎｇ）の初期化工程と、ボーンの剛体変換行列の更新（Ｕｐｄａｔｅ  Ｂｏｎｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎｓ）工程と、ウェイトマップの更新（Ｕｐｄａｔｅ  Ｂｏｎｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎｓ）工程の３工程からなる。まず、オブジェクトの例示データの似たような動きをしている部分をクラスタリングしてボーンの剛体変換行列の初期値を算出する。次にＢｌｏｃｋ  Ｃｏｏｒｄｉｎａｔｅ  Ｄｅｓｃｅｎｔ法を用いてウェイトマップの更新とボーンの剛体変換行列の更新を繰り返すことで最終的なスキニングのパラメータを算出する。
【０００５】
また、３次元のオブジェクトを変形させる別の手法としてブレンドシェイプがある。これは頂点数や頂点間の接続情報が同じで、形状が異なるモデルを複数用意しておき、それぞれの形をブレンドすることで新しい形状をつくり出す手法である。特にフェイシャル（顔の表情）のアニメーションを作成する際に広く用いられている。しかしながらブレンドシェイプはスキニングと比較し、（実時間で動作させるには）多くの計算量を要するという課題があった。そこで、ブレンドシェイプで作成したアニメーションをスキンアニメーションに変換する技術の需要も増大している。
【０００６】
なお、従来のスキニング処理が記載された文献としては、下記の特許文献１及び２が挙げられ、ＳＳＤＲ及びスキニング分解が記載された非特許文献としては下記の非特許文献１が挙げられる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−６３５９５号公報
【特許文献２】特開２００４−３３４６６２号公報
【非特許文献】
【０００８】
【非特許文献１】Ｂｉｎｈ  Ｈｕｌｙ  Ｌｅ  、Ｚｈｉｇａｎｇ  Ｄｅｎｇ著「Ｓｍｏｏｔｈ  Ｓｋｉｎｎｉｎｇ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ  ｗｉｔｈ  Ｒｉｇｉｄ  Ｂｏｎｅｓ」、ヒーストン大学（Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｈｏｕｓｔｏｎ）、２０１２年、［平成２８年１２月２５日検索］、インターネット＜ＨＴＴＰ：／／ＧＲＡＰＨＩＣＳ．ＣＳ．ＵＨ．ＥＤＵ／ＢＬＥ／ＰＡＰＥＲＳ／２０１２ＳＡ−ＳＳＤＲ／２０１２＿ＳＡ＿ＳＳＤＲ＿ＰＲＥＰＲＩＮＴ．ＰＤＦ
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述したＳＳＤＲによるスキニング分解は可動部分が骨格等によりにより定まっているオブジェクトに対し誤差の少ないスキニングのパラメータを算出することを可能とするが、可動部分が定まっていない大きな変形をするオブジェクト（例えば布等）に対しては精度が落ちてしまうという問題がある。さらに、ＳＳＤＲはブレンドシェイプで作成したアニメーションは対象としていない。
【００１０】
また、前述したＳＳＤＲによるスキニング分解は設定するボーンの数が増大するにつれて計算量が指数関数的に増大するという問題がある。これはウェイトマップを算出する際に解く２次計画問題のシステム行列の大きさが設定するボーンの数に比例しているためである。特に変形の大きな物体（布や衣服等）のアニメーションを精度高くスキニングで近似するというような、多数のボーンを設定する必要のある場合にこの問題が顕著に表れる。
【００１１】
本発明の第１の目的は、変形の大きな物体のアニメーションやブレンドシェイプにも適用可能なウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを提供することである。
【００１２】
本発明の第２の目的は、設定するボーンの数が増大しても計算量が爆発的に増大しないウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを提供することである。
【課題を解決するための手段】
【００１３】
前記目的を達成するため本発明は、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法およびプログラムにおいて、
該コンピュータに、
静止状態オブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させることを主な特徴とする。
特に、本発明は、第１の目的を達成するため、初期化工程の［クラスタの割り当て処理工程］において対象となるオブジェクトに応じて３通りの手法を使い分ける。
（１）動物など可動部分が骨格等によりにより定まっているオブジェクトに対しては、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく。ただし、はじめはオブジェクト全体を１つのクラスタとする。
（２）布など可動部分が定まっていない大きな変形をするオブジェクトに対しては、最遠点サンプリング法（Ｆａｒｔｈｅｓｔ  Ｐｏｉｎｔ  Ｓａｍｐｌｉｎｇ）を用いてボーンの位置を決定した結果をもとにクラスタリングを行う。
（３）ブレンドシェイプへの応用では、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行う。
また、本発明は、第２の目的を達成するため、初期化工程において、ウェイトマップの計算量を削減する手法を導入する。このウェイトマップ計算量削減手法は、各ボーンのウェイトマップを求める際に、オブジェクト全体のアニメーションでなく、そのボーンの近傍のみのアニメーションを用いて近似的に解を求める［システム行列縮小工程］と、ウェイトマップを求める際に、全てのフレームのオブジェクトの形状を用いるのではなく、似たような形状のフレームを間引く［演算回数低減処理工程］からなる。
【発明の効果】
【００１４】
本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムは、初期化工程において対象となるオブジェクトに応じて３通りの手法を使い分けることで、幅広い対象のアニメーションに対し高精度なスキニング分解を適用することを可能にする。具体的には、クラスタの割り当てを工夫することにより、動物など可動部分が骨格等によりにより定まっているオブジェクトに対してはＳＳＤＲよりも高精度なスキニング分解を可能にする。最遠点サンプリング法（Ｆａｒｔｈｅｓｔ  Ｐｏｉｎｔ  Ｓａｍｐｌｉｎｇ）を用いることにより、布など可動部分が定まっていない大きな変形をするオブジェクトに対しても高精度なスキニング分解を可能にする。また、あらかじめ設定されているボーンを用いてＳＳＤＲを行う機能を導入することで、ブレンドシェイプへの応用も可能にする。
【００１５】
また、本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムは、ウェイトマップの計算量を削減する手法を導入することで、設定するボーンの数が増大しても計算量が爆発的に増大しないスキニング分解を達成する。具体的には、ウェイトマップの局所性を考慮し、各ボーンのウェイトマップを求める際に、オブジェクト全体のアニメーションでなく、そのボーンの近傍のみのアニメーションを用いて近似的に解を求める。これにより、ウェイトマップを算出する際に解くべき２次計画問題のシステム行列を縮小することを可能にし、設定するボーンの数が増大してもシステム行列をほぼ一定の大きさに保つことが出来る。また、ウェイトマップを求める際に、アニメーション中の全てのフレームのオブジェクトの形状を用いるのではなく、似たような形状のフレームを間引く工程を導入する。これにより、ウェイトマップを算出するための演算回数そのものを減らすことを可能とする。この２つのアプローチを組み合わせることで、ウェイトマップにおける計算時間を大幅に短縮し、ＳＳＤＲ全体の計算時間を短縮する。提案手法はＳＳＤＲの近似解を求める手法であるため、従来のＳＳＤＲと比較すると復元誤差が僅かながら大きくなってしまうが、前述のクラスタの割り当て処理の工夫と併せることで高速化と高精度化の両立を可能とする。
【図面の簡単な説明】
【００１６】
【図１】本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを実行するコンピュータシステムの構成例を示す図である。
【図２】本実施例によるスキニング分解高速化プログラムの動作を説明するための図である。
【図３】従来技術によるスキニング分解の概要を説明するための図である。
【図４】本実施例による［ボーンの剛体変換行列更新工程］に用いる演算式を説明するための図である。
【図５】本実施例による［クラスタ割り当て処理工程］の原理を説明するための図である。
【図６】クラスタの割り当ての際に用いるコスト関数の演算式を説明するための図である。
【図７】本実施例による［ウェイトマップ更新工程］において解くべき２次計画問題を説明するための図である。
【図８】本実施例による［システム行列縮小処理工程］による計算量低減工程原理を説明するための図である。
【図９】本実施例による［システム行列縮小処理工程］によるシステム行列の変化を説明するための図である。
【図１０】本実施例による［システム行列縮小処理工程］における処理時間短縮効果を説明するための図である。
【図１１】本実施例による［システム行列縮小処理工程］における誤差の変化を説明するための図である。
【図１２】本実施例による［演算回数低減処理工程］の原理を説明するための図である。
【図１３】本実施例による［演算回数低減処理工程］に用いる演算式及び結果を説明するための図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施例によるウェイトマップの局所性を考慮したスキニング分解高速化方法を適用したスキニング分解高速化プログラムの詳細を図面を参照して説明する。
【００１８】
［構成］
本実施例による本発明によるスキニング分解高速化方法を適用したスキニング分解高速化プログラムを実行するコンピュータシステムのハードウェア構成は、図１に示す如く、本実施例によるスキニング分解高速化プログラム及びＯＳ並びに各種データを記憶するための記憶手段であるメモリ１７と、操作者が操作するキーボード等の入力手段である入力部１９と、３Ｄアニメーション等の画像データを表示する表示部１８と、静止状態オブジェクトに対してオブジェクトを操作するためのコントロールポイントと呼ばれるボーンを設定するクラスタの割り当て処理部１２と、該クラスタの割り当て処理部１２によってボーンを設定した複数のクラスタに対して近傍するボーンのクラスタみを集合するクラスタリングを行うシステム行列縮小処理部１３と、該システム行列縮小処理部１３によってクラスタリングを行ったアニメーション中のオブジェクトの内、繰り返し動作及び静止状態のオブジェクトに対するウェイトマップ更新演算回数を制限する間伐を実行する演算回数低減処理部１４と、該システム行列縮小処理部１３と該演算回数低減処理部１４によって計算量が削減された静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新処理部１６と、該ウェイトマップ更新処理部１６によって更新されたウェイトマップに対してアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新処理部１５と、頂点ベースアニメーション情報を格納する頂点ベースアニメーション情報データベース（ＤＢ）１０と、スキンアニメーション情報を格納するスキンアニメーション情報データベース（ＤＢ）１１と、前記各部位を制御するＣＰＵ２０とを備える。
【００１９】
本実施例によるスキニング分解高速化プログラムを実行するコンピュータシステムは、後述する処理を実行することによって、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに高精度・高速に変換するスキニング分解を実行する。
【００２０】
なお図１に示した構成例は一例であり、クラスタの割り当て処理部１２等の処理部の動作をメモリ１７に格納したプログラムによって実行するように構成することや、他の周辺機器等を接続するように構成しても良い。
［スキニング分解方法の説明］
【００２１】
提案手法は［クラスタの割り当て処理］、［システム行列縮小処理］、［演算回数低減処理］からなる。提案手法はＳＳＤＲの初期化工程の拡張であり、従来のフレームワークに容易に組み込むことが出来る。初期化工程以外の処理については、図４に示すＢｉｎｈ  Ｈｕｙ及びＬｅ  Ｚｈｉｇａｎｇ  Ｄｅｎｇによる「Ｓｍｏｏｔｈ  Ｓｋｉｎｎｉｎｇ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ  ｗｉｔｈ  Ｒｉｇｉｄ  Ｂｏｎｅｓ」（ｈｔｔｐ：／／ｇｒａｐｈｉｃｓ．ｃｓ．ｕｈ．ｅｄｕ／ｂｌｅ／ｐａｐｅｒｓ／２０１２ｓａ−ｓｓｄｒ／２０１２＿ＳＡ＿ＳＳＤＲ＿ｐｒｅｐｒｉｎｔ．ｐｄｆ）の手法をそのまま適用する。
［クラスタの割り当て処理］
【００２２】
まず、従来によるスキニング分解は、可動部分が骨格や関節により定まっているオブジェクトである「馬」の場合、図５（ａ）に示す如く、この「馬」の全体を１つのクラスタ（静止状態のオブジェクトを構成する複数の頂点をひとかたまりの単位）とみなし、クラスタ内で最もコスト関数の値が大きい部分（図中の○部分）に新しいクラスタを割り当て、以下同様に各クラスタ内で最もコスト関数の値が大きい部分に新しいクラスタを割り当てる作業を繰り返し行っていた。この従来手法の場合、既にコスト関数の値が十分小さく良くクラスタリングされている部分にも新たにクラスタが割り当てられ、無駄なクラスタが生じる課題と、クラスタの数は２の累乗の数で変化していくため、ユーザが好みのクラスタの数を設定できないという課題がある。
【００２３】
なお、本出願で述べるクラスタリング（ｃｌｕｓｔｅｒｉｎｇ）は２つの意味で用いている。「クラスタの割り当て処理」では、似たような動きをする頂点群をひとまとめにした集合のことであり、具体的には初期化工程において、同じ剛体変換行列が与えられる頂点の集合のことを意味する。［システム行列縮小処理］では、あるクラスタとそのクラスタから第２隣接以内に存在するクラスタの集合を意味する（クラスタのクラスタリング）。コスト関数については後述する。
【００２４】
このため本発明の［クラスタの割り当て処理］においては、図５（ｂ）に示す如く、全てのクラスタに新たなクラスタを割り当てていくのではなく、コスト関数の値が大きいクラスタ（例えば、コスト関数の値が全体のクラスタの上位ｎ分の１以上の部分、図示例では２以上の部分、図中の○部分）にのみ新たなクラスタを割り当てる手法を採用する。即ち、本発明は、はじめは全体を１つのクラスタとみなし、コスト関数の値が上位ｎ分の１のクラスタに新たなクラスタを割り当てていき、クラスタの数が（ユーザが指定した値）×（ｎ／ｎ＋１）に達したら１つずつ割り当てる。これにより、本発明は、クラスタを割り当てるべきところにクラスタを割り当てることができ、最終的な復元誤差も減少させることができる。例えば、オブジェクトが馬の場合、従来手法ではボーン（図中の○印）が揺れにより稼働量が大きい尻尾や脚の部分に集中するのに対して、本発明では一部に集中せず、稼働する部分全体にボーンを配置することができる。
【００２５】
なお、コスト関数とは、Ｂｉｎｈ  Ｈｕｙ  Ｌｅ  及びＺｈｉｇａｎｇ  Ｄｅｎｇが「Ｒｏｂｕｓｔ  ａｎｄ  Ａｃｃｕｒａｔｅ  Ｓｋｅｌｅｔａｌ  Ｒｉｇｇｉｎｇ  ｆｒｏｍ  Ｍｅｓｈ  Ｓｅｑｕｅｎｃｅｓ」（ＵＲＬ：ｈｔｔｐ：／／ｇｒａｐｈｉｃｓ．ｃｓ．ｕｈ．ｅｄｕ／ｂｌｅ／ｐａｐｅｒｓ／２０１４ｓ−ｓｋｅ／ｓｋｅｌｅｔｏｎ−ｄｒａｆｔ．ｐｄｆ）の第３頁「Ｃｌｕｓｔｅｒ  ｓｐｌｉｔｔｉｎｇ」の（１ａ）（１ｂ）として図６に示す演算式であり、本発明ではこのコスト関数をそのまま用いる。このコスト関数は、クラスタ内の頂点がどの程度ボーンの動きに追従しているかを表す関数である。ある頂点のコスト関数の値は、スキニング分解によって算出されたパラメータを用いて再構築した形状と例示データの誤差をフレームごとに足し合わせた値と、初期形状においてその頂点が属するクラスタの重心とその頂点の距離の積として求められる。このコスト関数の値が大きいほど、頂点はそれが属するクラスタとは異なるふるまいをする。そこで本発明においては各クラスタ内でコスト関数の値が最大となる頂点を新たなクラスタを割り当てる箇所の候補とする。
【００２６】
前記［クラスタの割り当て処理］は、可動部分が骨格等によりにより定まっているオブジェクトに対するものである。可動部分が定まっていないオブジェクト、例えば風に揺れる布等のオブジェクトの場合、柔らかいオブジェクトをスキンベースのアニメーションに変換する関連研究として下記ＵＲＬに掲載されたＫａｖａｎらの研究（以下、ＳＡＤ：Ｓｋｉｎｎｉｎｇ  ａｒｂｉｔｒａｒｙ  ｄｅｆｏｒｍａｔｉｏｎｓ）があり、このＫａｖａｎらはｆａｒｔｈｅｓｔ  ｐｏｉｎｔ  ｓａｍｐｌｉｎｇ（以下、最遠点サンプリング法という。）を用いてボーンの位置を決定した後、ウェイトマップを設定し、ｄｕａｌ  ｑｕａｔｅｒｎｉｏｎの考え方に基づき、スキニング分解を行う。本発明では、可動部分が定まっていないオブジェクトに対しては、最遠点サンプリング法を用いてボーンの位置を決定した後、ＳＳＤＲによりウェイトマップとボーンの剛体変換行列を求めることによって、ＳＡＤやＳＳＤＲよりも高精度にやわらかい物体をスキニングベースのアニメーションに変換する。
【００２７】
＜ＵＲＬ＞
ｈｔｔｐ：／／ｗｗｗ．ｔｎｔ．ｕｎｉ−ｈａｎｎｏｖｅｒ．ｄｅ／ｐａｐｅｒｓ／ｄａｔａ／８１５／８１５＿１．ｐｄｆ
【００２８】
＜Ｋａｖａｎらの研究＞
ＫＡＶＡＮ，Ｌ．，ＭＣＤＯＮＮＥＬＬ，Ｒ．，ＤＯＢＢＹＮ，Ｓ．，ＺＡＲＡ，Ｊ．，ＡＮＤ  Ｏ’ＳＵＬＬＩＶＡＮ，Ｃ．２００７．Ｓｋｉｎｎｉｎｇ  ａｒｂｉｔｒａｒｙ  ｄｅｆｏｒｍａｔｉｏｎｓ．  Ｉｎ  Ｉ３Ｄ’０７：  Ｐｒｏｃ．  ｏｆ  Ｓｙｍｐ．  ｏｎ  Ｉｎｔｅｒａｃｔｉｖｅ  ３Ｄ  Ｇｒａｐｈｉｃｓ  ａｎｄ  Ｇａｍｅｓ，  ５３−６０．
【００２９】
前記最遠点サンプリング法（ｆａｒｔｈｅｓｔ  ｐｏｉｎｔ  ｓａｍｐｌｉｎｇ）とは、静止ポーズのオブジェクトのあるサンプルボーンから最も近いサンプルボーンまでの最小距離が最大になるように、サンプルボーンを空間に配置する手法であり、詳細は、ＵＲＬ＜ｈｔｔｐｓ：／／ｗｗｗ．ｃｓ．ｕｔａｈ．ｅｄｕ／〜ｌａｄｉｓｌａｖ／ｋａｖａｎ０７ｓｋｉｎ．ａｒｂｉｔｒａｒｙ／ｋａｖａｎ０７ｓｋｉｎ．ａｒｂｉｔｒａｒｙ．ｐｄｆ＞に記載されている。
【００３０】
ブレンドシェイプが適用されたオブジェクトの場合、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行う。本実施例ではＡｕｔｏｄｅｓｋ  Ｍａｙａ（Ａｕｔｏｄｅｓｋは登録商標）のスムーズスキン機能を用いてウェイトマップの初期値を計算しクラスタリングを行った。オブジェクトのボーンと頂点の位置関係からウェイトマップを計算する手法は数多く提案されているため、ここでは各自好みの手法を用いることができる
【００３１】
このように本実施例による［クラスタの割り当て処理］工程においては、対象となる物体の性質に応じて適切にクラスタの割り当てを行うことによって、幅広い対象のアニメーションに対し高精度なスキニング分解を適用することを可能にする。
［システム行列縮小処理］
【００３２】
次いで、スキニング分解のウェイトマップ更新工程（Ｕｐｄａｔｅ  Ｂｏｎｅ−Ｖｅｒｔｅｘ  Ｗｅｉｇｈｔ  Ｍａｐ）における２次計画問題のシステム行列の大きさを小さくする［システム行列縮小処理］を説明する。
【００３３】
まず、従来技術によるウェイトマップ更新工程においては線形ブレンドスキニング法の演算式をスキンウェイト（重み付け）について整理した図７に示す２次計画問題を解く必要がある。この２次計画問題は、制約条件として、スキンウェイトは負にならないこと、各頂点のスキンウェイトは合計すると１になること、各頂点に影響を与えるボーンの数はＫ（一般的には４）以下であるという条件が加わる。また、この最適化問題は密なシステム行列に対して解く必要がある。
【００３４】
従来手法は、各頂点ごとに全てのボーンに対して２次計画問題を解いてスキンウェイトを算出し、次にスキンウェイトの値が大きい上位４つのボーンを取出し、それらに対して再び２次計画問題を解いて最終的なスキンウェイトを決定する。そのため、２次計画問題のシステム行列の大きさは設定したボーンの数に比例し、設定するボーンの数が大きくなると計算量が爆発的に増大する。
【００３５】
ここで、図８（ａ）左側に示す如く、人体モデルに設定された各クラスタに対して、そのクラスタがある注目頂点が属するクラスタの第ｎ近傍クラスタであることを表す値を定義することが出来る。図８（ｂ）左側に矢印で示す如く、表面頂点ａの動きは値の小さいクラスタのボーンからの影響を強く受け、値の大きいクラスタ（例えば手）のボーンからの影響はあまり受けない（ウェイトマップの局所性）。スキニングではある頂点に影響を与えるボーンの数は通常Ｋ（一般的には４）以下であるため、これら値の大きいボーンからの影響は無視することが出来る。
【００３６】
そこで、本発明においてはオブジェクトの各頂点はそこから遠いところにあるボーンの影響は受けないという仮定のもと、スキンウェイトを算出する手法を提案する。手法は［クラスタの割り当て処理］のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第１工程と、スキンウェイトを求める頂点が属しているクラスタ番号を取得する第２工程と、該第２工程によりクラスタ番号を取得したクラスタとそのクラスタの第２近傍以内にあるボーンを取得する第３工程と（クラスタのクラスタリング）と、該第３工程により取得したボーンのみを対象としてスキンウェイトを算出する第４工程と、該第４工程で算出したスキンウェイトのうち値が大きい上位４つのボーンを取出しそれらに対して再び２次計画問題を解き最終的なスキンウェイトを決定する第５工程からなる。
【００３７】
このクラスタのクラスタリングによって、図８（ｂ）左側に示す如く、表面頂点ａに対して全てのボーンに対してウェイト演算を行っていた従来手法に対し、図８（ｂ）右側に示す如く、表面頂点ａが属するクラスタの第２隣接以内のクラスタのボーンだけに演算対象を制限する。これにより、２次計画問題のシステム行列の大きさを縮小し、設定するボーンの数の依らず一定の大きさに保つことが可能になる。
【００３８】
このクラスタのクラスタリングによる効果を次に説明する。本クラスタのクラスタリングによれば、システム行列の要素数は、図９（ｂ）左側に示す如く、従来手法ではシステム行列はボーンの数×ボーンの数の大きさであったものを、図９（ｂ）右側に示す如く各頂点の第２近傍以内のボーンの数×第２近傍以内のボーンの数とすることができ、システム行列の大きさを小さくすることができる（［システム行列縮小処理］）。
【００３９】
この［システム行列縮小処理］によって本発明は処理時間を短縮することができ、例えば、オブジェクトが変位の大きい布の場合、図１０（ａ）に示す如く、図右方に示した従来手法ではボーン数が２０以上になると急激にウェイト演算時間（ウェイトマップ更新処理演算時間）が上昇するのに対し、本発明では図左方に示す如くボーン数が２０以上になってもウェイト演算時間の増加を抑えることができ、これは図１０（ｂ）に示した馬に対するウェイト演算時間及び図１０（ｃ）に示した人物顔に対するウェイト演算時間に対しても同様である。
【００４０】
また、この［システム行列縮小処理］によれば、ウェイトマップ更新後の復元誤差の増加も抑えることができ、例えば、オブジェクトが変位の大きい布の場合、図１１（ａ）に示す如く、図右方に示した従来手法と図左方に示した本発明と比べても復元誤差が増加せず、これは図１１（ｂ）に示した馬に対する復元誤差及び図１１（ｃ）に示した復元誤差においても同様である。なお、この工程単独で従来手法よりも精度が高くものではないが、近似的に解を求めても復元誤差はほとんど増加せず、クラスタの割り当て処理の工夫とあわせると従来手法と比較して精度が向上する。
［演算回数低減処理］
【００４１】
次に、本発明は、［システム行列縮小処理］に続いて、２次計画問題を解く回数を低減するための［演算回数低減処理］を採用する。この［演算回数低減処理］は、アニメーション中にはオブジェクトが繰り返し動作をしたり静止しているシーンが存在することに着目し、これら繰り返し動作及び静止状態のキーフレームに対しては１度だけウェイトマップ更新演算を行うことによって演算回数を低減する（間伐処理）。例えば、図１２（ａ）に示す馬が走行するアニメーションにおいては、馬の走行姿勢が類似したフレームが存在することや、図１２（ｂ）に示す洋服がなびく形状が類似したフレームが存在する点に着目し、これら繰り返し動作及び静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象として選択する。
【００４２】
この間伐処理を行うために本発明は、図１３（ａ）に示す如く、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、例えば図１３（ｂ）左端に示す馬の首部分のボーンｊ１に対して右側に示す時刻ｔのレスト（静止）ポーズからｔ＝ｔ１への変換を
Ｒｊ１ｔ１、ｔ＝ｔ２への変換を
Ｒｊ１ｔ２としたとき、
Ｒｊ１ｔ１とＲｊ１ｔ２との差の
フロベニウスノルムの値が所定の閾値以下の場合に２つの姿勢が似ていると評価し、この似ている姿勢のキーフレームに対して１度だけウェイトマップ更新演算対象として選択する。
【００４３】
この間伐処理によって図１３（ｃ）に示す如く、例えば馬動作のウェイトマップ更新演算対象となるキーフレーム数４８をキーフレーム数１１に低減することができる。
［動作］
【００４４】
次に本実施形態によるスキニング分解高速化方法を採用したスキニング分解高速化プログラムの動作を説明する。
本実施例によるスキニング分解高速化プログラムは、図１に示すメモリ１７に格納され、ＣＰＵ２０が、頂点ベースアニメーション情報をスキンアニメーション情報にスキニング分解するものであって、図２に示す如く、次に述べる各ステップにより初期化工程とスキニング分解工程を実行する。
【００４５】
前記初期化工程は、次の各ステップにより実行される。
（１）ステップＳ２０１：
頂点ベースアニメーション情報ＤＢ１０から処理対象の頂点ベースアニメーション情報をメモリに読み込むステップ。
（２）ステップＳ２１０：  
前記ステップＳ２０１により読み込んだ頂点ベースアニメーション情報の静止オブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］のステップ。
【００４６】
このステップＳ２１０は次のステップにより成る。
（３）ステップＳ２１１：
オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているか否かを判定するステップ。
（４）ステップＳ２１２：
前記ステップＳ２１１によりオブジェクトにブレンドシェイプが適用されていないと判定したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるか否かを判定するステップ。
（５）ステップＳ２１３：
前記ステップＳ２１２により可動部分が骨格等により定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていくステップ。ただし、はじめはオブジェクト全体を１つのクラスタとする。
（６）ステップＳ２１４：
前記ステップＳ２１２において可動部分が定まっていない大きな変形をするオブジェクト（布等）と判定したとき、最遠点サンプリング法（Ｆａｒｔｈｅｓｔ  Ｐｏｉｎｔ  Ｓａｍｐｌｉｎｇ）を用いてボーンの位置を決定した結果をもとにクラスタリングを行うステップ。
（７）ステップＳ２１５：
前記ステップＳ２１１においてオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行うステップ。
【００４７】
前記ステップＳ２１３値ステップＳ２１４、ステップＳ２１５に続いて本実施例による初期化工程は次のステップを実行する。
（８）ステップＳ２２０：
前記ステップＳ２１０により設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］のステップ。
（９）ステップＳ２３０：
前記ステップＳ２１０により設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］のステップ。
【００４８】
前記初期化工程に続いて次のスキニング分解工程を実行する。
（１０）ステップＳ２４０：
前記ステップＳ２３０によりウェイトマップ更新演算対象として選択したアニメーション中のオブジェクトのウェイトマップ更新を行うウェイトマップ更新工程のステップ。
（１１）ステップＳ２５０：
前記ステップＳ２４０によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程のステップ。
【００４９】
（１２）ステップＳ２６０：  
前記ステップＳ２５０に続いて、ユーザが設定した回数だけスキニング分解処理を反復して処理を行ったか否かを判定し、ユーザが設定した回数の処理を行っていないと判定したとき、前記該ウェイトマップ更新工程のステップＳ２２０に戻るステップ。
（１３）ステップＳ２７０：
前記ステップＳ２６０によりユーザが設定した回数だけスキニング分解処理を反復して処理を行ったと判定したとき、スキンアニメーション情報をスキンアニメーション情報ＤＢ１１に出力するステップ。
【００５０】
なお、本例においては、ステップＳ２１２における可動部分が骨格等によりにより定まっているオブジェクトか可動部分が定まっていない大きな変形をするオブジェクトかの判定は、オペレータが設定して良いし、オブジェクトの外的形状や輪郭によるパターンマッチング等によりＣＰＵが判定しても良い。
【００５１】
また、ステップＳ２１０におけるオブジェクトを操作するためのボーンの設定をオペレータ操作により行っても良い。
【００５２】
さらに、前記ステップＳ２２０では、スキンウェイトの更新演算において第２隣接以内にあるボーンを２次計画問題の計算の対象とする例を説明したが、本発明はこれに限られるものではなく、第ｎ隣接以内にあるボーン（ｎは整数）を２次計画問題の計算の対象とすることや、単純に距離の近いボーンを２次計画問題の計算の対象としても良い。
【符号の説明】
【００５３】
１０  頂点ベースアニメーション情報データベース（ＤＢ）、
１１  スキンアニメーション情報データベース（ＤＢ）、
１２  初期化処理部、１４  間伐処理部、１５  骨格変換更新処理部、
１６  ウェイトマップ更新処理部、１７  メモリ、１８  表示部、
１９  入力部、２０  ＣＰＵ
【図１】
2019159348.tif 000003
【図２】
2019159348.tif 000004
【図３】
2019159348.tif 000005
【図４】
2019159348.tif 000006
【図５】
2019159348.tif 000007
【図６】
2019159348.tif 000008
【図７】
2019159348.tif 000009
【図８】
2019159348.tif 000010
【図９】
2019159348.tif 000011
【図１０】
2019159348.tif 000012
【図１１】
2019159348.tif 000013
【図１２】
2019159348.tif 000014
【図１３】
2019159348.tif 000015
【手続補正書】
【提出日】平成31年1月18日(2019.1.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法であって、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけ２次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項２】
前記［クラスタの割り当て処理工程］において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第１工程と、
該第１工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーンをもとにクラスタリングを行う第２工程と、
該第２工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第３工程と、
該第３工程により可動部分が骨格等により定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第４工程と、
該第３工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第５工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項３】
前記［システム行列縮小処理工程］において、
前記コンピュータに、
前記［クラスタの割り当て処理］のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第６工程と、
スキンウェイトを求める頂点が属しているクラスタ番号を取得する第７工程と、
該第７工程によりクラスタ番号を取得したクラスタとそのクラスタの第２近傍以内にあるボーンを取得する第８工程と、
該第８工程により取得したボーンのみを対象としてスキンウェイトを算出する第９工程と、
該第９工程で算出したスキンウェイトのうち値が大きい上位４つのボーンを取出しそれらに対して２次計画問題を解き最終的なスキンウェイトを決定する第１０工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項４】
前記［演算回数低減処理］において、
前記コンピュータに、
前記［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第１１工程と、
該第１１工程で導入した評価関数式を用いて任意の２つのキーフレーム間の評価関数式の値を算出する第１２工程と
該第１２工程で算出した評価関数式の値が閾値以下であるかを判断する第１３工程と、
該第１３工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第１４工程と、
を実行させる請求項１に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項５】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化プログラムであって、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけ２次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるためのウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項６】
前記［クラスタの割り当て処理工程］において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第１工程と、
該第１工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーンをもとにクラスタリングを行う第２工程と、
該第２工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等により定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第３工程と、
該第３工程により可動部分が骨格等によりにより定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第４工程と、
該第３工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第５工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項７】
前記［システム行列縮小処理工程］において、
前記コンピュータに、
前記［クラスタの割り当て処理］のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第６工程と、
スキンウェイトを求める頂点が属しているクラスタ番号を取得する第７工程と、
該第７工程によりクラスタ番号を取得したクラスタとそのクラスタの第２近傍以内にあるボーンを取得する第８工程と、
該第８工程により取得したボーンのみを対象としてスキンウェイトを算出する第９工程と、
該第９工程で算出したスキンウェイトのうち値が大きい上位４つのボーンを取出しそれらに対して２次計画問題を解き最終的なスキンウェイトを決定する第１０工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項８】
前記［演算回数低減処理］において、
前記コンピュータに、
前記［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第１１工程と、
該第１１工程で導入した評価関数式を用いて任意の２つのキーフレーム間の評価関数式の値を算出する第１２工程と
該第１２工程で算出した評価関数式の値が閾値以下であるかを判断する第１３工程と、
該第１３工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第１４工程と、
を実行させるための請求項５に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
前記目的を達成するため本発明は、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法およびプログラムにおいて、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる［クラスタの割り当て処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における２次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ［システム行列縮小処理工程］と、
該［クラスタの割り当て処理工程］によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては１度だけ２次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する［演算回数低減処理］とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させることを主な特徴とする。  特に、本発明は、第１の目的を達成するため、初期化工程の［クラスタの割り当て処理工程］において対象となるオブジェクトに応じて３通りの手法を使い分ける。  （１）動物など可動部分が骨格等によりにより定まっているオブジェクトに対しては、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく。ただし、はじめはオブジェクト全体を１つのクラスタとする。  （２）布など可動部分が定まっていない大きな変形をするオブジェクトに対しては、最遠点サンプリング法（Ｆａｒｔｈｅｓｔ  Ｐｏｉｎｔ  Ｓａｍｐｌｉｎｇ）を用いてボーンの位置を決定した結果をもとにクラスタリングを行う。  （３）ブレンドシェイプへの応用では、あらかじめ設定されているボーン（アーティストが設定したもの等）をもとにクラスタリングを行う。  また、本発明は、第２の目的を達成するため、初期化工程において、ウェイトマップの計算量を削減する手法を導入する。このウェイトマップ計算量削減手法は、各ボーンのウェイトマップを求める際に、オブジェクト全体のアニメーションでなく、そのボーンの近傍のみのアニメーションを用いて近似的に解を求める［システム行列縮小工程］と、ウェイトマップを求める際に、全てのフレームのオブジェクトの形状を用いるのではなく、似たような形状のフレームを間引く［演算回数低減処理工程］からなる。