(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-02
(45)【発行日】2022-05-13
(54)【発明の名称】運動解析装置
(51)【国際特許分類】
G16Z 99/00 20190101AFI20220506BHJP
【FI】
G16Z99/00
(21)【出願番号】P 2018086037
(22)【出願日】2018-04-27
【審査請求日】2021-04-13
(73)【特許権者】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】平島 雅也
(72)【発明者】
【氏名】薗田 拓哉
【審査官】宮地 匡人
(56)【参考文献】
【文献】特開2017-037553(JP,A)
【文献】特開2004-078698(JP,A)
【文献】米国特許出願公開第2016/0024731(US,A1)
【文献】中田 聖人,解剖学的構造とその挙動を考慮した手の陰的モデリング,映像情報メディア学会技術報告,映像情報メディア学会,2017年03月07日,Vol.41 No.12,pp.53-56,ISSN 134-6893
【文献】松阪 喜幸,ビジュアル情報処理 -CG・画像処理入門-,初版,画像情報教育振興協会,2017年03月23日,pp.120-121,ISBN 978-4-903474-57-1
(58)【調査した分野】(Int.Cl.,DB名)
G16Z 99/00
JSTPlus(JDreamIII)
JMEDPlus(JDreamIII)
JST7580(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
動物の運動を解析するための運動解析装置であって、
前記動物の体内の各部位を表わす複数の三次元モデルを格納するための記憶部を備え、
前記複数の三次元モデルの各々は、複数の質点で表わされ、
前記複数の質点の各々は、三次元上の座標値と質量とに対応付けられており、かつ、三次元モデル内の関連付けられている他の質点との距離に依存する力学的関係よって当該他の質点と結合しており、
前記複数の三次元モデルは、前記動物の体内の第1~第3の部位を表わす第1~第3の部位モデルを含み、
前記第3の部位モデル
の1つ以上の表面の各々を構成する複数の質点の一部または全部は、前記第1の部位モデルを構成する複数の質点と、前記第2の部位モデルを構成する複数の質点との内のいずれかの質点に関連付けられており、
前記第1~第3の部位モデルの複数の質点の各々についての座標値を計算するための演算部を備え、
前記演算部は、
前記第1~第3の部位モデルの複数の質点の各々について、当該質点と関連付けられている他の質点との間の距離に応じて、当該質点が当該他の質点から受ける力を計算し、
前記第1~第3の部位モデルの複数の質点の各々について、当該質点に対応付けられている質量と、当該質点について計算された前記力とに依存する運動方程式によって当該質点の座標値を順次計算する、運動解析装置。
【請求項2】
前記第3の部位モデルは、前記第3の部位の第1の表面を構成する複数の質点と、前記第3の部位の第2の表面を構成する複数の質点とで構成されている、請求項1に記載の運動解析装置。
【請求項3】
前記第1の表面を構成する複数の質点の一部または全部は、前記第1の部位モデルを構成する少なくとも1つの質点と関連付けられており、
前記第2の表面を構成する複数の質点の一部または全部は、前記第2の部位モデルを構成する少なくとも1つの質点と関連付けられている、請求項2に記載の運動解析装置。
【請求項4】
前記第3の部位モデルは、前記動物の皮膚を表わし、
前記第1の表面を構成する複数の質点の一部または全部は、前記第1の部位モデルを構成する複数の質点と、前記第2の部位モデルを構成する複数の質点との内のいずれかの質点に関連付けられている、請求項2に記載の運動解析装置。
【請求項5】
前記第1の部位モデルは、前記動物の体内の第1の筋を表わし、
前記第2の部位モデルは、前記動物の体内の第2の筋
を表わす、請求項1~4のいずれか1項に記載の運動解析装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、動物の運動を解析するための運動解析装置に関する。
【背景技術】
【0002】
近年、人や動物等の筋の運動を解析するための技術が開発されている。当該運動は、人の筋の力学的機能をコンピュータ上で表現した筋モデルを用いて解析される。筋の運動解析技術に関し、特開2017-037553号公報(特許文献1)は、バネマスダンパモデル方式を採用した人体の筋モデルを開示している。
【0003】
より複雑な運動解析を実現するためには、体内の部位間の干渉を考慮する必要がある。三次元オブジェクト同士の干渉を回避するための技術に関し、特開2006-302098号公報(特許文献2)がある。特許文献2は、「仮想空間に配置されたオブジェクト同士の干渉を簡易な演算により演算可能な三次元オブジェクト制御装置」を開示している。特許文献2に開示される三次元オブジェクト制御装置は、体内の部位間の干渉回避を前提としていない。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2017-037553号公報
【文献】特開2006-302098号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
体内の各部位は、他の部位と常に接触しており、より複雑な運動解析を実現するためには、各部位の干渉を常に考慮する必要がある。体内の各部位について干渉判定処理および干渉回避処理を行うと、処理に膨大な時間を要する。そのため、これらの処理を常に行うことは現実的ではない。そのため、体内の各部位の干渉回避を従来とは異なる手法で実現する必要がある。
【0006】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、体内の各部位の干渉回避演算を従来とは異なる方法で実現することが可能な運動解析装置を提供することである。
【課題を解決するための手段】
【0007】
ある局面に従うと、動物の運動を解析するための運動解析装置は、上記動物の体内の各部位を表わす複数の三次元モデルを格納するための記憶部を備える。上記複数の三次元モデルの各々は、複数の質点で表わされる。上記複数の質点の各々は、三次元上の座標値と質量とに対応付けられており、かつ、三次元モデル内の関連付けられている他の質点との距離に依存する力学的関係よって当該他の質点と結合している。上記複数の三次元モデルは、上記動物の体内の第1~第3の部位を表わす第1~第3の部位モデルを含む。上記第3の部位モデルを構成する複数の質点の一部または全部は、上記第1の部位モデルを構成する複数の質点と、上記第2の部位モデルを構成する複数の質点との内のいずれかの質点に関連付けられている。上記第1~第3の部位モデルの複数の質点の各々についての座標値を計算するための演算部を備える。上記演算部は、上記第1~第3の部位モデルの複数の質点の各々について、当該質点と関連付けられている他の質点との間の距離に応じて、当該質点が当該他の質点から受ける力を計算し、上記第1~第3の部位モデルの複数の質点の各々について、当該質点に対応付けられている質量と、当該質点について計算された上記力とに依存する運動方程式によって当該質点の座標値を順次計算する。
【0008】
好ましくは、上記第3の部位モデルは、上記第3の部位の第1の表面を構成する複数の質点と、上記第3の部位の第2の表面を構成する複数の質点とで構成されている。
【0009】
好ましくは、上記第1の表面を構成する複数の質点の一部または全部は、上記第1の部位モデルを構成する少なくとも1つの質点と関連付けられている。上記第2の表面を構成する複数の質点の一部または全部は、上記第2の部位モデルを構成する少なくとも1つの質点と関連付けられている。
【0010】
好ましくは、上記第3の部位モデルは、上記動物の皮膚を表わす。上記第1の表面を構成する複数の質点の一部または全部は、上記第1の部位モデルを構成する複数の質点と、上記第2の部位モデルを構成する複数の質点との内のいずれかの質点に関連付けられている。
【0011】
好ましくは、上記第1の部位モデルは、上記動物の体内の第1の筋を表わす。上記第2の部位モデルは、上記動物の体内の第2の筋を表わす。
【発明の効果】
【0012】
ある局面において、体内の各部位の干渉回避を従来とは異なる方法で実現することができる。
【0013】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0014】
【
図2】筋モデルの各質点に関する質点情報112を示す図である。
【
図3】運動解析装置の機能構成の一例を示すブロック図である。
【
図4】各質点の座標計算時におけるGPU(Graphics Processing Unit)へのスレッドの配置を示す概念図である。
【
図5】筋モデル同士の干渉回避処理を説明するための図である。
【
図6】結合情報のデータ構造の一例を示す図である。
【
図7】筋モデルと皮膚モデルとの干渉回避処理を説明するための図である。
【
図9】運動解析装置の主要なハードウェア構成を示すブロック図である。
【
図10】本提案手法のシミュレーション結果の一例を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。また、以下で説明する変形例は、適宜選択的に組み合わされてもよい。
【0016】
[1 筋モデルの座標系]
図1を参照して、実施の形態に従う筋モデル50を表わすための座標系について説明する。
図1は、筋モデル50の一例を概略的に示す図である。
【0017】
筋モデル50は、複数の質点で表わされる。質点とは、筋を構成する各部分を表わす要素のことをいう。各質点には、三次元上の座標値と質量とが関連付けられている。
【0018】
図1に示されるように、筋モデル50を構成する各質点は、三次元の格子座標系(i、j、k)で表わされる。当該座標系の「k」は、筋の長手方向(すなわち、筋の始端から終端に向かう方向)に直交する断面の番号を表わす。筋モデル50の各断面に含まれる各質点の番号は、2次元格子座標(i、j)で管理される。
【0019】
i方向の質点数は、Ni個とする。j方向の質点数は、Nj個とする。k方向の質点数は、Nk個とする。すなわち、1つの筋は、6面体のポリゴンを直列に(Nk-1)個並べてできる細長いポリゴンを、並列に(Ni-1)*(Nj-1)個束ねることによって構成される。(i、j、k)番目の質点の通し番号nは、「n=i+(Ni*j)+(Ni*Nj*k)」で表わされる。たとえば、Ni=5、Nj=7である場合、(i、j、k)=(0、2、1)における質点の通し番号は、45(=0+(5*2)+(5*7*1))となる。Ni、Nj、Nkの値が調整されることで、筋モデル50は、細長い筋や平たい筋等の様々な形状で表現され得る。
【0020】
なお、この形状表現は、筋だけでなく、骨と骨をつないでいる靭帯や、多頭筋を束ねている腱膜の表現にも用いられ得る。これにより、人体の各部位(たとえば、筋、腱、靭帯、腱膜等)の形状が一元的に管理される。また、このような形状表現により、後述するように同一GPUのカーネル関数で全ての人体部位の形状が計算され得る。
【0021】
[2 筋モデルの運動解析]
(2.1 概要)
筋モデル50(
図1参照)には、隣り合う質点を力学的に結合させたバネマスダンパモデルが採用される。バネマスダンパモデルの特徴は、各質点の運動方程式が同じ計算式で表わされ、かつ、各質点のシミュレーションの1タイムステップ(Δt)の積分計算が他の質点とは独立に行うことができる点である。これにより、大量の質点の1タイムステップの積分計算が並列に処理され得る。時間積分の方法としては、たとえば、ベレの方法が用いられる。
【0022】
(2.2 運動方程式)
図2および
図3を参照して、運動解析装置100による筋モデル50(
図1参照)の運動解析方法について説明する。
図2は、筋モデル50の各質点に関する質点情報112を示す図である。
図3は、運動解析装置100の機能構成の一例を示すブロック図である。
【0023】
以下の式(1)に示されるように、n番目の質点の運動方程式は、隣接する質点から受ける受動的な力「fPassive」と、能動的な筋収縮力「fActive」と、隣接する筋または骨から受ける外力「fCol」によって決定される。
【0024】
【0025】
式(1)の「m
n」は、n番目の質点の質量を表わす。各質点の質量「m
n」は、たとえば、
図2の質点情報112に規定されている。一例として、各質点の質量「m
n」は、人体の構造を規定している人体モデルから予め得られている。式(1)の「a
n」は、n番目の質点の加速度ベクトルを表わす。
【0026】
式(1)は、たとえば、運動解析装置100に含まれる演算部150によって計算される。演算部150は、後述するCPU(Central Processing Unit)102やGPU104に相当する。演算部150は、筋モデル50を構成する複数の質点のうち、筋の表面を構成する質点が外力を受けたことに基づいて、各質点についての座標値を順次計算する。演算部150は、外力「fCol」を受けた質点については、当該質点に関連付けられている質量と、当該質点についての受動的な力「fPassive」と、外力「fCol」とに依存する運動方程式によって当該質点の座標値を順次計算する。演算部150は、外力「fCol」を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された力「fPassive」とに依存する運動方程式によって当該質点の座標値を順次計算する。すなわち、演算部150は、外力を受けていない質点については、外力「fCol」をゼロに設定した上で式(1)の運動方程式を解く。なお、より詳細に各質点の座標値を計算する場合には、式(1)に示されるように能動的な筋収縮力「fActive」が運動方程式に追加される。
【0027】
図3に示されるように、演算部150は、機能構成として、第1算出部151と、第2算出部152と、第3算出部153と、位置算出部160とを含む。第1算出部151は、式(1)の受動的な力「f
Passive」を算出する。第2算出部152は、式(1)に示される筋収縮力「f
Active」を算出する。第3算出部153は、式(1)に示される外力「f
Col」を算出する。位置算出部160は、上記式(1)の運動方程式を解くことにより、筋モデル50の各質点の座標値を算出する。
【0028】
(a)第1算出部151
以下、隣接する質点から受ける力「fPassive」の算出方法について説明する。力「fPassive」は、第1算出部151によって算出される。第1算出部151は、対象の質点と隣接する質点との力学的な結合関係をバネに見立てて「fPassive」を計算する。すなわち、筋モデル50の各質点は、隣接する質点との距離に依存する力学的関係よって隣接する質点と結合しており、第1算出部151は、対象の質点と隣接する質点との間の距離に応じて、対象の質点が隣接する質点から受ける力を算出する。
【0029】
各質点には、1つ以上の質点が隣接する。安定的にシミュレーションを行うためには、質点同士の力学的結合関係(すなわち、バネのつなぎ方)に工夫が必要である。i、j、k方向(
図1参照)にバネが配置されただけでは、筋モデル50は、形状を保てないことがあるためである。そのため、i、j、k方向の全ての断面内において斜めのバネが配置されることが好ましい。これにより、運動解析装置100は、筋モデル50について安定して形状シミュレーションを行うことができる。たとえば、受動的な力「f
Passive」は、以下の式(2)で表わされる。
【0030】
【0031】
式(2)の上付き文字「e」は、東方向を表わす(
図1参照)。上付き文字「w」は、西方向を表わす。上付き文字「s」は、南方向を表わす。上付き文字「n」は、北方向を表わす。上付き文字「f」は、前方向(
図1の紙面下方向)を表わす。上付き文字「b」は、後ろ方向(
図1の紙面上方向)を表わす。たとえば、式(2)の力「f
ne」は、東北方向の質点(バネ)から受ける力を表わす。隣接する質点が存在しない場合には、その方向から受ける力はゼロとなる。たとえば、筋の始端に当たるk=0の断面内の質点は、後方向(すなわち、骨側)からは力を受けないものとする。実際には、始端の質点は骨から力を受けることで骨に対して一定の位置を保っているが、このような拘束条件の実装方法については後述する。
【0032】
以下の式(3)に示されるように、n番目の質点が隣接するm番目の質点から受ける力「fnm」は、弾性力「fnm
S」と粘性力「fnm
D」との和で表わされる。力「fnm」は、式(2)の右辺の各項に相当する。
【0033】
【0034】
式(3)の弾性力「fnm
S」は、以下の式(4)で表わされる。
【0035】
【0036】
式(4)の「k
S」は、バネ定数である。「x
nm」は、「x
m-x
n」を意味する。「x
m」は、m番目の質点の座標を表わす。「x
n」は、n番目の質点の座標を表わす。各質点の座標は、たとえば、
図2の質点情報112に規定されている。「|x
nm|」は、n番目の質点とm番目の質点との間の距離を表わす。「L
nm」は、力を受けていないときにおけるn番目の質点とm番目の質点との間の距離(すなわち、自然長)を表わす。各質点間の自然長は、たとえば、
図2の質点情報112に予め規定されている。
【0037】
式(3)の粘性力「fnm
D」は、以下の式(5)で表わされる。
【0038】
【0039】
式(5)の「kd」は、粘性抵抗係数を表わす。「vn」は、n番目の質点の速度を表わす。「vm」は、m番目の質点の速度を表わす。各質点の速度は、たとえば、当該質点の前回の位置から現在位置までの移動距離を移動時間で割ることにより算出される。
【0040】
(b)第2算出部152
上記式(1)に示される筋収縮力「fActive」の算出方法について説明する。筋収縮力「fActive」は、筋の能動的な活動によって生じる力である。筋収縮力「fActive」は、第2算出部152によって算出される。筋収縮力「fActive」は、k方向にのみ働くものとし、その大きさは、筋の活動度、張力と長さとの関係「Fl(|xnm|)」、張力と速度との関係「Fv(|vnm|)」、および最大等尺性収縮筋力「Fmax」により決まる。より具体的には、筋収縮力「fActive」は、以下の式(6)で表わされる。
【0041】
【0042】
(c)第3算出部153
上述したように、第3算出部153は、筋モデル50に与える外力「fCol」を算出する。外力「fCol」は、たとえば、筋モデル50が他の物体と衝突することによる反発力や干渉力として生じる。筋モデル50に外力を与える物体は、たとえば、他の筋モデルおよび骨モデルの少なくとも一方を含む。外力「fCol」は、後述する計算方法で算出されてもよいし、運動解析装置100の操作者によって任意の値で与えられてもよい。
【0043】
外力「fCol」は、筋モデル50の表面を構成する質点に与えられる。すなわち、外力「fCol」は、筋モデル50の内部を構成する質点には与えられない。
【0044】
(d)位置算出部160
位置算出部160は、上記式(1)に示される運動方程式を各質点について解くことにより、各質点の加速度を算出する。位置算出部160は、各質点の初期位置や各質点の初期速度(典型的には、ゼロ)を反映した上で、各質点の加速度を時間で二回積分することにより各質点の座標を算出する。時間積分の方法としては、たとえば、ベレの方法が用いられる。
【0045】
位置算出部160は、各質点の新たな座標値を算出したことに基づいて、
図2の質点情報112における現在の位置を各質点の新たな座標値で書き換えるとともに、書き換え前の位置を質点情報112の履歴に格納する。
【0046】
(2.3 GPUへの実装方法)
(a)概要
上記式(1)~(6)に示されるように、各質点の新たな座標値は、現在の各質点の座標値および前回の各質点の座標値から算出される。すなわち、現在の各質点の座標値および前回の各質点の座標値が既知であれば、各質点の新たな座標値の計算は、他の質点の新たな座標値の計算結果に影響されない。この点に着目して、運動解析装置100は、筋モデル50の各質点についての運動方程式(上記式(1)参照)の計算を、一部または全部について並列に行う。これにより、運動解析装置100は、筋モデル50の運動を解析するのに要する処理時間を大幅に削減することができる。
【0047】
(b)スレッドの管理方法
運動解析装置100は、たとえば、各質点の運動方程式の並列処理をGPUで実現する。GPUは、複数のコア(たとえば、数百個のコア)を有する。GPUは、筋モデル50の運動解析を実現するためのプログラムを多数のスレッドに分割し、各コアに対応するスレッドを割り当てることで、筋モデル50の運動解析を並列処理する。
【0048】
図4を参照して、GPUによるスレッドの管理方法について説明する。
図4は、各質点の座標計算時におけるGPUへのスレッドの配置を示す概念図である。
【0049】
図4に示されるように、スレッドは、GPU内において、「グリッド」および「ブロック」の2つの階層構造で管理される。各グリッド内には、複数のブロックが2次元で配置される。
図4(A)に示されるように、1つのブロックには、1つの筋が割り当てられる。好ましくは、1列目のブロックには左半身の各筋が割り当てられ、2列目のブロックには右半身の各筋が割り当てられる。
【0050】
各ブロックには、複数のスレッドが2次元で配置される。
図4(B)に示されるように、運動解析装置100は、1つのスレッドに対しては、1つの筋繊維を割り当てる。人のほとんどの筋の形状は、N
i=7、N
j=16、N
k=33の範囲内で表現され得るため、i方向の最大スレッド数が7に設定され、j方向の最大スレッド数が16に設定される。
【0051】
(c)シェアードメモリの有効的な利用方法
GPU並列処理を高速化するためには、アクセス速度の速いメモリを有効に利用する必要がある。DRAM(Dynamic Random Access Memory)内のグローバルメモリは、全てのブロックからがアクセス可能であるが、アクセス速度が遅いという欠点がある。一方で、SM(Streaming Multiprocessor)内にあるシェアードメモリは、同一ブロック内からしかアクセスすることができないが、アクセス速度が速いという利点がある。上記式(1)の運動方程式を計算する際に参照する機会の多い同一筋モデル内の情報(たとえば、位置や自然長等)がシェアードメモリに配置されることで処理が高速化されるため、運動解析装置100は、1つのブロックに1つの筋が割り当てられるように設計される。
【0052】
しかしながら、シェアードメモリの容量は、数十KBと小さいため(たとえば、16KB、32KB、48KBの3種類)、1つの筋の情報を全てシェアードメモリに割り当てることは困難である。たとえば、筋のサイズがNi=7、Nj=16、Nk=33である場合であって、かつ、各質点がfloat型(4バイト)の24変数(内18変数:自然長L、内3変数:現在の座標値、内3変数:過去の座標値)を有する場合には、総サイズが約346.5KB(=354816B=7*16*33*24*4B)となりシェアードメモリの容量を超えてしまう。
【0053】
このことを解決するため、シェアードメモリを節約する方法を以下に示す。ある質点の運動方程式を計算する際に必要な情報は、隣接する断面に含まれる情報があれば十分である。つまり、k番目の断面に含まれる質点の運動方程式を計算する際には、k-1番目、k番目、k+1番目の3つの断面の情報があれば十分である。3つの断面に限れば、シェアードメモリに割り当てるデータ容量は、約31.5kB(=32256B=7*16*3*24*4B)に節約され得る。このような節約を実現するために、
図4(B)に示されるように、運動解析装置100は、1つのスレッドに1本の筋線維を割り当て、各断面の各質点の座標値をk=0~N
kまで順に計算する。より具体的には、運動解析装置100は、k=1の断面における質点の計算時には、k=0、k=1、k=2の3つの断面に含まれる質点の情報をシェアードメモリに配置し、その上で、k=1の断面における各質点の座標値を計算する。全てのスレッドが計算を終えた段階で、運動解析装置100は、シェアードメモリをk=1、k=2、k=3の断面に含まれる質点の情報に書き換え、次のk=2の断面における質点の計算処理へと進む。
【0054】
[3 筋モデルの干渉回避処理]
(3.1)概要
以下、筋モデル50についての干渉計算について説明する。本実施の形態に従う運動解析装置100は、バネマスダンパモデルに基づく上述の運動解析方法を、筋モデル50と他の部位との干渉回避処理にも適用する。上述のように、バネマスダンパモデルの特徴は、各質点の運動方程式が同じ計算式で表わされ、かつ、各質点のシミュレーションの1タイムステップ(Δt)の積分計算が他の質点とは独立に行うことができる点である。これにより、大量の質点の1タイムステップの積分計算が並列に処理されるので、干渉回避処理についても同様に高速化することができる。
【0055】
以下では、筋モデル50についての干渉回避処理について説明を行うが、本明細書で説明する干渉回避処理は、筋以外の他の部位を表わす三次元モデルにも適用され得る。
【0056】
(3.2)筋モデル同士の干渉回避処理
図5を参照して、干渉回避処理の一例について説明する。
図5は、筋モデル同士の干渉回避処理を説明するための図である。
【0057】
図5には、人体の第1の筋(第1の部位)を表わす筋モデル50A(第1の部位モデル)と、人体の第2の筋(第2の部位)を表わす筋モデル50B(第2の部位モデル)とが示されている。
図5では、説明の便宜のために、筋モデル50Aと筋モデル50Bとが互いに離れている例が示されている、実際には、筋モデル50A,50Bは、互いに接しているか、互いに近接している。
【0058】
筋モデル50A,50Bの干渉を回避するために、筋モデル50A,50Bの間に緩衝オブジェクト60が配置される。緩衝オブジェクト60は、ユーザによって手動で配置されてもよいし、干渉する可能性のある部位間に自動で配置されてもよい。
【0059】
緩衝オブジェクト60は、人体の体内の部位に見立てることができる。本例では、緩衝オブジェクト60は、人体の筋膜に見立てられる。
【0060】
緩衝オブジェクト60は、筋モデル50A,50Bと同様に
図2で説明した質点情報112によって規定される。すなわち、緩衝オブジェクト60は、複数の質点で表現され、各質点には、質量、バネの自然長などが関連付けられる。バネの自然長は、初期姿勢における各質点間の距離とする。
【0061】
緩衝オブジェクト60のj方向の質点数を表わす「Nj」は、たとえば、2に設定される。つまり、緩衝オブジェクト60は、第1の表面を構成する複数の質点(すなわち、j=0に相当する質点)と、第2の表面を構成する複数の質点(すなわち、j=1に相当する質点)とで構成される。緩衝オブジェクト60を構成する各質点は、緩衝オブジェクト60内の隣り合う質点とバネで結合している。
【0062】
緩衝オブジェクト60を構成する各質点は、緩衝オブジェクト60内の質点だけでなく、緩衝オブジェクト60に接する筋モデル50A,50Bの各質点とも仮想的なバネで結合している。すなわち、緩衝オブジェクト60を構成する一部または全部の質点は、筋モデル50A(第1の部位モデル)を構成する複数の質点と、筋モデル50B(第2の部位モデル)を構成する複数の質点との内のいずれかの質点に関連付けられている。
【0063】
図5の例では、緩衝オブジェクト60の第1の表面を表わす各質点(すなわち、j=0に相当する質点)は、筋モデル50Aの質点に結合している。緩衝オブジェクト60の第1の表面を構成する質点は、筋モデル50Aの筋膜として見なすことできる。一方で、緩衝オブジェクト60の第2の表面を表わす各質点(すなわち、j=1に相当する質点)は、筋モデル50Bの質点に結合している。緩衝オブジェクト60の第2の表面を表わす質点は、筋モデル50Bの筋膜として見なすことできる。
【0064】
緩衝オブジェクト60と結合する筋モデル50A,50B内の質点は、たとえば、運動解析装置100によって自動で登録される。より具体的には、運動解析装置100は、緩衝オブジェクト60内の第1の表面を構成する各質点(すなわち、j=0に相当する質点)について筋モデル50A内の全質点との距離を算出する。そして、運動解析装置100は、緩衝オブジェクト60内の第1の表面を構成する各質点を、筋モデル50Aを構成する各質点の内の最も距離が近い1つ以上の質点と結合する。同様に、運動解析装置100は、緩衝オブジェクト60内の第2の表面を構成する各質点(すなわち、j=1に相当する質点)について、筋モデル50B内の全質点との距離を算出する。そして、運動解析装置100は、緩衝オブジェクト60内の第2の表面を構成する各質点を、筋モデル50Bを構成する各質点の内の最も距離が近い1つ以上の質点と結合する。緩衝オブジェクト60の各質点に結合される筋モデル50A,50Bの質点の数は、たとえば、2点程度である。
【0065】
筋モデル50A,50Bの各質点と緩衝オブジェクト60の各質点との結合結果は、
図6に示される結合情報113として記憶される。
図6は、結合情報113のデータ構造の一例を示す図である。
【0066】
図6に示されるように、結合情報113には、緩衝オブジェクト60の各質点について筋モデル50Aの質点が対応付けられている。一例として、緩衝オブジェクト60の質点番号「n1」の質点は、筋モデル50Aの質点番号「n10」の質点と対応付けられている。
【0067】
なお、
図6には、筋モデル50Aと緩衝オブジェクト60との結合情報113が示されているが、実際には、他の筋モデル(たとえば、筋モデル50B)についても、当該他の筋モデルと緩衝オブジェクト60との結合情報113が存在する。
【0068】
運動解析装置100は、筋モデル50A,50Bおよび緩衝オブジェクト60を構成する各質点について、上述の「筋モデルの運動解析」で説明した計算方法で運動解析を行う。すなわち、運動解析装置100は、筋モデル50A,50Bおよび緩衝オブジェクト60を構成する各質点について結合先の他の質点から受ける力を計算し、当該力と各質点に対応付けられている質量とに依存する運動方程式(すなわち、上記式(1))によって各質点の座標値を順次計算する。
【0069】
より具体的には、運動解析装置100は、筋モデル50A,50Bを構成する各質点の内、緩衝オブジェクト60と結合している各質点については、筋モデル50A,50B内の結合先の各質点から受ける力と、緩衝オブジェクト60内の結合先の各質点から受ける力との両方に応じて、筋モデル50A,50B内の各質点の位置を計算する。一方で、運動解析装置100は、筋モデル50A,50Bを構成する各質点の内、緩衝オブジェクト60と結合していない各質点については、筋モデル50A,50B内の結合先の各質点から受ける力に応じて、筋モデル50A,50B内の各質点の位置を計算する。
【0070】
また、運動解析装置100は、緩衝オブジェクト60を構成する各質点については、緩衝オブジェクト60内の結合先の各質点から受ける力と、筋モデル50A,50B内の結合先の各質点から受ける力との両方に応じて、緩衝オブジェクト60内の各質点の位置を計算する。
【0071】
これにより、運動解析装置100は、筋モデル50A,50B内の各質点間の力のやり取りを計算できるだけでなく、緩衝オブジェクト60を介した筋モデル50Aと筋モデル50Bとの間の力のやり取りを計算することができ、筋モデル50Aと筋モデル50Bとの干渉を回避することができる。
【0072】
(3.3)筋モデルと皮膚モデルとの干渉回避処理
次に、
図7を参照して、干渉回避処理の他の例について説明する。
図7は、筋モデルと皮膚モデルとの干渉回避処理を説明するための図である。
【0073】
図7には、人体の第1の筋(第1の部位)を表わす筋モデル50A(第1の部位モデル)と、人体の第2の筋(第2の部位)を表わす筋モデル50B(第2の部位モデル)と、緩衝オブジェクト60とが示されている。
図7では、説明の便宜のために、筋モデル50A,50Bと緩衝オブジェクト60とが互いに離れている例が示されている、実際には、筋モデル50A,50Bと緩衝オブジェクト60とは、互いに接しているか、互いに近接している。
【0074】
基本的には、
図7に示される緩衝オブジェクト60は、
図5に示される緩衝オブジェクト60と同じである。
図5に示される緩衝オブジェクト60においては、筋モデル50Aの質点が緩衝オブジェクト60の第1の表面を構成する複数の質点(すなわち、j=0に相当する質点)と結合しており、筋モデル50Bの質点が緩衝オブジェクト60の第2の表面を構成する複数の質点(すなわち、j=1に相当する質点)と結合していた。これに対して、
図7に示される緩衝オブジェクト60においては、筋モデル50Aの質点と筋モデル50Bの質点とが、共に、緩衝オブジェクト60の第1の表面(すなわち、j=0に相当する質点)を構成する質点と結合している。このように配置された緩衝オブジェクト60は、人体の皮膚(第3の部位)として見なすことできる。
【0075】
緩衝オブジェクト60と結合する筋モデル50A,50B内の質点は、たとえば、運動解析装置100によって自動で登録される。より具体的には、運動解析装置100は、緩衝オブジェクト60内の第1の表面を構成する各質点(すなわち、j=0に相当する質点)について筋モデル50A内および筋モデル50B内の全質点との距離を算出する。そして、運動解析装置100は、緩衝オブジェクト60内の第1の表面を構成する各質点を、筋モデル50A,50Bを構成する各質点の内の最も距離が近い1つ以上の質点と結合する。緩衝オブジェクト60の各質点に結合される筋モデル50A,50Bの質点の数は、たとえば、2点程度である。
【0076】
なお、運動解析装置100は、緩衝オブジェクト60内の第1の表面を構成する各質点だけではなく、緩衝オブジェクト60内の第2の表面を構成する各質点(すなわち、j=1に相当する質点)も、筋モデル50A,50B内のいずれかの質点と結合させてもよい。この場合、緩衝オブジェクト60内の全質点が筋モデル50A,50B内の質点のいずれかと結合することになる。より具体的には、運動解析装置100は、緩衝オブジェクト60内の全質点について筋モデル50A,50B内の各質点との距離を算出する。そして、運動解析装置100は、緩衝オブジェクト60内の全質点を、筋モデル50A,50Bを構成する各質点の内の最も距離が近い1つ以上の質点と結合する。
【0077】
運動解析装置100は、筋モデル50A,50Bおよび緩衝オブジェクト60を構成する各質点について、上述の「筋モデルの運動解析」で説明した計算方法で運動解析を行う。すなわち、運動解析装置100は、筋モデル50A,50Bおよび緩衝オブジェクト60を構成する各質点について結合先の他の質点から受ける力を計算し、当該力と各質点に対応付けられている質量とに依存する運動方程式(すなわち、上記式(1))によって各質点の座標値を順次計算する。
【0078】
より具体的には、運動解析装置100は、筋モデル50A,50Bを構成する各質点の内、緩衝オブジェクト60と結合している各質点については、緩衝オブジェクト60内の結合先の各質点から受ける力と、筋モデル50A,50B内の結合先の各質点から受ける力との両方に応じて、筋モデル50A,50B内の各質点の位置を計算する。一方で、運動解析装置100は、筋モデル50A,50Bを構成する各質点の内、緩衝オブジェクト60と結合していない各質点については、筋モデル50A,50B内の結合先の各質点から受ける力に応じて、筋モデル50A,50B内の各質点の位置を計算する。
【0079】
また、運動解析装置100は、緩衝オブジェクト60を構成する各質点については、緩衝オブジェクト60内の結合先の各質点から受ける力と、筋モデル50A,50B内の結合先の各質点から受ける力との両方に応じて、緩衝オブジェクト60内の各質点の位置を計算する。
【0080】
これにより、運動解析装置100は、筋モデル50A,50B内の各質点間の力のやり取りを計算できるだけでなく、筋モデル50A,50Bと緩衝オブジェクト60との間の力のやり取りを計算することができ、筋モデル50A,50Bと緩衝オブジェクト60との干渉を回避することができる。
【0081】
[4 筋モデルおよび骨モデルの統合]
筋モデル等の形状が変化するモデルは、形状が変化しない剛体モデルに組み合わせることができる。
図8を参照して、剛体モデルと、筋モデルとを組み合わせた筋骨格モデルについて説明する。以下では、剛体モデルの一例である骨モデルを例に挙げて筋骨格モデルの説明を行うが、剛体モデルは、骨モデルに限定されない。
図8は、筋骨格モデルを概略的に示す図である。
【0082】
筋骨格モデルを扱うためには、運動解析装置100は、骨モデルだけでなく、筋モデルの運動方程式(上記式(1)参照)も同時に扱う必要がある。運動解析装置100は、2種の運動方程式を同時に扱うために、筋の端部に含まれる質点(以下、「端点」ともいう。)が骨に対して不動であるという拘束条件の元に、両運動方程式の計算を行う。端点とは、筋の始端(すなわち、k=0の断面)と終端(すなわち、k=Nkの断面)とに含まれる質点のことをいう。
【0083】
骨モデルと筋モデルとの間の力のやり取りは、端点で行われる。筋モデルが骨モデルに与える力は、
図8(A)に示される力ベクトル「f
1」および「f
2」である。
【0084】
骨モデルと筋モデルとの間の力のやり取りは、骨モデルと筋モデルとの干渉点においても行われる。当該干渉点においては、大きさが等しい反対方向の反発力「f
Col」のそれぞれが骨モデルおよび筋モデルのそれぞれに与えられる。以上をまとめると、筋モデルから受ける力を組み込んだ骨モデルの運動方程式は、
図8に示される上腕骨を例に挙げると以下の式(7),(8)で表わされる。
【0085】
【0086】
【0087】
ここで、「m1」は、上腕の質量を表わす。「g」は、重力加速度を表わす。「Fs」は、肩関節の関節間力を表わす。「Fe」は、肘関節の関節間力を表わす。「fi,j
End」は、j番目の筋におけるi番目の筋線維が上腕骨に与える力を表わす。「ag1」は、上腕重心位置の加速度を表わす。「Ls」は、上腕重心位置から肩関節までのベクトルを表わす。「Le」は、上腕重心位置から肘関節までのベクトルを表わす。「li,j
End」は、上腕重心位置からj番目の筋のi番目の端点までのベクトルを表わす。「lCol」は、上腕重心位置から干渉点までのベクトルを表わす。I1は、上腕の慣性テンソルを表わす。ドット付の「ω1」は、上腕の角加速度ベクトルを表わす。ドット無しの「ω1」は、上腕の角速度ベクトルを表わす。
【0088】
なお、端点は、筋モデルの上記式(1)の運動方程式で表わされるものの、骨に対して不動であるという拘束条件があるため、実質的には骨モデルのシミュレーション結果に従うべき質点である。つまり、端点については、運動解析装置100は、骨モデルのシミュレーション結果を参照して1タイムステップ後の位置を更新する。一方、端点以外の質点については、運動解析装置100は、筋モデルのシミュレーション結果をそのまま用いて1タイムステップ後の位置を更新する。このように、運動解析装置100は、端点とそれ以外の質点とを別に扱うことで、骨モデルと筋モデルとを統合的に扱うことができる。
【0089】
[5 運動解析装置100のハードウェア構成]
図9を参照して、運動解析装置100のハードウェア構成の一例について説明する。
図9は、運動解析装置100の主要なハードウェア構成を示すブロック図である。
図9に示されるように、運動解析装置100は、ROM(Read Only Memory)101と、CPU102と、RAM(Random Access Memory)103と、GPU104と、ネットワークインターフェース105と、ディスプレイインターフェース106と、記憶装置110とを含む。
【0090】
ROM101は、オペレーティングシステム、運動解析装置100で実行される制御プログラム等を格納する。CPU102は、オペレーティングシステムや運動解析プログラム114等の各種プログラムを実行することで、運動解析装置100の動作を制御する。RAM103は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【0091】
GPU104は、筋モデル50A,50Bや緩衝オブジェクト60の運動解析処理を高速化するための演算装置である。GPU104は、筋モデル50Aを構成する各質点と、筋モデル50Bを構成する各質点と、緩衝オブジェクト60を構成する各質点との運動解析を上述の「2.3 GPUへの実装方法」で説明した方法で並列処理する。
【0092】
ディスプレイインターフェース106は、運動解析装置100とディスプレイ107とを接続するための端子である。ディスプレイ107は、たとえば、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、またはその他の表示機器等を含む。運動解析プログラム114が実行されることにより、ディスプレイ107は、筋モデルや骨モデルの運動解析結果を表示する。
【0093】
記憶装置110は、たとえば、ハードディスクや外付けの記憶装置等の記憶媒体である。一例として、記憶装置110は、人体の各部位をコンピュータ上で表現するための質点情報112(
図2参照)と、各部位間の結合関係を規定している結合情報113(
図6参照)と、本実施の形態に従う各種の処理を実現するための運動解析プログラム114とを格納する。
【0094】
運動解析プログラム114は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う運動解析装置100の趣旨を逸脱するものではない。さらに、本実施の形態に従う運動解析プログラム114によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、運動解析装置100とサーバとが協働して、本実施の形態に従う処理を実現するようにしてもよい。さらに、少なくとも1つのサーバが本実施の形態に従う処理を実現する、所謂クラウドサービスの形態で運動解析装置100が構成されてもよい。
【0095】
[7 まとめ]
(7.1 利点)
(a)演算時間の短縮
上述の運動解析方法を用いることで、運動解析装置100は、筋モデル50Aと筋モデル50Bとの間の距離を緩衝オブジェクト60を通じて一定に保つことができる。その結果、筋モデル50Aと筋モデル50Bとが初期姿勢で互いに接していた場合には、その接していた状態を保つことになる。
【0096】
従来の方法では、干渉判定を行う際には、三次元オブジェクトを三角形の集合(すなわち、ポリゴンオブジェクト)として扱うことが多かった。この場合には、各オブジェクトから一つずつ三角形を選択し、2つの三角形の干渉判定を行う必要がある。三角形の数の多い精巧なオブジェクトの場合には、この作業に膨大な時間を要する。また、干渉判定があった場合に、その干渉深度に応じて両オブジェクトに反対方向の力(すなわち、ペナルティフォース)を与えることで干渉を回避していた。
【0097】
本提案手法は、従来の方法での多くのデメリットを解消することができる。本提案手法の1つ目のメリットは、三次元オブジェクト同士の干渉判定を行う必要がなく、計算時間を大幅に短縮できる点である。緩衝オブジェクト60の質点と筋モデル50A,50Bの質点との間で生じる力ベクトルは、両質点の位置関係だけで決まるため、ポリゴンオブジェクトという概念を利用する必要がない。
【0098】
本提案手法の2つ目のメリットは、急激な力の変化が発生しやすいペナルティフォースを用いる必要がない点である。干渉が判定された場合にだけペナルティフォースを与える方法では、判定時に急激に大きな力が発生してしまう場合があり、シミュレーションが安定しない。一方で、本実施の形態に従う運動解析方法では、緩衝オブジェクト60の質点と筋モデル50A,50Bの質点との間に常に非ゼロの力が作用するため、急激な力の変化が起こりにくく、シミュレーションが安定する。
【0099】
(b)シミュレーション性能の改善
従来、大胸筋、三角筋、上腕二頭筋等の多数の筋が重なる上腕骨大結節稜付近においては、シミュレーションが不安定になることが多かった。特に、肩関節の外転角度を90度程度まで大きくした場合には、シミュレーションが発散してしまうことがあった。一方で、本提案手法を用いると発散することはなく、肩関節の外転角度が90度を超えても安定してシミュレーションを継続することが可能となった。
図10は、本提案手法のシミュレーション結果の一例を示す図である。
図10に示されるように、本提案手法では、肩関節の外転角度が90度を超えている場合でも、安定してシミュレーションが継続している。
【0100】
(7.2 利用例)
本提案手法は、人体CG(Computer Graphics)モデルのように、複数の変形可能オブジェクトが常に接している状況を再現する場合に有用である。特に、人体筋骨格モデルの場合には、各筋を個別にモデル化する必要があるため、オブジェクトの数、および、オブジェクト同士の干渉数が膨大になる。そのため、ペナルティフォース法による干渉回避方法では、いたる箇所でシミュレーションが不安定となるため、このことを解消できる本提案手法は、極めて画期的である。
【0101】
また、本提案手法は、筋だけではなく、内蔵・血管などの他の部位にも適用可能である。内蔵・血管も、筋と同様に、結合組織を介して他の組織と緩やかに結合している。そのため、干渉判定による離散的な制御よりも、緩衝オブジェクト60を配置することによる連続的な制御の方が効果的である。
【0102】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【0103】
50,50A,50B 筋モデル、60 緩衝オブジェクト、100 運動解析装置、101 ROM、102 CPU、103 RAM、104 GPU、105 ネットワークインターフェース、106 ディスプレイインターフェース、107 ディスプレイ、110 記憶装置、112 質点情報、113 結合情報、114 運動解析プログラム、150 演算部、151 第1算出部、152 第2算出部、153 第3算出部、160 位置算出部。