(57)【特許請求の範囲】
【請求項１】
人または動物の骨格筋をモデル化して当該骨格筋の運動を解析するための運動解析装置であって、
複数の質点で表わされる骨格筋のモデルを格納するための記憶部を備え、
前記複数の質点の各々は、３次元上の座標値と質量とに関連付けられており、かつ、隣接する質点との距離に依存する力学的関係よって当該隣接する質点と結合しており、
前記複数の質点のうちの、前記骨格筋のモデルの端部を構成する各質点は、骨のモデルと結合しており、
前記複数の質点のうちの前記骨格筋の表面を構成する質点が外力を受けたことに基づいて、前記複数の質点の各々についての座標値を計算するための演算部を備え、
前記演算部は、
前記複数の質点の各々について、当該質点と隣接する質点との間の距離に応じて、当該質点が当該隣接する質点から受ける力を計算し、
前記外力を受けた質点については、当該質点に関連付けられている質量と、当該質点について計算された前記力と、前記外力とに依存する運動方程式によって当該質点の座標値を順次計算し、
前記外力を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された前記力とに依存する運動方程式によって当該質点の座標値を順次計算し、
前記骨格筋のモデルは、前記骨格筋のモデルの端部を構成する各質点と、前記骨格筋の表面を構成する質点のうちの前記骨のモデルと干渉する質点とにおいて、前記骨のモデルから外力を受けるように構成され、
前記骨のモデルは、前記骨格筋のモデルの前記端部を構成する各質点と、前記骨格筋のモデルの前記干渉する質点とから、外力を受けるように構成され、
前記演算部は、前記骨格筋のモデルから受けた外力に依存する運動方程式によって前記骨のモデルの回転運動を解析する、運動解析装置。
【請求項２】
前記骨格筋のモデルに前記外力を与える対象は、他の骨格筋のモデルをさらに含む、請求項１に記載の運動解析装置。
【請求項３】
前記演算部は、前記骨格筋のモデルの端部を構成する各質点が前記骨のモデルに対して不動であるという拘束条件の元に、当該質点についての前記運動方程式の計算を行う、請求項２に記載の運動解析装置。
【請求項４】
前記複数の質点のそれぞれについての前記座標値の計算を一部または全部について並列に行う、請求項１〜３のいずれか１項に記載の運動解析装置。
【請求項５】
人または動物の骨格筋をモデル化して当該骨格筋の運動を解析するための運動解析方法であって、
複数の質点で表わされる骨格筋のモデルを格納するステップを備え、
前記複数の質点の各々は、３次元上の座標値と質量とに関連付けられており、かつ、隣接する質点との距離に依存する力学的関係よって当該隣接する質点と結合しており、
前記複数の質点のうちの、前記骨格筋のモデルの端部を構成する各質点は、骨のモデルと結合しており、
前記複数の質点のうちの前記骨格筋の表面を構成する質点が外力を受けたことに基づいて、前記複数の質点の各々についての座標値を計算するステップを備え、
前記計算するステップは、
前記複数の質点の各々について、当該質点と隣接する質点との間の距離に応じて、当該質点が当該隣接する質点から受ける力を計算するステップと、
前記外力を受けた質点については、当該質点に関連付けられている質量と、当該質点について計算された前記力と、前記外力とに依存する運動方程式によって当該質点の座標値を順次計算するステップと、
前記外力を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された前記力とに依存する運動方程式によって当該質点の座標値を順次計算するステップとを含み、
前記骨格筋のモデルは、前記骨格筋のモデルの端部を構成する各質点と、前記骨格筋の表面を構成する質点のうちの前記骨のモデルと干渉する質点とにおいて、前記骨のモデルから外力を受けるように構成され、
前記骨のモデルは、前記骨格筋のモデルの前記端部を構成する各質点と、前記骨格筋のモデルの前記干渉する質点とから、外力を受けるように構成され、
前記運動解析方法は、さらに、前記骨格筋のモデルから受けた外力に依存する運動方程式によって前記骨のモデルの回転運動を解析するステップを備える、運動解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、人または動物における筋の運動を解析するための運動解析装置および運動解析方法に関する。
【背景技術】
【０００２】
近年、人や動物等の筋の運動を解析するための技術が開発されている。当該運動は、人の筋の力学的機能をコンピュータ上で表現した筋モデルを用いて解析される。筋の運動解析技術に関し、非特許文献１は、有限要素法を用いた筋モデルの運動解析方法を開示している。当該運動解析方法は、有限要素法を用いることで筋内部の応力の分布を解析する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Naoto Yamamura, Luis Alves, Toshiaki Oda, Cristian Teodosiu,“骨格筋シミュレータの開発  Development of the 3D FE Simulation System for Human Skeletal Muscle”，生体シミュレーション研究 理研シンポジウム，平成２１年、６５〜７１ページ
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に開示される筋モデルにおいては、関節が固定された状態での単一の筋のシミュレーションしか行われていない。そのため、当該筋モデルでは、骨や他の筋等との接触に応じた変形を解析することができない。また、有限要素法の計算コストは非常に高いため、このような筋モデルを実現するためには、数十台のデスクトップパソコンが必要となる。したがって、より実用的に筋の変形を解析することが可能な運動解析装置が望まれている。
【０００５】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、計算コストを従来よりも低減しつつ、他の物体との接触による筋の変形を解析することが可能な運動解析装置を提供することである。他の局面における目的は、計算コストを従来よりも低減しつつ、他の物体との接触による筋の変形を解析することが可能な運動解析方法を提供することである。
【課題を解決するための手段】
【０００６】
ある局面に従うと、人または動物の筋をモデル化して当該筋の運動を解析するための運動解析装置が提供される。運動解析装置は、複数の質点で表わされる筋のモデルを格納するための記憶部を備える。複数の質点の各々は、３次元上の座標値と質量とに関連付けられており、かつ、隣接する質点との距離に依存する力学的関係よって当該隣接する質点と結合している。運動解析装置は、複数の質点のうちの筋の表面を構成する質点が外力を受けたことに基づいて、複数の質点の各々についての座標値を計算するための演算部を備える。演算部は、複数の質点の各々について、当該質点と隣接する質点との間の距離に応じて、当該質点が当該隣接する質点から受ける力を計算し、外力を受けた質点については、当該質点に関連付けられている質量と、当該質点について計算された力と、外力とに依存する運動方程式によって当該質点の座標値を順次計算し、外力を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された力とに依存する運動方程式によって当該質点の座標値を順次計算する。
【０００７】
好ましくは、筋のモデルに外力を与える対象は、他の筋のモデルおよび骨のモデルの少なくとも一方を含む。
【０００８】
好ましくは、演算部は、筋のモデルの端部を構成する各質点が骨のモデルに対して不動であるという拘束条件の元に、当該質点についての運動方程式の計算を行う。
【０００９】
他の局面に従うと、人または動物の筋をモデル化して当該筋の運動を解析するための運動解析方法が提供される。運動解析方法は、複数の質点で表わされる筋のモデルを格納するステップを備える。複数の質点の各々は、３次元上の座標値と質量とに関連付けられており、かつ、隣接する質点との距離に依存する力学的関係よって当該隣接する質点と結合している。運動解析方法は、複数の質点のうちの筋の表面を構成する質点が外力を受けたことに基づいて、複数の質点の各々についての座標値を計算するステップを備える。計算するステップは、複数の質点の各々について、当該質点と隣接する質点との間の距離に応じて、当該質点が当該隣接する質点から受ける力を計算するステップと、外力を受けた質点については、当該質点に関連付けられている質量と、当該質点について計算された力と、外力とに依存する運動方程式によって当該質点の座標値を順次計算するステップと、外力を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された力とに依存する運動方程式によって当該質点の座標値を順次計算するステップとを含む。
【００１０】
さらに他の局面に従うと、人または動物の筋をモデル化して当該筋の運動を解析するための運動解析装置が提供される。運動解析装置は、複数の質点で表わされる筋のモデルを格納するための記憶部を備える。複数の質点の各々は、３次元上の座標値と質量とに関連付けられており、かつ、隣接する質点との距離に依存する力学的関係よって当該隣接する質点と結合している。運動解析装置は、筋のモデルの変形時において、複数の質点の各々についての座標値を計算するための演算部を備える。演算部は、複数の質点の各々について、当該質点と隣接する質点との間の距離に応じて、当該質点が当該隣接する質点から受ける力を計算し、複数の質点の各々について、当該質点に関連付けられている質量と、当該質点について計算された力とに依存する運動方程式によって当該質点の座標値を順次計算し、複数の質点のそれぞれについての座標値の計算を一部または全部について並列に行う。
【発明の効果】
【００１１】
ある局面において、計算コストを従来よりも低減しつつ、他の物体との接触による筋の変形を解析することができる。
【００１２】
本発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１３】
【図１】筋モデルの一例を概略的に示す図である。
【図２】筋モデルの各質点に関する質点情報を示す図である。
【図３】運動解析装置の機能構成の一例を示すブロック図である。
【図４】各質点の座標計算時におけるＧＰＵ（Graphics Processing Unit）へのスレッドの配置を示す概念図である。
【図５】ＯＢＢ（Oriented Bounding Box）の計算時におけるＧＰＵへの各スレッドの配置を示す図である。
【図６】ＯＢＢ同士の干渉判定時におけるＧＰＵへの各スレッドの配置を示す図である。
【図７】ナローフェイズの干渉判定時におけるＧＰＵへの各スレッドの配置を示す図である。
【図８】筋骨格モデルを概略的に示す図である。
【図９】運動解析装置が実行する処理の一部を表わすフローチャートである。
【図１０】運動解析装置の主要なハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。また、以下で説明する変形例は、適宜選択的に組み合わされてもよい。
【００１５】
［１  筋モデルの座標系］
図１を参照して、実施の形態に従う筋モデル５０を表わすための座標系について説明する。図１は、筋モデル５０の一例を概略的に示す図である。
【００１６】
筋モデル５０は、複数の質点で表わされる。質点とは、筋を構成する各部分を表わす要素のことをいう。各質点には、３次元上の座標値と質量とが関連付けられている。
【００１７】
図１に示されるように、筋モデル５０を構成する各質点は、３次元の格子座標系（ｉ、ｊ、ｋ）で表わされる。当該座標系の「ｋ」は、筋の長手方向（すなわち、筋の始端から終端に向かう方向）に直交する断面の番号を表わす。筋モデル５０の各断面に含まれる各質点の番号は、２次元格子座標（ｉ、ｊ）で管理される。
【００１８】
ｉ方向の質点数は、Ｎｉ個とする。ｊ方向の質点数は、Ｎｊ個とする。ｋ方向の質点数は、Ｎｋ個とする。すなわち、1つの筋は、６面体のポリゴンを直列に（Ｎｋ−１）個並べてできる細長いポリゴンを、並列に（Ｎｉ−１）＊（Ｎｊ−１）個束ねることによって構成される。（ｉ、ｊ、ｋ）番目の質点の通し番号ｎは、「ｎ＝ｉ＋（Ｎｉ＊ｊ）＋（Ｎｉ＊Ｎｊ＊ｋ）」で表わされる。たとえば、Ｎｉ＝５、Ｎｊ＝７である場合、（ｉ、ｊ、ｋ）＝（０、２、１）における質点の通し番号は、４５（＝０＋（５＊２）＋（５＊７＊１））となる。Ｎｉ、Ｎｊ、Ｎｋの値が調整されることで、筋モデル５０は、細長い筋や平たい筋等の様々な形状で表現され得る。
【００１９】
なお、この形状表現は、筋だけでなく、骨と骨をつないでいる靭帯や、多頭筋を束ねている腱膜の表現にも用いられ得る。これにより、人体の各部位（たとえば、筋、腱、靭帯、腱膜等）の形状が一元的に管理される。また、このような形状表現により、後述するように同一ＧＰＵのカーネル関数で全ての人体部位の形状が計算され得る。
【００２０】
［２  筋モデルの運動解析］
（２．１  概要）
筋モデル５０（図１参照）には、隣り合う質点を力学的に結合させたバネマスダンパモデルが採用される。バネマスダンパモデルの特徴は、各質点の運動方程式が同じ計算式で表され、かつ、各質点のシミュレーションの１タイムステップ（Δｔ）の積分計算が他の質点とは独立に行うことができる点である。これにより、大量の質点の１タイムステップの積分計算が並列に処理され得る。時間積分の方法としては、たとえば、ベレの方法が用いられる。
【００２１】
（２．２  運動方程式）
図２および図３を参照して、運動解析装置１００による筋モデル５０（図１参照）の運動解析方法について説明する。図２は、筋モデル５０の各質点に関する質点情報１１２を示す図である。図３は、運動解析装置１００の機能構成の一例を示すブロック図である。
【００２２】
以下の式（１）に示されるように、ｎ番目の質点の運動方程式は、隣接する質点から受ける受動的な力「ｆPassive」と、能動的な筋収縮力「ｆActive」と、隣接する筋または骨から受ける外力「ｆCol」によって決定される。
【００２３】
【数１】
0006614645.tif 000002
【００２４】
式（１）の「ｍn」は、ｎ番目の質点の質量を表わす。各質点の質量「ｍn」は、たとえば、図２の質点情報１１２に規定されている。一例として、各質点の質量「ｍn」は、人体の構造を規定している人体モデルから予め得られている。式（１）の「ａn」は、ｎ番目の質点の加速度ベクトルを表わす。
【００２５】
式（１）は、たとえば、運動解析装置１００に含まれる演算部１５０によって計算される。演算部１５０は、後述するＣＰＵ（Central  Processing  Unit）１０２やＧＰＵ１０４に相当する。演算部１５０は、筋モデル５０を構成する複数の質点のうち、筋の表面を構成する質点が外力を受けたことに基づいて、各質点についての座標値を順次計算する。演算部１５０は、外力「ｆCol」を受けた質点については、当該質点に関連付けられている質量と、当該質点についての受動的な力「ｆPassive」と、外力「ｆCol」とに依存する運動方程式によって当該質点の座標値を順次計算する。演算部１５０は、外力「ｆCol」を受けていない質点については、当該質点に関連付けられている質量と、当該質点について計算された力「ｆPassive」とに依存する運動方程式によって当該質点の座標値を順次計算する。すなわち、演算部１５０は、外力を受けていない質点については、外力「ｆCol」をゼロに設定した上で式（１）の運動方程式を解く。なお、より詳細に各質点の座標値を計算する場合には、式（１）に示されるように能動的な筋収縮力「ｆActive」が運動方程式に追加される。
【００２６】
図３に示されるように、演算部１５０は、機能構成として、第１算出部１５１と、第２算出部１５２と、第３算出部１５３と、位置算出部１６０とを含む。第１算出部１５１は、式（１）の受動的な力「ｆPassive」を算出する。第２算出部１５２は、式（１）に示される筋収縮力「ｆActive」を算出する。第３算出部１５３は、式（１）に示される外力「ｆCol」を算出する。位置算出部１６０は、上記式（１）の運動方程式を解くことにより、筋モデル５０の各質点の座標値を算出する。
【００２７】
（ａ）第１算出部１５１
以下、隣接する質点から受ける力「ｆPassive」の算出方法について説明する。力「ｆPassive」は、第１算出部１５１によって算出される。第１算出部１５１は、対象の質点と隣接する質点との力学的な結合関係をバネに見立てて「ｆPassive」を計算する。すなわち、筋モデル５０の各質点は、隣接する質点との距離に依存する力学的関係よって隣接する質点と結合しており、第１算出部１５１は、対象の質点と隣接する質点との間の距離に応じて、対象の質点が隣接する質点から受ける力を算出する。
【００２８】
各質点には、１つ以上の質点が隣接する。安定的にシミュレーションを行うためには、質点同士の力学的結合関係（すなわち、バネのつなぎ方）に工夫が必要である。ｉ、ｊ、ｋ方向（図１参照）にバネが配置されただけでは、筋モデル５０は、形状を保てないことがあるためである。そのため、ｉ、ｊ、ｋ方向の全ての断面内において斜めのバネが配置されることが好ましい。これにより、運動解析装置１００は、筋モデル５０について安定して形状シミュレーションを行うことができる。たとえば、受動的な力「ｆPassive」は、以下の式（２）で表わされる。
【００２９】
【数２】
0006614645.tif 000003
【００３０】
式（２）の上付き文字「ｅ」は、東方向を表わす（図１参照）。上付き文字「ｗ」は、西方向を表わす。上付き文字「ｓ」は、南方向を表わす。上付き文字「ｎ」は、北方向を表わす。上付き文字「ｆ」は、前方向（図１の紙面下方向）を表わす。上付き文字「ｂ」は、後ろ方向（図１の紙面上方向）を表わす。たとえば、式（２）の力「ｆne」は、東北方向の質点（バネ）から受ける力を表わす。隣接する質点が存在しない場合には、その方向から受ける力はゼロとなる。たとえば、筋の始端に当たるｋ＝０の断面内の質点は、後方向（すなわち、骨側）からは力を受けないものとする。実際には、始端の質点は骨から力を受けることで骨に対して一定の位置を保っているが、このような拘束条件の実装方法については後述する。
【００３１】
以下の式（３）に示されるように、ｎ番目の質点が隣接するｍ番目の質点から受ける力「ｆnm」は、弾性力「ｆnmS」と粘性力「ｆnmD」との和で表わされる。力「ｆnm」は、式（２）の右辺の各項に相当する。
【００３２】
【数３】
0006614645.tif 000004
【００３３】
式（３）の弾性力「ｆnmS」は、以下の式（４）で表わされる。
【００３４】
【数４】
0006614645.tif 000005
【００３５】
式（４）の「ｋS」は、バネ定数である。「ｘnm」は、「ｘm−ｘn」を意味する。「ｘm」は、ｍ番目の質点の座標を表わす。「ｘn」は、ｎ番目の質点の座標を表わす。各質点の座標は、たとえば、図２の質点情報１１２に規定されている。「｜ｘnm｜」は、ｎ番目の質点とｍ番目の質点との間の距離を表わす。「Ｌnm」は、力を受けていないときにおけるｎ番目の質点とｍ番目の質点との間の距離（すなわち、自然長）を表わす。各質点間の自然長は、たとえば、図２の質点情報１１２に予め規定されている。
【００３６】
式（３）の粘性力「ｆnmD」は、以下の式（５）で表わされる。
【００３７】
【数５】
0006614645.tif 000006
【００３８】
式（５）の「ｋd」は、粘性抵抗係数を表わす。「ｖn」は、ｎ番目の質点の速度を表わす。「ｖm」は、ｍ番目の質点の速度を表わす。各質点の速度は、たとえば、当該質点の前回の位置から現在位置までの移動距離を移動時間で割ることにより算出される。
【００３９】
（ｂ）第２算出部１５２
上記式（１）に示される筋収縮力「ｆActive」の算出方法について説明する。筋収縮力「ｆActive」は、筋の能動的な活動によって生じる力である。筋収縮力「ｆActive」は、第２算出部１５２によって算出される。筋収縮力「ｆActive」は、ｋ方向にのみ働くものとし、その大きさは、筋の活動度、張力と長さとの関係「Ｆl（｜ｘnm｜）」、張力と速度との関係「Ｆv（｜ｖnm｜）」、および最大等尺性収縮筋力「Ｆmax」により決まる。より具体的には、筋収縮力「ｆActive」は、以下の式（６）で表わされる。
【００４０】
【数６】
0006614645.tif 000007
【００４１】
（ｃ）第３算出部１５３
上述したように、第３算出部１５３は、筋モデル５０に与える外力「ｆCol」を算出する。外力「ｆCol」は、たとえば、筋モデル５０が他の物体と衝突することによる反発力や干渉力として生じる。筋モデル５０に外力を与える物体は、たとえば、他の筋モデルおよび骨モデルの少なくとも一方を含む。外力「ｆCol」は、後述する計算方法で算出されてもよいし、運動解析装置１００の操作者によって任意の値で与えられてもよい。
【００４２】
外力「ｆCol」は、筋モデル５０の表面を構成する質点に与えられる。すなわち、外力「ｆCol」は、筋モデル５０の内部を構成する質点には与えられない。
【００４３】
（ｄ）位置算出部１６０
位置算出部１６０は、上記式（１）に示される運動方程式を各質点について解くことにより、各質点の加速度を算出する。位置算出部１６０は、各質点の初期位置や各質点の初期速度（典型的には、ゼロ）を反映した上で、各質点の加速度を時間で二回積分することにより各質点の座標を算出する。時間積分の方法としては、たとえば、ベレの方法が用いられる。
【００４４】
位置算出部１６０は、各質点の新たな座標値を算出したことに基づいて、図２の質点情報１１２における現在の位置を各質点の新たな座標値で書き換えるとともに、書き換え前の位置を質点情報１１２の履歴に格納する。
【００４５】
（２．３  ＧＰＵへの実装方法）
（ａ）概要
上記式（１）〜（６）に示されるように、各質点の新たな座標値は、現在の各質点の座標値および前回の各質点の座標値から算出される。すなわち、現在の各質点の座標値および前回の各質点の座標値が既知であれば、各質点の新たな座標値の計算は、他の質点の新たな座標値の計算結果に影響されない。この点に着目して、運動解析装置１００は、筋モデル５０の各質点についての運動方程式（上記式（１）参照）の計算を、一部または全部について並列に行う。これにより、運動解析装置１００は、筋モデル５０の運動を解析するのに要する処理時間を大幅に削減することができる。
【００４６】
（ｂ）スレッドの管理方法
運動解析装置１００は、たとえば、各質点の運動方程式の並列処理をＧＰＵで実現する。ＧＰＵは、複数のコア（たとえば、数百個のコア）を有する。ＧＰＵは、筋モデル５０の運動解析を実現するためのプログラムを多数のスレッドに分割し、各コアに対応するスレッドを割り当てることで、筋モデル５０の運動解析を並列処理する。
【００４７】
図４を参照して、ＧＰＵによるスレッドの管理方法について説明する。図４は、各質点の座標計算時におけるＧＰＵへのスレッドの配置を示す概念図である。
【００４８】
図４に示されるように、スレッドは、ＧＰＵ内において、「グリッド」および「ブロック」の２つの階層構造で管理される。各グリッド内には、複数のブロックが２次元で配置される。図４（Ａ）に示されるように、１つのブロックには、1つの筋が割り当てられる。好ましくは、1列目のブロックには左半身の各筋が割り当てられ、２列目のブロックには右半身の各筋が割り当てられる。
【００４９】
各ブロックには、複数のスレッドが２次元で配置される。図４（Ｂ）に示されるように、運動解析装置１００は、1つのスレッドに対しては、1つの筋繊維を割り当てる。人のほとんどの筋の形状は、Ｎｉ＝７、Ｎｊ＝１６、Ｎｋ＝３３の範囲内で表現され得るため、i方向の最大スレッド数が７に設定され、j方向の最大スレッド数が１６に設定される。
【００５０】
（ｃ）シェアードメモリの有効的な利用方法
ＧＰＵ並列処理を高速化するためには、アクセス速度の速いメモリを有効に利用する必要がある。ＤＲＡＭ（Dynamic Random Access Memory）内のグローバルメモリは、全てのブロックからがアクセス可能であるが、アクセス速度が遅いという欠点がある。一方で、ＳＭ（Streaming Multiprocessor）内にあるシェアードメモリは、同一ブロック内からしかアクセスすることができないが、アクセス速度が速いという利点がある。上記式（１）の運動方程式を計算する際に参照する機会の多い同一筋モデル内の情報（たとえば、位置や自然長等）がシェアードメモリに配置されることで処理が高速化されるため、運動解析装置１００は、１つのブロックに１つの筋が割り当てられるように設計される。
【００５１】
しかしながら、シェアードメモリの容量は、数十ＫＢと小さいため（たとえば、１６ＫＢ、３２ＫＢ、４８ＫＢの３種類）、1つの筋の情報を全てシェアードメモリに割り当てることは困難である。たとえば、筋のサイズがＮｉ＝７、Ｎｊ＝１６、Ｎｋ＝３３である場合であって、かつ、各質点がｆｌｏａｔ型（４バイト）の２４変数（内１８変数：自然長Ｌ、内３変数：現在の座標値、内３変数：過去の座標値）を有する場合には、総サイズが約３４６．５ＫＢ（＝３５４８１６Ｂ＝７＊１６＊３３＊２４＊４Ｂ）となりシェアードメモリの容量を超えてしまう。
【００５２】
このことを解決するため、シェアードメモリを節約する方法を以下に示す。ある質点の運動方程式を計算する際に必要な情報は、隣接する断面に含まれる情報があれば十分である。つまり、ｋ番目の断面に含まれる質点の運動方程式を計算する際には、ｋ−１番目、ｋ番目、ｋ＋１番目の３つの断面の情報があれば十分である。３つの断面に限れば、シェアードメモリに割り当てるデータ容量は、約３１．５ｋＢ（＝３２２５６Ｂ＝７＊１６＊３＊２４＊４Ｂ）に節約され得る。このような節約を実現するために、図４（Ｂ）に示されるように、運動解析装置１００は、１つのスレッドに１本の筋線維を割り当て、各断面の各質点の座標値をｋ＝０〜Ｎｋまで順に計算する。より具体的には、運動解析装置１００は、ｋ＝１の断面における質点の計算時には、ｋ＝０、ｋ＝１、ｋ＝２の３つの断面に含まれる質点の情報をシェアードメモリに配置し、その上で、ｋ＝１の断面における各質点の座標値を計算する。全てのスレッドが計算を終えた段階で、運動解析装置１００は、シェアードメモリをｋ＝１、ｋ＝２、ｋ＝３の断面に含まれる質点の情報に書き換え、次のｋ＝２の断面における質点の計算処理へと進む。
【００５３】
［３  干渉計算］
（３．１  概要）
以下、筋モデルと他の物体との干渉計算について説明する。運動解析装置１００は、干渉計算の際には、筋の表面を構成する質点のみを参照する。一例として、干渉計算は、物体表面を構成する複数の三角形を元に行われる。この場合、モデル表面を構成する全ての三角形に番号が付され、各三角形には、３つの質点番号が関連付けられる。
【００５４】
運動解析装置１００は、ブロードフェイズとナローフェイズとの２段階で干渉計算を行う。ブロードフェイズでは、２つの筋（以下、「筋Ａおよび筋Ｂ」ともいう。）の大まかな干渉判定が行われる。筋Ａ，筋Ｂの各々は、ＯＢＢの集合体として表わされる。ＯＢＢとは、物体の形状を近似する直方体を表わす。運動解析装置１００は、筋Ａと筋Ｂとの全てのＯＢＢペアについて総当たりで干渉を判定する。
【００５５】
ブロードフェイズにおいて干渉があると判定されたＯＢＢペアについて、ナローフェイズの処理が実行される。ナローフェイズでは、運動解析装置１００は、干渉があると判定されたＯＢＢペアの一方のＯＢＢに含まれる三角形と、他方のＯＢＢに含まれる三角形との全ての三角形ペアについて総当たりで干渉を判定する。
【００５６】
一例として、ブロードフェイズおよびナローフェイズにおける干渉判定にはＧＪＫ（Gilbert-Johnson-Keerthi）アルゴリズムが用いられる。ナローフェイズで干渉があると判定された三角形ペアについては、干渉深度が計算される。干渉深度は、筋Ａと筋Ｂとの衝突の強さを表わし、衝突時における三角形ペアの互いの重なり方から算出される。干渉深度の計算にはＥＰＡ（Expanding Polythope Algorithm）が用いられる。運動解析装置１００は、干渉深度に応じた外力「ｆCol」を当該三角形の質点の運動方程式（上記式（１）参照）に追加することで干渉を回避する。
【００５７】
（３．２  ＧＰＵへの実装方法）
（ａ）ブロードフェイズ
（ａ−１）ＯＢＢの計算
図５を参照して、ＯＢＢの計算方法について説明する。図５は、ＯＢＢの計算時におけるＧＰＵへの各スレッドの配置を示す図である。
【００５８】
ブロードフェイズでは、運動解析装置１００は、まず、各筋をＯＢＢの集合体として表わす。たとえば、運動解析装置１００は、筋の長手方向（すなわち、格子座標系のｋ方向）に８区画に分割し、各区画のＯＢＢを求める。各区画のＯＢＢは、独立に計算され得るので、運動解析装置１００は、ＧＰＵを利用して各区画のＯＢＢを並列に計算する。
【００５９】
図５（Ａ）に示されるように、運動解析装置１００は、１つのグリッド内に複数のブロックを２次元で配置し、１つのブロックには１つの筋を割り当てる。図５（Ｂ）に示されるように、運動解析装置１００は、各ブロックに８個のスレッドを割り当て、１つのスレッドには、１つの区画のＯＢＢを計算させる。
【００６０】
ＯＢＢを計算するために必要な情報は、ポリゴン表面に存在する質点の現在位置（３変数）だけである。筋のサイズがＮｉ＝７、Ｎｊ＝１６、Ｎｋ＝３３である場合、当該筋の表面には、１３８６個（＝（７−１）＊２＋（１６−１）＊２）の質点が存在する。その情報量は、約１６．２ＫＢ（＝１６６３２Ｂ＝１３８６＊３＊４）であり、１ブロック内のシェアードメモリのサイズは、上述したように約数十ＫＢであるため、運動解析装置１００は、１つの筋の全ＯＢＢを計算するために必要な情報をシェアードメモリに割り当てることができる。その結果、アクセス速度の速いシェアードメモリが有効に利用され、運動解析装置１００は、ＯＢＢの並列計算を高速に行うことができる。
【００６１】
（ａ−２）ＯＢＢ同士の干渉判定
図６を参照して、ＯＢＢ同士の干渉判定について説明する。図６は、ＯＢＢ同士の干渉判定時におけるＧＰＵへの各スレッドの配置を示す図である。
【００６２】
図６（Ａ）に示されるように、運動解析装置１００は、ＧＰＵのグリッドの各ブロックに、１対の筋のＯＢＢ干渉判定処理を割り当てる。対象が人の筋骨格系の場合には、干渉する可能性のある筋オブジェクトのペアは決まっているので、運動解析装置１００は、それらのペアの数に合わせてブロックを用意する。
【００６３】
図６（Ｂ）に示されるように、運動解析装置１００は、１ブロック内では、筋Ａの８つのＯＢＢと筋Ｂの８つのＯＢＢとの全てのＯＢＢペアについて総当たりで干渉判定を行う。各ＯＢＢペアの干渉判定は、独立に行われ得るので、運動解析装置１００は、各ＯＢＢペアの干渉判定を１つのスレッドに割り当てた上で各干渉判定を並列に実行する。
【００６４】
１つの筋は８つのＯＢＢで構成されるので、１ペアの筋の情報量は５７６Ｂ（＝８＊９＊４＊２）である（１つのＯＢＢにつき９変数）。１ブロック内のシェアードメモリのサイズは、上述したように約数十ＫＢであるため、運動解析装置１００は、１ペアの筋の情報をシェアードメモリに割り当てることができる。その結果、アクセス速度の速いシェアードメモリが有効に利用され、ＯＢＢペアの干渉判定が並列に実行される。
【００６５】
（ｂ）ナローフェイズ
図７を参照して、ナローフェイズにおける干渉判定について説明する。図７は、ナローフェイズの干渉判定時におけるＧＰＵへの各スレッドの配置を示す図である。
【００６６】
ナローフェイズでは、運動解析装置１００は、ブロードフェイズで干渉があると判定された区画のペアについて、その干渉の詳細を調べる。図７（Ａ）に示されるように、運動解析装置１００は、ＧＰＵのグリッドの各ブロックに１ペアの区画を割り当てる。運動解析装置１００は、ブロードフェイズで干渉があると判定されたペアの数だけブロックを用意する。
【００６７】
運動解析装置１００は、１ブロック内では、区画ａの表面を構成する三角形と区画ｂの表面を構成する三角形との全ての三角形ペアについて総当たりで干渉判定を行う。当該干渉判定には、たとえば、ＧＪＫアルゴリズムが用いられる。干渉があると判定された場合には、運動解析装置１００は、干渉深度の計算を行う。干渉深度の計算には、たとえば、ＥＰＡアルゴリズムが用いられる。図７（Ｂ）に示されるように、各三角形ペアの計算は独立に行うことができるので、運動解析装置１００は、各三角形ペアの計算を１つのスレッドに担当させ並列に処理する。
【００６８】
筋のサイズがＮｉ＝７、Ｎｊ＝１６、Ｎｋ＝３３である場合、１区画の表面には、２１０個（＝（（７−１）＊２＋（１６−１）＊２）＊５）の質点が存在する。そのため、１対の区画の情報量は、５０４０Ｂ（＝２１０＊２＊３＊４）であり、１ブロック内のシェアードメモリのサイズは、上述したように約数十ＫＢであるため、運動解析装置１００は、１対の区画の情報を１ブロック内のシェアードメモリに割り当てることができる。これにより、運動解析装置１００は、アクセス速度の速いシェアードメモリを有効に利用して干渉深度計算を並列に処理することができる。
【００６９】
［４  筋モデルおよび骨モデルの統合］
筋モデル等の形状が変化するモデルは、形状が変化しない剛体モデルに組み合わせることができる。図８を参照して、剛体モデルと、筋モデルとを組み合わせた筋骨格モデルについて説明する。以下では、剛体モデルの一例である骨モデルを例に挙げて筋骨格モデルの説明を行うが、剛体モデルは、骨モデルに限定されない。図８は、筋骨格モデルを概略的に示す図である。
【００７０】
筋骨格モデルを扱うためには、運動解析装置１００は、骨モデルだけでなく、筋モデルの運動方程式（上記式（１）参照）も同時に扱う必要がある。運動解析装置１００は、２種の運動方程式を同時に扱うために、筋の端部に含まれる質点（以下、「端点」ともいう。）が骨に対して不動であるという拘束条件の元に、両運動方程式の計算を行う。端点とは、筋の始端（すなわち、ｋ＝０の断面）と終端（すなわち、ｋ＝Ｎｋの断面）とに含まれる質点のことをいう。
【００７１】
骨モデルと筋モデルとの間の力のやり取りは、端点で行われる。筋モデルが骨モデルに与える力は、図８（Ａ）に示される力ベクトル「ｆ1」および「ｆ2」である。
【００７２】
骨モデルと筋モデルとの間の力のやり取りは、骨モデルと筋モデルとの干渉点においても行われる。当該干渉点においては、大きさが等しい反対方向の反発力「ｆCol」のそれぞれが骨モデルおよび筋モデルのそれぞれに与えられる。以上をまとめると、筋モデルから受ける力を組み込んだ骨モデルの運動方程式は、図８に示される上腕骨を例に挙げると以下の式（７），（８）で表わされる。
【００７３】
【数７】
0006614645.tif 000008
【００７４】
【数８】
0006614645.tif 000009
【００７５】
ここで、「ｍ1」は、上腕の質量を表わす。「g」は、重力加速度を表わす。「Ｆs」は、肩関節の関節間力を表わす。「Ｆe」は、肘関節の関節間力を表わす。「ｆi,jEnd」は、ｊ番目の筋におけるi番目の筋線維が上腕骨に与える力を表わす。「ａg1」は、上腕重心位置の加速度を表わす。「Ｌs」は、上腕重心位置から肩関節までのベクトルを表わす。「Ｌe」は、上腕重心位置から肘関節までのベクトルを表わす。「ｌi,jEnd」は、上腕重心位置からｊ番目の筋のi番目の端点までのベクトルを表わす。「ｌCol」は、上腕重心位置から干渉点までのベクトルを表わす。Ｉ1は、上腕の慣性テンソルを表わす。ドット付の「ω1」は、上腕の角加速度ベクトルを表わす。ドット無しの「ω1」は、上腕の角速度ベクトルを表わす。
【００７６】
なお、端点は、筋モデルの上記式（１）の運動方程式で表わされるものの、骨に対して不動であるという拘束条件があるため、実質的には骨モデルのシミュレーション結果に従うべき質点である。つまり、端点については、運動解析装置１００は、骨モデルのシミュレーション結果を参照して１タイムステップ後の位置を更新する。一方、端点以外の質点については、運動解析装置１００は、筋モデルのシミュレーション結果をそのまま用いて１タイムステップ後の位置を更新する。このように、運動解析装置１００は、端点とそれ以外の質点とを別に扱うことで、骨モデルと筋モデルとを統合的に扱うことができる。
【００７７】
［５  運動解析装置１００の制御構造］
図９を参照して、運動解析装置１００の制御構造について説明する。図９は、運動解析装置１００が実行する処理の一部を表わすフローチャートである。図９の処理は、ＣＰＵ１０２（図１０参照）およびＧＰＵ１０４（図１０参照）がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子その他のハードウェアによって実行されてもよい。
【００７８】
ＧＰＵ１０４は、筋形状および関節角度の情報が与えられたことに基づいて、ステップＳ１０の処理を開始する。ステップＳ１０において、ＧＰＵ１０４は、各筋モデルのＯＢＢを算出するためのカーネルを実行する。より具体的には、運動解析装置１００は、各筋を長手方向に複数の区画（たとえば、８区画）に分割し、各区画のＯＢＢを算出する。ＯＢＢの算出によって、各区画を近似した直方体の中心点の座標と、当該直方体の傾きを表わす方向ベクトルと、各軸方向についての当該直方体の長さとが得られる。
【００７９】
ステップＳ１２において、ＧＰＵ１０４は、ブロードフェイズにおける干渉判定を行うためのカーネルを実行する。ブロードフェイズでは、筋モデルと他の物体（たとえば、骨モデルや他の筋モデル等）との大まかな干渉判定が行われる。運動解析装置１００は、筋モデルを構成する複数のＯＢＢと、他の物体を構成する複数のＯＢＢとの全てのＯＢＢペアの組み合わせについて干渉判定を行う。干渉判定には、たとえば、ＧＪＫアルゴリズムが用いられる。
【００８０】
ステップＳ１４において、ＧＰＵ１０４は、ナローフェイズにおける干渉判定を行うためのカーネルを実行する。より具体的には、ＧＰＵ１０４は、ステップＳ１２で衝突判定されたＯＢＢペアについて、一方のＯＢＢに含まれる全ての三角形と、他方のＯＢＢに含まれる全ての三角形の三角形ペアの組み合わせについて総当たりで干渉を判定する。当該干渉判定には、たとえば、ＧＪＫアルゴリズムが用いられる。
【００８１】
ステップＳ１６において、ＧＰＵ１０４は、ステップＳ１４で干渉があると判定された三角形ペアを用いて干渉深度を計算する。より具体的には、ＧＰＵ１０４は、衝突時における当該三角形ペアの重なり度合いに応じて干渉深度を計算する。干渉深度の計算には、たとえば、ＥＰＡアルゴリズムが用いられる。ＧＰＵ１０４は、算出された干渉深度に応じて反発力「ｆCol」を算出する。干渉深度が大きいほど、反発力「ｆCol」は大きくなる。
【００８２】
ステップＳ２０において、ＣＰＵ１０２は、筋モデルＡに干渉した物体Ｂの種類に応じて、反発力「ｆCol」をステップＳ２２の筋モデルの変形シミュレーションとステップＳ３０の骨モデルの剛体シミュレーションとに割り振る。物体Ｂが骨モデルであった場合には、ＣＰＵ１０２は、筋Ａが骨Ｂから受ける反発力「ｆCol」をＳ２２に割り振り、骨Ｂが筋Ａから受ける反発力「-ｆCol」をＳ３０に割り振る。物体Ｂが筋モデルであった場合には、ＣＰＵ１０２は、筋Ａが筋Ｂから受ける反発力「ｆCol」および筋Ｂが筋Ａから受ける反発力「-ｆCol」をともにＳ２２へ引き渡す。
【００８３】
ステップＳ２２において、ＧＰＵ１０４は、筋モデルの変形をシミュレーションするためのカーネルを実行する。より具体的には、ＧＰＵ１０４は、ステップＳ２０で算出された反発力「ｆCol」を筋モデルの運動方程式（上記式（１）参照）に代入した上で当該運動方程式を解く。これにより、次のタイムステップの筋形状情報が得られる。同時に、筋が端点で骨に及ぼす力「ｆEnd」が得られる。
【００８４】
ステップＳ３０の処理は、ＣＰＵ１０２によって実行される。ステップＳ３０において、ＣＰＵ１０２は、骨モデルのシミュレーションを行う。より具体的には、ＣＰＵ１０２は、ステップＳ２０で算出された反発力「ｆCol」とステップＳ２２で算出された端点における力「ｆEnd」とを骨モデルの運動方程式（上記式（７），（８）参照）に代入した上で当該運動方程式を解く。これにより、次のタイムステップの関節角度情報が得られる。
【００８５】
骨モデルの新たな関節角度情報と筋モデルの新たな形状情報に基づいて、図９の各ステップの処理が再び実行される。図９の各ステップの処理が繰り返されることで、干渉計算、変形モデル、剛体モデルの全てが統合されたシミュレーションを実現することができる。
【００８６】
［６  運動解析装置１００のハードウェア構成］
図１０を参照して、運動解析装置１００のハードウェア構成の一例について説明する。図１０は、運動解析装置１００の主要なハードウェア構成を示すブロック図である。図１０に示されるように、運動解析装置１００は、ＲＯＭ（Read  Only  Memory）１０１と、ＣＰＵ１０２と、ＲＡＭ（Random  Access  Memory）１０３と、ＧＰＵ１０４と、ネットワークインターフェース１０５と、ディスプレイインターフェース１０６と、記憶装置１１０とを含む。
【００８７】
ＲＯＭ１０１は、オペレーティングシステム、運動解析装置１００で実行される制御プログラム等を格納する。ＣＰＵ１０２は、オペレーティングシステムや運動解析プログラム１１４等の各種プログラムを実行することで、運動解析装置１００の動作を制御する。ＲＡＭ１０３は、ワーキングメモリとして機能し、プログラムの実行に必要な各種データを一時的に格納する。
【００８８】
ＧＰＵ１０４は、筋モデルの運動解析処理を高速化するための演算装置である。ＧＰＵ１０４は、ブロードフェイズにおけるＯＢＢの算出（図９のステップＳ１０参照）、ブロードフェイズにおける干渉判定（図９のステップＳ１２参照）、ナローフェイズにおける干渉判定（図９のステップＳ１４参照）、干渉深度の計算（図９のステップＳ１６参照）、および筋モデルの各質点についての運動方程式（図９のステップＳ２２）等の各ステップ内の計算を並列に行う。
【００８９】
ディスプレイインターフェース１０６は、運動解析装置１００とディスプレイ１０７とを接続するための端子である。ディスプレイ１０７は、たとえば、液晶ディスプレイ、有機ＥＬ（Electro  Luminescence）ディスプレイ、またはその他の表示機器等を含む。運動解析プログラム１１４が実行されることにより、ディスプレイ１０７は、筋モデルや骨モデルの運動解析結果を表示する。
【００９０】
記憶装置１１０は、たとえば、ハードディスクや外付けの記憶装置等の記憶媒体である。一例として、記憶装置１１０は、上述の質点情報１１２（図２参照）と、本実施の形態に従う各種の処理を実現するための運動解析プログラム１１４とを格納する。
【００９１】
運動解析プログラム１１４は、単体のプログラムとしてではなく、任意のプログラムの一部に組み込まれて提供されてもよい。この場合、任意のプログラムと協働して本実施の形態に従う処理が実現される。このような一部のモジュールを含まないプログラムであっても、本実施の形態に従う運動解析装置１００の趣旨を逸脱するものではない。さらに、本実施の形態に従う運動解析プログラム１１４によって提供される機能の一部または全部は、専用のハードウェアによって実現されてもよい。さらに、運動解析装置１００とサーバとが協働して、本実施の形態に従う処理を実現するようにしてもよい。さらに、少なくとも１つのサーバが本実施の形態に従う処理を実現する、所謂クラウドサービスの形態で運動解析装置１００が構成されてもよい。
【００９２】
［７  まとめ］
（７．１  利点）
（ａ）大量質点のバネマスダンパモデルとＧＰＵ並列計算の採用
運動解析装置１００は、筋形状をシミュレーションするためには、大量の質点の運動方程式を解く必要がある。一つ一つの質点の計算量は微々たるものであっても、多数の質点の計算が直列に処理されると計算時間が膨大になってしまう。このことを解決するために、運動解析装置１００は、一つ一つの質点の計算を並列に解くことができるバネマスダンパモデルを採用し、各筋線維の計算をＧＰＵの各スレッドに割り当てて並列処理を行う。これにより、計算時間の大幅に短縮される。実際に上記並列処理を利用すると、質点数が約４倍や約１８倍になったとしても、計算時間は１．１倍にしか増えなかった。このことから、並列計算のメリットが十分に発揮されていることが分かる。
【００９３】
（ｂ）形状を３次元格子座標系で一元的に管理
筋は、紡錘状、細長い、扁平等、様々な形状を有する。運動解析装置１００は、これらの形状を一元的に表わすために、筋モデルを３次元格子座標系で表わす。また、この表現方法は、異なる部位（たとえば、腱、腱膜、靭帯）にも適用することができる。そのため、運動解析装置１００は、全ての変形可能な部位のシミュレーションを、同一のＧＰＵカーネル関数で計算することが可能になる。その結果、処理の並列性が担保され、処理が高速化される。
【００９４】
（ｃ）解剖学的に妥当な筋走行を再現
本来、筋は互いに接触して固有の形状を保っている。特に、肩関節等の複雑な関節周りでは、非常に多数の筋が重なっているため、それらの筋の形状を正確に表わすためには、多数の筋の変形が同時にシミュレーションされる必要がある。本実施の形態に従う運動解析装置１００は、ＧＰＵを用いることで多数の筋の変形を同時にシミュレーションできる初めての筋モデルを採用した。その結果、運動解析装置１００は、線で表わされた従来の筋モデルにはない高い精度で筋本来の形状を表現できる。
【００９５】
（ｄ）剛体モデルと変形モデルとの統合
骨モデル等の剛体モデルと、筋モデル等の変形モデルとを統合した筋骨格モデルは、従来には存在しなかった。つまり、解剖学的に妥当な筋走行を元にして、歩行や上肢到達運動等の個体レベルの運動がシミュレーションできる筋骨格モデルは本モデルが初めてである。
【００９６】
（ｅ）パーソナルコンピュータで扱える
筋モデルのシミュレーションにはパーソナルコンピュータに実装することが可能なＧＰＵが用いられる。そのため、スーパーコンピュータやクラスタパソコン等の特殊な計算環境を利用できないユーザであっても、筋モデルの形状を正確にシミュレーションすることができる。
【００９７】
（７．２  利用例）
（ａ）肩こりを考慮した人間工学的デザイン
従来より、体に負担のない人間工学的デザインを作成するために筋骨格モデルを利用しようとする試みがあった。しかしながら、実際には、肩や腰の精度のいいモデルが存在せず、肩こりや腰痛といった重要な部位の定量的な解析は十分に行われていなかった。本モデルでは、多数の筋が複雑に重なり合う肩や腰等の部位で正確な筋走行を再現できるため、肩こりや腰痛について精度よく定量的な解析を行うことができる。
【００９８】
（ｂ）スポーツ障害やパフォーマンス
スポーツ現場において、肩はスポーツ障害やパフォーマンス向上にとって非常に重要な部位である。しかしながら、これまで肩周りの筋走行について精度のいいモデルが存在しなかった。そのため、肩周りの定量的な解析はほとんど行われていなかった。本モデルを用いることによって、スポーツ現場のコーチや医師が求めるレベルの定量的な解析が行えるようになることが期待される。
【００９９】
（ｃ）脳科学での利用
脳科学では、筋骨格系が有する多数の筋を脳がどのように制御しているのかに注目が集まっている。その一つの仮説に筋シナジー仮説がある。この仮説は、多くの筋を個別に制御すると計算コストが高くなるが、複数の筋を協調して活動させる神経メカニズムが存在すれば、計算コストが低くなり効率よく運動制御が行えるというものである。この仮説を定量的に検証する際には、筋骨格系の正確な筋走行の情報が必要であるが、これまでのモデルでは筋走行情報（特に肩周辺）を正確に与えることができず、結果的に筋シナジー仮説の定量的な検証が十分に行えなかった。本モデルを用いることで、筋シナジー仮説の定量的検証にも貢献できると考えられる。
【０１００】
（ｄ）インタラクティブな解剖学の３Ｄ教科書
近年、２次元の紙面では伝えられない解剖学的情報を伝える手段として、コンピュータグラフィックを利用した３Ｄ（Dimensional）教科書に注目が集まっている。３Ｄ教科書は、筋骨格系を構成する様々な要素の形状を、様々な視点や階層から眺めることができるというメリットを有する。しかしながら、体の姿勢の変化に対応できるものは少なく、ほとんどの３Ｄ教科書では姿勢は固定されたままである。本モデルを用いることで、関節の動きに伴って変形する筋を表示することが可能となる。また、筋が肥大または萎縮した場合に、筋走行が変化する様子も表わすことができる。体の姿勢（関節角度）や筋の太さ等の変数をユーザが変更することによって、それに応じた筋走行の変化をインタラクティブに表示することも可能になるため、理学療法士、整形外科、スポーツインストラクター等にとって特に有用な情報を提示できるようになる。
【０１０１】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１０２】
５０  筋モデル、１００  運動解析装置、１０１  ＲＯＭ、１０２  ＣＰＵ、１０３  ＲＡＭ、１０４  ＧＰＵ、１０５  ネットワークインターフェース、１０６  ディスプレイインターフェース、１０７  ディスプレイ、１１０  記憶装置、１１２  質点情報、１１４  運動解析プログラム、１５０  演算部、１５１  第１算出部、１５２  第２算出部、１５３  第３算出部、１６０  位置算出部。
【図１】
0006614645.tif 000010
【図２】
0006614645.tif 000011
【図３】
0006614645.tif 000012
【図４】
0006614645.tif 000013
【図５】
0006614645.tif 000014
【図６】
0006614645.tif 000015
【図７】
0006614645.tif 000016
【図８】
0006614645.tif 000017
【図９】
0006614645.tif 000018
【図１０】
0006614645.tif 000019