特許第6487083号(P6487083)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特許6487083ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム
<>
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000002
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000003
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000004
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000005
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000006
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000007
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000008
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000009
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000010
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000011
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000012
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000013
  • 特許6487083-ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6487083
(24)【登録日】2019年3月1日
(45)【発行日】2019年3月20日
(54)【発明の名称】ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム
(51)【国際特許分類】
   G06T 13/40 20110101AFI20190311BHJP
【FI】
   G06T13/40
【請求項の数】8
【全頁数】18
(21)【出願番号】特願2018-40319(P2018-40319)
(22)【出願日】2018年3月7日
【審査請求日】2018年3月7日
(73)【特許権者】
【識別番号】308033283
【氏名又は名称】株式会社スクウェア・エニックス
(74)【代理人】
【識別番号】100160370
【弁理士】
【氏名又は名称】佐々木 鈴
(72)【発明者】
【氏名】成田 史弥
【審査官】 真木 健彦
(56)【参考文献】
【文献】 特開2004−334662(JP,A)
【文献】 特開2011−065492(JP,A)
【文献】 特開2016−110652(JP,A)
【文献】 向井 智彦,線形ブレンドスキニングのための例示ベース補助骨リグ構築,情報処理学会 論文誌 Vol.56 No.11,日本,情報処理学会,2015年11月15日,Vol.56 No.11 (Nov. 2015),P.2141-2150,ISSN 1882-7764
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/40
G06T 15/00 − 15/87
G06T 19/00
(57)【特許請求の範囲】
【請求項1】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法であって、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる[クラスタの割り当て処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における2次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ[システム行列縮小処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては1度だけ2次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する[演算回数低減処理]とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項2】
前記[クラスタの割り当て処理工程]において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第1工程と、
該第1工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーンをもとにクラスタリングを行う第2工程と、
該第2工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第3工程と、
該第3工程により可動部分が骨格等により定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第4工程と、
該第3工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第5工程と、
を実行させる請求項1に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項3】
前記[システム行列縮小処理工程]において、
前記コンピュータに、
前記[クラスタの割り当て処理]のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第6工程と、
スキンウェイトを求める頂点が属しているクラスタ番号を取得する第7工程と、
該第7工程によりクラスタ番号を取得したクラスタとそのクラスタの第2近傍以内にあるボーンを取得する第8工程と、
該第8工程により取得したボーンのみを対象としてスキンウェイトを算出する第9工程と、
該第9工程で算出したスキンウェイトのうち値が大きい上位4つのボーンを取出しそれらに対して2次計画問題を解き最終的なスキンウェイトを決定する第10工程と、
を実行させる請求項1に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項4】
前記[演算回数低減処理]において、
前記コンピュータに、
前記[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第11工程と、
該第11工程で導入した評価関数式を用いて任意の2つのキーフレーム間の評価関数式の値を算出する第12工程と
該第12工程で算出した評価関数式の値が閾値以下であるかを判断する第13工程と、
該第13工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第14工程と、
を実行させる請求項1に記載のウェイトマップの局所性を考慮したスキニング分解高速化方法。
【請求項5】
アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化プログラムであって、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる[クラスタの割り当て処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における2次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ[システム行列縮小処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては1度だけ2次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する[演算回数低減処理]とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させるためのウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項6】
前記[クラスタの割り当て処理工程]において、
前記コンピュータに、
前記オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているかを判断する第1工程と、
該第1工程によりオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーンをもとにクラスタリングを行う第2工程と、
該第2工程によりオブジェクトにブレンドシェイプが適用されていないと判断したとき、可動部分が骨格等により定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるかを判定する第3工程と、
該第3工程により可動部分が骨格等によりにより定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく第4工程と、
該第3工程により可動部分が定まっていない大きな変形をするオブジェクトと判定したとき、最遠点サンプリング法を用いてボーンの位置を決定した結果をもとにクラスタリングを行う第5工程と、
を実行させるための請求項5に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項7】
前記[システム行列縮小処理工程]において、
前記コンピュータに、
前記[クラスタの割り当て処理]のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第6工程と、
スキンウェイトを求める頂点が属しているクラスタ番号を取得する第7工程と、
該第7工程によりクラスタ番号を取得したクラスタとそのクラスタの第2近傍以内にあるボーンを取得する第8工程と、
該第8工程により取得したボーンのみを対象としてスキンウェイトを算出する第9工程と、
該第9工程で算出したスキンウェイトのうち値が大きい上位4つのボーンを取出しそれらに対して2次計画問題を解き最終的なスキンウェイトを決定する第10工程と、
を実行させるための請求項5に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【請求項8】
前記[演算回数低減処理]において、
前記コンピュータに、
前記[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入する第11工程と、
該第11工程で導入した評価関数式を用いて任意の2つのキーフレーム間の評価関数式の値を算出する第12工程と
該第12工程で算出した評価関数式の値が閾値以下であるかを判断する第13工程と、
該第13工程で評価関数式の値が閾値以下であると判断したとき、いずれか片方のキーフレームのみをウェイトマップ更新演算対象とする第14工程と、
を実行させるための請求項5に記載のウェイトマップの局所性を考慮したスキニング分解高速化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、頂点ベースで作成された3次元オブジェクト(人物・動物・物体他)のアニメーションを3Dスキンアニメーションに変換するスキニング分解技術においてウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムに関する。
【背景技術】
【0002】
スキニング(処理)とは、3次元のオブジェクトを変形させる手法の1つである。静止状態のオブジェクトに対し、オブジェクトを操作するためのボーン(コントロールポイント)及びボーンが各頂点にどれくらいの影響を及ぼすかを示すウェイトマップを設定する。これにより、ボーンの姿勢を操作することで物体全体を変形させることができる。近年の実時間アプリケーションにおけるCGキャラクタのスキニング処理には、線形ブレンドスキニング法(Linear Blend Skinning 、LBS)が広く利用されている。さらに、補助骨と呼ばれる冗長なボーンを導入することによってスキンアニメーションの品質を改善するとともに,皮膚や筋肉の隆起などの複雑なスキン変形を表現する技法が実用化されている。一般的にボーンの数はオブジェクトの頂点数よりもずっと小さいため、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておくよりも、オブジェクトのウェイトマップと各フレームのボーンの姿勢を記憶しておく方が、メモリ消費量の観点から効率的である。また、スキニング処理は計算コストが低く、ハードウェアで高速化することが出来る。しかしながら、スキニング処理を行う為にはオブジェクトにボーンとそれに対応するウェイトマップ、各フレームにおけるボーンの姿勢を適切に設定する必要があり、アーティストにとって大きな負担となっている。
【0003】
そこで、頂点ベースアニメーションをよりメモリ消費量が少なく演算コストの低いスキンアニメーションへ自動で変換する技術には高い需要がある。頂点ベースアニメーションをスキンアニメーションへ変換する技術は、スキニング分解と呼ばれる。このスキニング分解の代表的なものとしては、JamesらのSkinning Mesh Animations、HaslerらのLearning Skeletons for Shape and Pose、LiらのSmooth Skinning Decomposition with Rigid Bones[SSDR]などがあり、SSDRは正確性と応用性の観点から,現在最も注目されている手法の一つである。
【0004】
SSDRによるスキニング分解は線形ブレンドスキニング法の逆問題を解き、オブジェクトの例示データの集合を入力として、各例示データをもっともよく近似するようなスキニングのパラメータ(各ボーンの姿勢、ウェイトマップ)を出力する。具体的には、オブジェクトのアニメーションの1フレームごとの物体の形状を入力とし、それをもっともよく近似するような各ボーンの剛体変換行列を1フレームごとに算出する。ただしウェイトマップはアニメーション全体で1つのパラメータを算出する。SSDRは、図3(a)に示す如く、クラスタリング(Clustering)の初期化工程と、ボーンの剛体変換行列の更新(Update Bone Transformations)工程と、ウェイトマップの更新(Update Bone Transformations)工程の3工程からなる。まず、オブジェクトの例示データの似たような動きをしている部分をクラスタリングしてボーンの剛体変換行列の初期値を算出する。次にBlock Coordinate Descent法を用いてウェイトマップの更新とボーンの剛体変換行列の更新を繰り返すことで最終的なスキニングのパラメータを算出する。
【0005】
また、3次元のオブジェクトを変形させる別の手法としてブレンドシェイプがある。これは頂点数や頂点間の接続情報が同じで、形状が異なるモデルを複数用意しておき、それぞれの形をブレンドすることで新しい形状をつくり出す手法である。特にフェイシャル(顔の表情)のアニメーションを作成する際に広く用いられている。しかしながらブレンドシェイプはスキニングと比較し、(実時間で動作させるには)多くの計算量を要するという課題があった。そこで、ブレンドシェイプで作成したアニメーションをスキンアニメーションに変換する技術の需要も増大している。
【0006】
なお、従来のスキニング処理が記載された文献としては、下記の特許文献1及び2が挙げられ、SSDR及びスキニング分解が記載された非特許文献としては下記の非特許文献1が挙げられる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2002−63595号公報
【特許文献2】特開2004−334662号公報
【非特許文献】
【0008】
【非特許文献1】Binh Huly Le 、Zhigang Deng著「Smooth Skinning Decomposition with Rigid Bones」、ヒーストン大学(University of Houston)、2012年、[平成28年12月25日検索]、インターネット<HTTP://GRAPHICS.CS.UH.EDU/BLE/PAPERS/2012SA−SSDR/2012_SA_SSDR_PREPRINT.PDF
【発明の概要】
【発明が解決しようとする課題】
【0009】
前述したSSDRによるスキニング分解は可動部分が骨格等によりにより定まっているオブジェクトに対し誤差の少ないスキニングのパラメータを算出することを可能とするが、可動部分が定まっていない大きな変形をするオブジェクト(例えば布等)に対しては精度が落ちてしまうという問題がある。さらに、SSDRはブレンドシェイプで作成したアニメーションは対象としていない。
【0010】
また、前述したSSDRによるスキニング分解は設定するボーンの数が増大するにつれて計算量が指数関数的に増大するという問題がある。これはウェイトマップを算出する際に解く2次計画問題のシステム行列の大きさが設定するボーンの数に比例しているためである。特に変形の大きな物体(布や衣服等)のアニメーションを精度高くスキニングで近似するというような、多数のボーンを設定する必要のある場合にこの問題が顕著に表れる。
【0011】
本発明の第1の目的は、変形の大きな物体のアニメーションやブレンドシェイプにも適用可能なウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを提供することである。
【0012】
本発明の第2の目的は、設定するボーンの数が増大しても計算量が爆発的に増大しないウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを提供することである。
【課題を解決するための手段】
【0013】
前記目的を達成するため本発明は、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに、コンピュータを用いて自動的に変換するウェイトマップの局所性を考慮したスキニング分解高速化方法およびプログラムにおいて、
該コンピュータに、
静止状態のオブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる[クラスタの割り当て処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における2次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ[システム行列縮小処理工程]と、
該[クラスタの割り当て処理工程]によって設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては1度だけ2次計画問題を解くウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する[演算回数低減処理]とを実行させる初期化工程の後、
該初期化工程により静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新工程と、
該ウェイトマップ更新工程によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程と、
を繰り返して実行させることを主な特徴とする。 特に、本発明は、第1の目的を達成するため、初期化工程の[クラスタの割り当て処理工程]において対象となるオブジェクトに応じて3通りの手法を使い分ける。 (1)動物など可動部分が骨格等によりにより定まっているオブジェクトに対しては、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていく。ただし、はじめはオブジェクト全体を1つのクラスタとする。 (2)布など可動部分が定まっていない大きな変形をするオブジェクトに対しては、最遠点サンプリング法(Farthest Point Sampling)を用いてボーンの位置を決定した結果をもとにクラスタリングを行う。 (3)ブレンドシェイプへの応用では、あらかじめ設定されているボーン(アーティストが設定したもの等)をもとにクラスタリングを行う。 また、本発明は、第2の目的を達成するため、初期化工程において、ウェイトマップの計算量を削減する手法を導入する。このウェイトマップ計算量削減手法は、各ボーンのウェイトマップを求める際に、オブジェクト全体のアニメーションでなく、そのボーンの近傍のみのアニメーションを用いて近似的に解を求める[システム行列縮小工程]と、ウェイトマップを求める際に、全てのフレームのオブジェクトの形状を用いるのではなく、似たような形状のフレームを間引く[演算回数低減処理工程]からなる。
【発明の効果】
【0014】
本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムは、初期化工程において対象となるオブジェクトに応じて3通りの手法を使い分けることで、幅広い対象のアニメーションに対し高精度なスキニング分解を適用することを可能にする。具体的には、クラスタの割り当てを工夫することにより、動物など可動部分が骨格等によりにより定まっているオブジェクトに対してはSSDRよりも高精度なスキニング分解を可能にする。最遠点サンプリング法(Farthest Point Sampling)を用いることにより、布など可動部分が定まっていない大きな変形をするオブジェクトに対しても高精度なスキニング分解を可能にする。また、あらかじめ設定されているボーンを用いてSSDRを行う機能を導入することで、ブレンドシェイプへの応用も可能にする。
【0015】
また、本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムは、ウェイトマップの計算量を削減する手法を導入することで、設定するボーンの数が増大しても計算量が爆発的に増大しないスキニング分解を達成する。具体的には、ウェイトマップの局所性を考慮し、各ボーンのウェイトマップを求める際に、オブジェクト全体のアニメーションでなく、そのボーンの近傍のみのアニメーションを用いて近似的に解を求める。これにより、ウェイトマップを算出する際に解くべき2次計画問題のシステム行列を縮小することを可能にし、設定するボーンの数が増大してもシステム行列をほぼ一定の大きさに保つことが出来る。また、ウェイトマップを求める際に、アニメーション中の全てのフレームのオブジェクトの形状を用いるのではなく、似たような形状のフレームを間引く工程を導入する。これにより、ウェイトマップを算出するための演算回数そのものを減らすことを可能とする。この2つのアプローチを組み合わせることで、ウェイトマップにおける計算時間を大幅に短縮し、SSDR全体の計算時間を短縮する。提案手法はSSDRの近似解を求める手法であるため、従来のSSDRと比較すると復元誤差が僅かながら大きくなってしまうが、前述のクラスタの割り当て処理の工夫と併せることで高速化と高精度化の両立を可能とする。
【図面の簡単な説明】
【0016】
図1】本発明によるウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラムを実行するコンピュータシステムの構成例を示す図である。
図2】本実施例によるスキニング分解高速化プログラムの動作を説明するための図である。
図3】従来技術によるスキニング分解の概要を説明するための図である。
図4】本実施例による[ボーンの剛体変換行列更新工程]に用いる演算式を説明するための図である。
図5】本実施例による[クラスタ割り当て処理工程]の原理を説明するための図である。
図6】クラスタの割り当ての際に用いるコスト関数の演算式を説明するための図である。
図7】本実施例による[ウェイトマップ更新工程]において解くべき2次計画問題を説明するための図である。
図8】本実施例による[システム行列縮小処理工程]による計算量低減工程原理を説明するための図である。
図9】本実施例による[システム行列縮小処理工程]によるシステム行列の変化を説明するための図である。
図10】本実施例による[システム行列縮小処理工程]における処理時間短縮効果を説明するための図である。
図11】本実施例による[システム行列縮小処理工程]における誤差の変化を説明するための図である。
図12】本実施例による[演算回数低減処理工程]の原理を説明するための図である。
図13】本実施例による[演算回数低減処理工程]に用いる演算式及び結果を説明するための図である。
【発明を実施するための形態】
【0017】
以下、本発明の一実施例によるウェイトマップの局所性を考慮したスキニング分解高速化方法を適用したスキニング分解高速化プログラムの詳細を図面を参照して説明する。
【0018】
[構成]
本実施例による本発明によるスキニング分解高速化方法を適用したスキニング分解高速化プログラムを実行するコンピュータシステムのハードウェア構成は、図1に示す如く、本実施例によるスキニング分解高速化プログラム及びOS並びに各種データを記憶するための記憶手段であるメモリ17と、操作者が操作するキーボード等の入力手段である入力部19と、3Dアニメーション等の画像データを表示する表示部18と、静止状態オブジェクトに対してオブジェクトを操作するためのコントロールポイントと呼ばれるボーンを設定するクラスタの割り当て処理部12と、該クラスタの割り当て処理部12によってボーンを設定した複数のクラスタに対して近傍するボーンのクラスタみを集合するクラスタリングを行うシステム行列縮小処理部13と、該システム行列縮小処理部13によってクラスタリングを行ったアニメーション中のオブジェクトの内、繰り返し動作及び静止状態のオブジェクトに対するウェイトマップ更新演算回数を制限する間伐を実行する演算回数低減処理部14と、該システム行列縮小処理部13と該演算回数低減処理部14によって計算量が削減された静止状態オブジェクトのウェイトマップ更新を行うウェイトマップ更新処理部16と、該ウェイトマップ更新処理部16によって更新されたウェイトマップに対してアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新処理部15と、頂点ベースアニメーション情報を格納する頂点ベースアニメーション情報データベース(DB)10と、スキンアニメーション情報を格納するスキンアニメーション情報データベース(DB)11と、前記各部位を制御するCPU20とを備える。
【0019】
本実施例によるスキニング分解高速化プログラムを実行するコンピュータシステムは、後述する処理を実行することによって、アニメーションにおける全てのフレームのオブジェクトの頂点座標を記憶しておく頂点ベースアニメーションを、オブジェクトに設定したボーンの姿勢とそれに対応するウェイトマップから形状を計算するスキンアニメーションに高精度・高速に変換するスキニング分解を実行する。
【0020】
なお図1に示した構成例は一例であり、クラスタの割り当て処理部12等の処理部の動作をメモリ17に格納したプログラムによって実行するように構成することや、他の周辺機器等を接続するように構成しても良い。
[スキニング分解方法の説明]
【0021】
提案手法は[クラスタの割り当て処理]、[システム行列縮小処理]、[演算回数低減処理]からなる。提案手法はSSDRの初期化工程の拡張であり、従来のフレームワークに容易に組み込むことが出来る。初期化工程以外の処理については、図4に示すBinh Huy及びLe Zhigang Dengによる「Smooth Skinning Decomposition with Rigid Bones」(http://graphics.cs.uh.edu/ble/papers/2012sa−ssdr/2012_SA_SSDR_preprint.pdf)の手法をそのまま適用する。
[クラスタの割り当て処理]
【0022】
まず、従来によるスキニング分解は、可動部分が骨格や関節により定まっているオブジェクトである「馬」の場合、図5(a)に示す如く、この「馬」の全体を1つのクラスタ(静止状態のオブジェクトを構成する複数の頂点をひとかたまりの単位)とみなし、クラスタ内で最もコスト関数の値が大きい部分(図中の○部分)に新しいクラスタを割り当て、以下同様に各クラスタ内で最もコスト関数の値が大きい部分に新しいクラスタを割り当てる作業を繰り返し行っていた。この従来手法の場合、既にコスト関数の値が十分小さく良くクラスタリングされている部分にも新たにクラスタが割り当てられ、無駄なクラスタが生じる課題と、クラスタの数は2の累乗の数で変化していくため、ユーザが好みのクラスタの数を設定できないという課題がある。
【0023】
なお、本出願で述べるクラスタリング(clustering)は2つの意味で用いている。「クラスタの割り当て処理」では、似たような動きをする頂点群をひとまとめにした集合のことであり、具体的には初期化工程において、同じ剛体変換行列が与えられる頂点の集合のことを意味する。[システム行列縮小処理]では、あるクラスタとそのクラスタから第2隣接以内に存在するクラスタの集合を意味する(クラスタのクラスタリング)。コスト関数については後述する。
【0024】
このため本発明の[クラスタの割り当て処理]においては、図5(b)に示す如く、全てのクラスタに新たなクラスタを割り当てていくのではなく、コスト関数の値が大きいクラスタ(例えば、コスト関数の値が全体のクラスタの上位n分の1以上の部分、図示例では2以上の部分、図中の○部分)にのみ新たなクラスタを割り当てる手法を採用する。即ち、本発明は、はじめは全体を1つのクラスタとみなし、コスト関数の値が上位n分の1のクラスタに新たなクラスタを割り当てていき、クラスタの数が(ユーザが指定した値)×(n/n+1)に達したら1つずつ割り当てる。これにより、本発明は、クラスタを割り当てるべきところにクラスタを割り当てることができ、最終的な復元誤差も減少させることができる。例えば、オブジェクトが馬の場合、従来手法ではボーン(図中の○印)が揺れにより稼働量が大きい尻尾や脚の部分に集中するのに対して、本発明では一部に集中せず、稼働する部分全体にボーンを配置することができる。
【0025】
なお、コスト関数とは、Binh Huy Le 及びZhigang Dengが「Robust and Accurate Skeletal Rigging from Mesh Sequences」(URL:http://graphics.cs.uh.edu/ble/papers/2014s−ske/skeleton−draft.pdf)の第3頁「Cluster splitting」の(1a)(1b)として図6に示す演算式であり、本発明ではこのコスト関数をそのまま用いる。このコスト関数は、クラスタ内の頂点がどの程度ボーンの動きに追従しているかを表す関数である。ある頂点のコスト関数の値は、スキニング分解によって算出されたパラメータを用いて再構築した形状と例示データの誤差をフレームごとに足し合わせた値と、初期形状においてその頂点が属するクラスタの重心とその頂点の距離の積として求められる。このコスト関数の値が大きいほど、頂点はそれが属するクラスタとは異なるふるまいをする。そこで本発明においては各クラスタ内でコスト関数の値が最大となる頂点を新たなクラスタを割り当てる箇所の候補とする。
【0026】
前記[クラスタの割り当て処理]は、可動部分が骨格等によりにより定まっているオブジェクトに対するものである。可動部分が定まっていないオブジェクト、例えば風に揺れる布等のオブジェクトの場合、柔らかいオブジェクトをスキンベースのアニメーションに変換する関連研究として下記URLに掲載されたKavanらの研究(以下、SAD:Skinning arbitrary deformations)があり、このKavanらはfarthest point sampling(以下、最遠点サンプリング法という。)を用いてボーンの位置を決定した後、ウェイトマップを設定し、dual quaternionの考え方に基づき、スキニング分解を行う。本発明では、可動部分が定まっていないオブジェクトに対しては、最遠点サンプリング法を用いてボーンの位置を決定した後、SSDRによりウェイトマップとボーンの剛体変換行列を求めることによって、SADやSSDRよりも高精度にやわらかい物体をスキニングベースのアニメーションに変換する。
【0027】
<URL>
http://www.tnt.uni−hannover.de/papers/data/815/815_1.pdf
【0028】
<Kavanらの研究>
KAVAN,L.,MCDONNELL,R.,DOBBYN,S.,ZARA,J.,AND O’SULLIVAN,C.2007.Skinning arbitrary deformations. In I3D’07: Proc. of Symp. on Interactive 3D Graphics and Games, 53−60.
【0029】
前記最遠点サンプリング法(farthest point sampling)とは、静止ポーズのオブジェクトのあるサンプルボーンから最も近いサンプルボーンまでの最小距離が最大になるように、サンプルボーンを空間に配置する手法であり、詳細は、URL<https://www.cs.utah.edu/〜ladislav/kavan07skin.arbitrary/kavan07skin.arbitrary.pdf>に記載されている。
【0030】
ブレンドシェイプが適用されたオブジェクトの場合、あらかじめ設定されているボーン(アーティストが設定したもの等)をもとにクラスタリングを行う。本実施例ではAutodesk Maya(Autodeskは登録商標)のスムーズスキン機能を用いてウェイトマップの初期値を計算しクラスタリングを行った。オブジェクトのボーンと頂点の位置関係からウェイトマップを計算する手法は数多く提案されているため、ここでは各自好みの手法を用いることができる
【0031】
このように本実施例による[クラスタの割り当て処理]工程においては、対象となる物体の性質に応じて適切にクラスタの割り当てを行うことによって、幅広い対象のアニメーションに対し高精度なスキニング分解を適用することを可能にする。
[システム行列縮小処理]
【0032】
次いで、スキニング分解のウェイトマップ更新工程(Update Bone−Vertex Weight Map)における2次計画問題のシステム行列の大きさを小さくする[システム行列縮小処理]を説明する。
【0033】
まず、従来技術によるウェイトマップ更新工程においては線形ブレンドスキニング法の演算式をスキンウェイト(重み付け)について整理した図7に示す2次計画問題を解く必要がある。この2次計画問題は、制約条件として、スキンウェイトは負にならないこと、各頂点のスキンウェイトは合計すると1になること、各頂点に影響を与えるボーンの数はK(一般的には4)以下であるという条件が加わる。また、この最適化問題は密なシステム行列に対して解く必要がある。
【0034】
従来手法は、各頂点ごとに全てのボーンに対して2次計画問題を解いてスキンウェイトを算出し、次にスキンウェイトの値が大きい上位4つのボーンを取出し、それらに対して再び2次計画問題を解いて最終的なスキンウェイトを決定する。そのため、2次計画問題のシステム行列の大きさは設定したボーンの数に比例し、設定するボーンの数が大きくなると計算量が爆発的に増大する。
【0035】
ここで、図8(a)左側に示す如く、人体モデルに設定された各クラスタに対して、そのクラスタがある注目頂点が属するクラスタの第n近傍クラスタであることを表す値を定義することが出来る。図8(b)左側に矢印で示す如く、表面頂点aの動きは値の小さいクラスタのボーンからの影響を強く受け、値の大きいクラスタ(例えば手)のボーンからの影響はあまり受けない(ウェイトマップの局所性)。スキニングではある頂点に影響を与えるボーンの数は通常K(一般的には4)以下であるため、これら値の大きいボーンからの影響は無視することが出来る。
【0036】
そこで、本発明においてはオブジェクトの各頂点はそこから遠いところにあるボーンの影響は受けないという仮定のもと、スキンウェイトを算出する手法を提案する。手法は[クラスタの割り当て処理]のクラスタリングの結果を用いて各クラスタ間の隣接情報を構築する第1工程と、スキンウェイトを求める頂点が属しているクラスタ番号を取得する第2工程と、該第2工程によりクラスタ番号を取得したクラスタとそのクラスタの第2近傍以内にあるボーンを取得する第3工程と(クラスタのクラスタリング)と、該第3工程により取得したボーンのみを対象としてスキンウェイトを算出する第4工程と、該第4工程で算出したスキンウェイトのうち値が大きい上位4つのボーンを取出しそれらに対して再び2次計画問題を解き最終的なスキンウェイトを決定する第5工程からなる。
【0037】
このクラスタのクラスタリングによって、図8(b)左側に示す如く、表面頂点aに対して全てのボーンに対してウェイト演算を行っていた従来手法に対し、図8(b)右側に示す如く、表面頂点aが属するクラスタの第2隣接以内のクラスタのボーンだけに演算対象を制限する。これにより、2次計画問題のシステム行列の大きさを縮小し、設定するボーンの数の依らず一定の大きさに保つことが可能になる。
【0038】
このクラスタのクラスタリングによる効果を次に説明する。本クラスタのクラスタリングによれば、システム行列の要素数は、図9(b)左側に示す如く、従来手法ではシステム行列はボーンの数×ボーンの数の大きさであったものを、図9(b)右側に示す如く各頂点の第2近傍以内のボーンの数×第2近傍以内のボーンの数とすることができ、システム行列の大きさを小さくすることができる([システム行列縮小処理])。
【0039】
この[システム行列縮小処理]によって本発明は処理時間を短縮することができ、例えば、オブジェクトが変位の大きい布の場合、図10(a)に示す如く、図右方に示した従来手法ではボーン数が20以上になると急激にウェイト演算時間(ウェイトマップ更新処理演算時間)が上昇するのに対し、本発明では図左方に示す如くボーン数が20以上になってもウェイト演算時間の増加を抑えることができ、これは図10(b)に示した馬に対するウェイト演算時間及び図10(c)に示した人物顔に対するウェイト演算時間に対しても同様である。
【0040】
また、この[システム行列縮小処理]によれば、ウェイトマップ更新後の復元誤差の増加も抑えることができ、例えば、オブジェクトが変位の大きい布の場合、図11(a)に示す如く、図右方に示した従来手法と図左方に示した本発明と比べても復元誤差が増加せず、これは図11(b)に示した馬に対する復元誤差及び図11(c)に示した復元誤差においても同様である。なお、この工程単独で従来手法よりも精度が高くものではないが、近似的に解を求めても復元誤差はほとんど増加せず、クラスタの割り当て処理の工夫とあわせると従来手法と比較して精度が向上する。
[演算回数低減処理]
【0041】
次に、本発明は、[システム行列縮小処理]に続いて、2次計画問題を解く回数を低減するための[演算回数低減処理]を採用する。この[演算回数低減処理]は、アニメーション中にはオブジェクトが繰り返し動作をしたり静止しているシーンが存在することに着目し、これら繰り返し動作及び静止状態のキーフレームに対しては1度だけウェイトマップ更新演算を行うことによって演算回数を低減する(間伐処理)。例えば、図12(a)に示す馬が走行するアニメーションにおいては、馬の走行姿勢が類似したフレームが存在することや、図12(b)に示す洋服がなびく形状が類似したフレームが存在する点に着目し、これら繰り返し動作及び静止状態のキーフレームにおけるオブジェクトに対しては1度だけウェイトマップ更新演算対象として選択する。
【0042】
この間伐処理を行うために本発明は、図13(a)に示す如く、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、例えば図13(b)左端に示す馬の首部分のボーンj1に対して右側に示す時刻tのレスト(静止)ポーズからt=t1への変換を
j1t1、t=t2への変換を
j1t2としたとき、
j1t1とRj1t2との差の
フロベニウスノルムの値が所定の閾値以下の場合に2つの姿勢が似ていると評価し、この似ている姿勢のキーフレームに対して1度だけウェイトマップ更新演算対象として選択する。
【0043】
この間伐処理によって図13(c)に示す如く、例えば馬動作のウェイトマップ更新演算対象となるキーフレーム数48をキーフレーム数11に低減することができる。
[動作]
【0044】
次に本実施形態によるスキニング分解高速化方法を採用したスキニング分解高速化プログラムの動作を説明する。
本実施例によるスキニング分解高速化プログラムは、図1に示すメモリ17に格納され、CPU20が、頂点ベースアニメーション情報をスキンアニメーション情報にスキニング分解するものであって、図2に示す如く、次に述べる各ステップにより初期化工程とスキニング分解工程を実行する。
【0045】
前記初期化工程は、次の各ステップにより実行される。
(1)ステップS201:
頂点ベースアニメーション情報DB10から処理対象の頂点ベースアニメーション情報をメモリに読み込むステップ。
(2)ステップS210:
前記ステップS201により読み込んだ頂点ベースアニメーション情報の静止オブジェクトに対して、動物など可動部分が骨格等により定まっているオブジェクト、布など可動部分が定まっていない大きな変形をするオブジェクト、ブレンドシェイプで作成したオブジェクト、といったオブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てる[クラスタの割り当て処理工程]のステップ。
【0046】
このステップS210は次のステップにより成る。
(3)ステップS211:
オブジェクトにブレンドシェイプが適用されており、アーティストによってボーンが設定されているか否かを判定するステップ。
(4)ステップS212:
前記ステップS211によりオブジェクトにブレンドシェイプが適用されていないと判定したとき、可動部分が骨格等によりにより定まっているオブジェクトであるか、可動部分が定まっていない大きな変形をするオブジェクトであるか否かを判定するステップ。
(5)ステップS213:
前記ステップS212により可動部分が骨格等により定まっているオブジェクトと判定したとき、各クラスタごとに誤差値を計算し、誤差値が閾値以上のクラスタに新たなクラスタを割り当てていくステップ。ただし、はじめはオブジェクト全体を1つのクラスタとする。
(6)ステップS214:
前記ステップS212において可動部分が定まっていない大きな変形をするオブジェクト(布等)と判定したとき、最遠点サンプリング法(Farthest Point Sampling)を用いてボーンの位置を決定した結果をもとにクラスタリングを行うステップ。
(7)ステップS215:
前記ステップS211においてオブジェクトにブレンドシェイプが適用されていると判断したとき、あらかじめ設定されているボーン(アーティストが設定したもの等)をもとにクラスタリングを行うステップ。
【0047】
前記ステップS213値ステップS214、ステップS215に続いて本実施例による初期化工程は次のステップを実行する。
(8)ステップS220:
前記ステップS210により設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における2次計画問題のシステム行列の大きさを縮小し一定の大きさに保つ[システム行列縮小処理工程]のステップ。
(9)ステップS230:
前記ステップS210により設定したボーンのクラスタに対して、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては1度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する[演算回数低減処理]のステップ。
【0048】
前記初期化工程に続いて次のスキニング分解工程を実行する。
(10)ステップS240:
前記ステップS230によりウェイトマップ更新演算対象として選択したアニメーション中のオブジェクトのウェイトマップ更新を行うウェイトマップ更新工程のステップ。
(11)ステップS250:
前記ステップS240によりウェイトマップ更新を行ったアニメーション中のオブジェクトのボーンの剛体変換行列更新を行うボーンの剛体変換行列更新工程のステップ。
【0049】
(12)ステップS260:
前記ステップS250に続いて、ユーザが設定した回数だけスキニング分解処理を反復して処理を行ったか否かを判定し、ユーザが設定した回数の処理を行っていないと判定したとき、前記該ウェイトマップ更新工程のステップS220に戻るステップ。
(13)ステップS270:
前記ステップS260によりユーザが設定した回数だけスキニング分解処理を反復して処理を行ったと判定したとき、スキンアニメーション情報をスキンアニメーション情報DB11に出力するステップ。
【0050】
なお、本例においては、ステップS212における可動部分が骨格等によりにより定まっているオブジェクトか可動部分が定まっていない大きな変形をするオブジェクトかの判定は、オペレータが設定して良いし、オブジェクトの外的形状や輪郭によるパターンマッチング等によりCPUが判定しても良い。
【0051】
また、ステップS210におけるオブジェクトを操作するためのボーンの設定をオペレータ操作により行っても良い。
【0052】
さらに、前記ステップS220では、スキンウェイトの更新演算において第2隣接以内にあるボーンを2次計画問題の計算の対象とする例を説明したが、本発明はこれに限られるものではなく、第n隣接以内にあるボーン(nは整数)を2次計画問題の計算の対象とすることや、単純に距離の近いボーンを2次計画問題の計算の対象としても良い。
【符号の説明】
【0053】
10 頂点ベースアニメーション情報データベース(DB)、
11 スキンアニメーション情報データベース(DB)、
12 初期化処理部、14 間伐処理部、15 骨格変換更新処理部、
16 ウェイトマップ更新処理部、17 メモリ、18 表示部、
19 入力部、20 CPU
【要約】
【課題】メモリ消費量が少なく且つ高速高精度に変換するスキニング分解高速化技術の提供。
【解決手段】オブジェクトの特性に応じて異なる手法を適用してオブジェクトを操作するためのボーンのクラスタを割り当てるクラスタの割り当て処理部12と、設定したボーンのクラスタに対して、近傍のボーンのクラスタのみをクラスタリングして、ウェイトマップ更新演算における2次計画問題のシステム行列の大きさを縮小し一定の大きさに保つシステム行列縮小処理部13と、アニメーション中のオブジェクト間の姿勢類似度を表す評価関数式を導入し、繰り返し動作や静止状態のキーフレームにおけるオブジェクトに対しては1度だけウェイトマップ更新演算対象とすることで、ウェイトマップ更新演算回数を制限する演算回数低減処理14とを実行させる初期化工程を適用したスキニング分解高速化方法。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13