JP2011065492A - 画像処理装置、画像処理方法、ならびに、プログラム - Google Patents

画像処理装置、画像処理方法、ならびに、プログラム Download PDF

Info

Publication number
JP2011065492A
JP2011065492A JP2009216332A JP2009216332A JP2011065492A JP 2011065492 A JP2011065492 A JP 2011065492A JP 2009216332 A JP2009216332 A JP 2009216332A JP 2009216332 A JP2009216332 A JP 2009216332A JP 2011065492 A JP2011065492 A JP 2011065492A
Authority
JP
Japan
Prior art keywords
control point
polygon
bone
vertex
polygons
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009216332A
Other languages
English (en)
Other versions
JP4815521B2 (ja
Inventor
邦夫 ▲高▼部
Kunio Takabe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konami Digital Entertainment Co Ltd
Original Assignee
Konami Digital Entertainment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konami Digital Entertainment Co Ltd filed Critical Konami Digital Entertainment Co Ltd
Priority to JP2009216332A priority Critical patent/JP4815521B2/ja
Publication of JP2011065492A publication Critical patent/JP2011065492A/ja
Application granted granted Critical
Publication of JP4815521B2 publication Critical patent/JP4815521B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract


【課題】仮想空間に配置される複数のポリゴンからなるオブジェクトを分割した様子を表す画像を生成する画像処理装置等を提供する。
【解決手段】画像処理装置801において、記憶部802にはオブジェクトの基本姿勢におけるボーン、制御点、グループの情報が記憶され、ボーン移動部803がボーンの移動先を求め、制御点移動部804がボーンの移動に付随して制御点の移動先を求め、配置部805は制御点が属するグループの基準位置等に基づいて頂点の位置を求めて頂点を結ぶポリゴンを仮想空間に配置し、選択部806は分割面と交差するポリゴンを選択し、分割部807は選択されたポリゴンの辺を分割面が内分する内分比に基づいて、記憶部802の制御点、グループの情報を必要最小限だけ書き換え、グループ移動部809は各グループの基準位置等を移動し、生成部808は仮想空間に配置されたポリゴンの様子を表す画像を生成する。
【選択図】図13

Description

本発明は、仮想空間に配置される複数のポリゴンからなるオブジェクトをある分割面で分割した様子を表す画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
従来から、仮想空間内に配置されるオブジェクトの外観を表す画像を生成する技術が種々提案されている。たとえば、特許文献1に開示される技術では、オブジェクトの形状が、ボーン、制御点、頂点、ポリゴンを用いて形成される。
ボーンは、人間でいう骨に相当するものであり、ボーン同士は、連結点で互いに連結される。隣接するボーン同士の相対的な位置や向きを変化させると、オブジェクトの概形が変形する。
典型的には、ボーンは、ボーンをノードとする木構造的な階層によって管理される。木構造の根ノードに対するボーン(以下「根ボーン」という。)の位置や向きは、仮想空間におけるオブジェクト全体の位置や向きを表す。親ノードのボーン(以下「親ボーン」という。)と子ノードのボーン(以下「子ボーン」という。)は直接連結されており、親ボーンに対する子ボーンの向きを変化させることで、ボーン同士の相対的な位置や向きを変化させる。
オブジェクトの外観は、ボーンの変形に伴って移動する頂点を結ぶポリゴンにテクスチャを貼ることによって形成される。このポリゴンによって形成される表面をスキンと呼ぶ。
各ボーンには、複数の制御点が対応付けられており、これらの制御点は、そのボーンと連動して動作する。すなわち、ボーンが位置や向きを変えたとしても、制御点のボーンに対する相対的な位置は、変化しない。
各頂点は、複数の制御点に重み付きで対応付けられている。ボーンが位置や向きを変化させたときの各頂点の位置は、その頂点に対応付けられた制御点の位置に、重みを付けて平均した位置とする。
また、各ボーンには初期位置、初期向きが定められており、ボーンが初期位置、初期向きをとるときには、各頂点と、その頂点に対応付けられる制御点と、が、同じ位置で重なるように構成するのが典型的である。
このような処理を行うことで、オブジェクトが変形したときに、スキンに不自然なくびれや潰れが生じることを防止することができる。
このようなオブジェクトは、仮想空間内に配置されるキャラクターやモンスターが互いに戦闘するようなゲーム等において、キャラクターやモンスターの外観を表す際にも使用されている。
特許第4011285号公報
ここで、現実世界においては、とかげの尻尾を切断した場合には、とかげ本体も切断された尻尾単体も、そのまま動き続けることがある。ゲームにおいても、キャラクターがモンスターを刀で攻撃した場合に、同様の表現を行いたい、という要望がある。
一般に、仮想空間に配置されたオブジェクトが分割面(切断面)によって分割(切断)される際に、分割されて互いに離間することとなった複数のオブジェクトの様子を、適切に画像表現できるようにしたい、という要望は強い。
さらに、オブジェクトが分割された場合であっても、必要な情報はできるだけ再利用して、メモリ使用量を抑制したい、という要望もある。
本発明は、上記のような課題を解決するもので、仮想空間に配置される複数のポリゴンからなるオブジェクトをある分割面で分割した様子を表す画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
本発明の第1の観点に係る画像処理装置は、記憶部、ボーン移動部、制御点移動部、配置部、選択部、分割部、生成部、グループ移動部を備え、以下のように構成する。
すなわち、記憶部には、以下の情報が記憶される。
(a)互いに連結された複数のボーンの初期位置および初期向き。
(b)複数の制御点の初期位置。
(c)複数の制御点のそれぞれが複数のボーンのそれぞれに依存する重みを表す依存情報。
(d)複数のポリゴンのそれぞれが複数の制御点のいずれを頂点とするかを表す頂点情報。
(e)複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報。
(f)グループのそれぞれに対する仮想空間内の基準位置および基準向き。
ここで、分割前のオブジェクトの外観は、1つのグループに属するポリゴンによって形成されるが、このオブジェクトが2つに分割されると、ポリゴンが属するグループも2つになる。また、切断された各部分が独立して移動できるようにするため、グループごとに、基準位置と基準向きが定められる。
一方で、各情報が分類されて記憶されることにより、後述するように、オブジェクトが分割された場合であっても、各情報のコピーや削除、書き換えをできるだけしないようにする。
一方、ボーン移動部は、複数のボーンが互いに連結される相対的な向きを変化させるときの、複数のボーンのそれぞれの初期位置および初期向きからの位置ならびに向きの変化量(以下「ボーン変化量」という。)を求める。
ボーンの移動は、ユーザの指示に基づいて行われることもあるし、時間経過にあらかじめ対応付けられた変化量に基づいて行われることもあるし、あるアルゴリズムや乱数にしたがって行われることもある。各ボーンについてボーン変化量を決定する手法には、たとえば以下に掲げる手法等、種々の態様を採用することができる。
(a)木構造において、親ボーンから子ボーンへ、の方向に位置や向きの変化量が伝播していくフォワードキネマティクス法。
(b)木構造において、葉ノードのボーン(以下「葉ボーン」という。)を目的位置に移動させ、根ボーンに向かって位置や向きの変化量を伝播させるインバースキネマティクス法。
複数のボーンから構成されるオブジェクト全体の仮想空間内における位置や向きは、オブジェクト全体に対応するグループの基準位置や基準向きにより表現される。
また、基準位置や基準向きは、仮想空間内における根ボーンの位置や向きを表す情報でもある。
したがって、ボーン変化量として、根ボーンに固定された座標系における各ボーンの座標値そのものを利用することも可能である。
さらに、制御点移動部は、以下の機能を果たす。
(a)複数の制御点のそれぞれについて、複数のボーンのそれぞれが求められた変化量だけ移動するのに連動して、当該制御点の位置を記憶される初期位置から移動するときの、当該制御点の位置の変化量(以下「連動変化量」という。)を求める。
(b)当該求められた連動変化量のそれぞれに、当該制御点が当該ボーンに依存する重みを適用して重み付き平均をとることにより、当該制御点の位置の変化量(以下「制御点変化量」という。)を求める。
たとえば、制御点がN個、ボーンがM個用意されている状況を考える。j番目のボーンが移動したときに、j番目のボーンに対する相対的な位置が変化しないように、i番目の制御点を移動したときの連動変化量を表すベクトルをr[i,j]とする。また、i番目の制御点がj番目のボーンに依存する重みをw[i,j]とする。
すると、i番目の制御点の制御点変化量は、
〔Σj=1 M w[i,j]r[i,j]〕/〔Σj=1 M w[i,j]〕
のように計算することができる。
制御点変化量は、その制御点に対応付けられる頂点の位置や向きの変化を表すベクトルである。
なお、w[i,j] = 0の場合、i番目の制御点はj番目のボーンに依存しないこととなるので、この場合にはr[i,j]を求める必要はない。
多くの場合、制御点が依存するボーンの数は、1個〜4個程度とすれば十分である。そこで、後述するように、制御点が依存するボーンの数には、上限を設けるのが典型的である。
さらに、配置部は、複数のポリゴンのそれぞれについて、当該ポリゴンが属するグループに対する基準位置および基準向きに対する当該ポリゴンの頂点の相対的な位置を、当該頂点に対する制御点について求められた制御点変化量とすることにより、当該ポリゴンを当該仮想空間内に配置する。
制御点変化量は、基準位置および基準向きに対する相対的な位置および向きに相当する情報である。また、上記のように、基準位置および基準向きは、ポリゴンが属するグループごとに定められる。
そこで、あるポリゴンを仮想空間内に配置する際には、まず、そのポリゴンが属するグループを調べ、そのグループの基準位置および基準向きを取得する。ついで、そのポリゴンの頂点に対する制御点を調べ、その制御点の制御点変化量を取得する。
すると、仮想空間内の頂点の位置および向きは、
(a)基準位置および基準向きと、
(b)頂点の初期位置および初期向きと、
(c)制御点変化量と、
を座標変換することによって得られることになる。
なお、上記のように、頂点の初期位置および初期向きを、根ボーンの初期位置および初期向きと一致させる手法もありうる。この場合は、基準位置および基準向きに制御点変化量を加算すれば、仮想空間内における位置および向きが得られる。
1つの頂点は、一般には、複数のポリゴンで共有される。また、ある頂点を共有するポリゴンは、同じグループに属する場合が殆どである。したがって、
(a)どのグループを基準として頂点の位置を得たか、の情報と、
(b)得られた頂点の位置と、
を対応付けてキャッシュすることにより、計算量を抑制することができる。
上記の構成によって、グループごとに分類されたポリゴンが、仮想空間内に配置されることになるので、後述するように、仮想空間内の様子をあらわす画像を生成することができる。
複数のボーン全体の情報をあるグループのポリゴンと、別のグループのポリゴンと、が、共有することもできる。たとえば、2つに分離可能なオブジェクトを考える。
当該オブジェクトの概形は、一群のボーン情報によって表現される。このオブジェクトが分離している場合には、各グループの基準位置と基準向きが異なる。このオブジェクトが分離しておらず一体となっている場合には、各グループの基準位置と基準向きが一致している。
すなわち、オブジェクトが分割されているか否かに関わらず、ボーンに関する情報そのものを、追加したり削除したり分離したり複製したりする必要がない。これは、本発明の特徴の一つである。
そして、選択部は、複数のポリゴンのうち、同じグループに属するポリゴンについて、当該ポリゴンの有する辺が仮想空間に配置された分割面と交差するポリゴンを選択する。
同じグループに属するポリゴンは、互いの相対的な位置を変化させることはあるものの、仮想空間内を一体となって移動する。分割面は、これらのポリゴンを、複数のグループに分割する。
分割面は、仮想空間内に配置されているポリゴンと交差するのであるから、分割面が切断するのは、基準位置・基準姿勢ならびに初期位置・初期姿勢のオブジェクトの表面を構成するポリゴンではなく、仮想空間内で移動したり変形したりしたオブジェクトの表面を構成するポリゴンである。
たとえば、敵キャラクターのオブジェクトが刀によって切断された場合を考える。この場合、刀の移動の軌跡が分割面に相当し、分割面と交差するポリゴンは、刀と衝突して切り裂かれた皮膚の部位に相当する。
なお、分割面の形状を仮想空間内に配置される円や扇型あるいは平面等、平らな形状とすれば、交差判定の計算を容易にすることができる。
一方、分割部は、以下の機能を果たす。
(a)選択されたポリゴンにおいて、分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求める。
(b)当該辺の頂点とされる制御点について記憶部に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求める。
(c)当該求められた内分位置を新たな制御点の初期位置として、記憶部に記憶させる。
(d)当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、記憶部に記憶させる。
(e)選択されたポリゴンに対する頂点情報を、記憶部から削除することにより、分割されたポリゴンを消去する。
(f)選択されたポリゴンを分割面により分割することにより得られる新たなポリゴンの頂点を、分割面により分割されない辺の頂点とされる制御点ならびに分割面により分割される辺の交点に対する制御点とする頂点情報を、記憶部に記憶させることにより、新たなポリゴンを生成する。
(g)記憶部に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループ情報に分割する。
(h)当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きとする。
上記(a)において選択されたポリゴンとは、分割面と交差したポリゴンのことである。ポリゴンが凸な多角形で構成されており、分割面が平面状の形状である場合、ポリゴンの辺のうち2つが分割面と交差する。また、その交点を結ぶ線分が、分割面とポリゴンとが交差する線分に相当する。
なお、ポリゴンの頂点が交点と偶然一致した場合には、当該頂点から伸びる2つの辺のうちいずれか一方を任意に選択し、当該交点は選択された辺を0対1に内分する、と考えれば良い。
上記(b)では、オブジェクトが移動・変形した後のポリゴンが分割面と交差する割合に基づいて、変形後のポリゴンの交点が、変形前のポリゴンのどの位置に相当するか、を求めている。
上記のように、ポリゴンの頂点の位置は、1つまたは複数のボーン変化量に依存する。したがって、ここで得られる内分位置は、変形前のポリゴンの辺が切断される位置を近似するものである。
上記(c)では、内分位置を初期位置とする新たな制御点を追加しており、上記(d)では、追加される制御点が、どのような重みでどのボーンに依存するか、を定めている。
新たな制御点の位置は、ポリゴンの辺を、上記(a)で得られた内分比で内分することによって得られる。
また、新たな制御点がj番目のボーンに依存する重みを求めるためには、後述する内分比を用いる手法のほか、以下のような手法を混合に用いることができる。
(1)新たな制御点が内分する2つの頂点のうち、当該内分点に近い方の頂点の重みをそのまま利用する手法。
(2)ボーンごとに、新たな制御点が内分する2つの頂点の重みの平均を用いる手法。
(3)ボーンごとに、新たな制御点が内分する2つの頂点の重みのうち大きい方を、採用する手法。
(4)ボーンごとに、新たな制御点が内分する2つの頂点の重みのいずれかを、ランダムに採用する手法。
上記(e)では、分割面と交差するポリゴンの頂点情報を削除している。一方で、分割面と交差するポリゴンの頂点情報は、変更する必要がない。
上記(f)では、削除されたポリゴンにかえて、上記(c)で追加された制御点を頂点に含むようなポリゴンを追加することとしている。
したがって、上記(e)と上記(f)により、分割面に交差するポリゴンが、複数のポリゴンに分割されることになる。
上記(g)は、ポリゴンのグループ分けを行うものである。本発明は、1つのグループに属するポリゴンが分割面により分離される状況を考えている。多くの場合は、分割面によって、1つのグループが2つのグループに分割される。
ただし、分割面の大きさや形状によっては、1つのグループが3つ以上のグループに分割されることもありうるし、切断されたとしても、全体として1つのグループのまま、ということもありうる。
そこで、共通する辺を持つ2つのポリゴンは、互いに連結されている、と考えることとし、この連結性によって、ポリゴンが属するグループを決めることとする。
なお、分割面との交差によって新たに追加された制御点を頂点とする辺は、ポリゴン同士の連結性の判定の対象にはしない。
上記(h)は、グループごとに基準位置と基準向きを定めるものである。切断の直後は、切断後のグループの基準位置と基準向きは一致するので、切断後のグループは、分割面を境界に、互いに密着することになる。
本発明によれば、オブジェクトが移動・変形した後に切断された状況に基づいて、移動・変形がされる前の状況において一部のポリゴンを分割し、ポリゴン全体のグループ分けを再度行うことにより、オブジェクトの位置や形状を定める種々の情報の複製・削除・変更等をできるだけ抑制するとともに、簡易な計算によってオブジェクトの切断をシミュレートすることができるようになる。
また、本発明の画像生成装置は、グループ移動部、生成部をさらに備え、以下のように構成することができる。
すなわち、グループ移動部は、記憶部に記憶されるグループ情報のそれぞれに対する基準位置および基準向きを変化させ、配置部に複数のポリゴンを再度配置させる。
たとえば、時間の経過とともに、両者のずれが大きく変化すると、オブジェクトの切断された部位同士が次第に離間していく状況が再現できる。
一方、生成部は、仮想空間に配置された複数のポリゴンを、当該仮想空間に配置される視点から当該仮想空間に配置される視線の方向に見た様子を表す画像を生成する。
なお、一旦形成されたグループを新たな分割面によって切断する場合にも、上記の構成がそのまま利用できる。たとえば、ゲームにおいてプレイヤーが敵キャラクターに何回も刀を振り下ろして、敵キャラクターを細切れにするような状況に適用することも可能である。
画像の生成が所定の時間間隔で繰り返し行われ、生成されるごとに画像が画面に表示されると、オブジェクトが切断される様子を表す動画が提示されることになる。
本発明によれば、オブジェクトが分割された状況において、グループごとにポリゴンを移動することによって、オブジェクトが切断された様子を表す画像を生成することができるようになる。
また、本発明の画像生成装置であって、分割部は、分割面と交差する辺の頂点に対する依存情報のそれぞれの重みを内分比で内分することにより当該依存情報を混合して、当該内分された結果の依存情報を新たな制御点に対する依存情報とするように構成することができる。
すなわち、内分される辺の頂点がそれぞれp番目、q番目であり、内分比がA:Bであるとする。すると、新たな制御点がj番目のボーンに依存する重みは、
〔B×w[p,j] + A×w[q,j]〕/〔A + B〕
のように計算することができる。
本発明によれば、分割面が辺を切断する内分比に基づいて、内分点をなす新たな制御点の重みを計算することにより、簡易な計算で重みを得ることができるようになる。
また、本発明の画像生成装置において、依存情報のそれぞれにおいて、非0である重みの個数には上限があり、内分された結果の依存情報において非0である重みの個数が当該上限を超える場合、当該重みが小さい順に、当該重みを0に修正して、混合結果の依存情報における非0である重みの個数を当該上限とするように構成することができる。
上記のように、ある制御点が依存するボーンの数に上限を設けた場合、新たな制御点が依存するボーンの数も、その上限を超えないようにしなければならない。
そこで、1番目のボーンに依存する重みからM番目のボーンに依存する重みまでのM個の重みを、大きいものから順に上限の個数まで選ぶことにするのである。
ここで、当該上限をL個とした場合を考える。すると、新たな制御点に対して内分計算によって得られる重みのうち、非0となる重みの個数は、L個〜2×L個のいずれかとなる。
そこで、これらの中から、重みの値が大きい順にL個を選択し、残りについては、重みを0に修正することになる。
なお、ある制御点がM個のボーンに依存する重みは、M個の要素を持つベクトルと考えることができるが、このベクトルの要素の値のほとんどは0である。すなわち、このベクトルは、疎なベクトルである。したがって、このベクトルは、M個の要素を持つ1次元配列として実装するのではなく、非0の重みのインデックスと、そのインデックスに対応する重みと、の対がL個含まれる配列で表現することにより、メモリの使用量を抑制することが可能である。
本発明によれば、制御点が依存するボーンの数を適切に抑制して、計算量やメモリの使用量を抑制することができるようになる。
また、本発明の画像生成装置において、複数のポリゴンはいずれも三角形であり、選択されたポリゴンが、点A、B、Cを頂点とする三角形ABCであり、辺ABが、交点Dで分割され、辺ACが、交点Eで分割され、角EDCと角DCBの和が角DEBと角EBCの和以下である場合、新たなポリゴンを、三角形ADE、三角形DEB、三角形EBCとするように構成することができる。
仮想空間内に配置されるオブジェクトの表面を形成するポリゴンは、三角形もしくは四角形で構成されるのが一般的であるが、本発明では、ポリゴンの形状を三角形に限定することとしている。
ここで、三角形の形状が細長くなると、画像を生成した際に、不自然なくびれや潰れが生じやすくなる。
そこで、本発明では、ある三角形を分割して3つの三角形を得る際に、三角形が細長くならないようにするため、頂点を挟む辺同士の角度を利用する。
本発明によれば、ポリゴンを分割する際に、分割後のポリゴンの形状を適切に選択することにより、生成される画像が不自然になることをできるだけ防止することが可能となる。
また、本発明の画像生成装置は、以下のように構成することができる。
すなわち、複数のボーンは、各ボーンをノードとし、連結された2つのボーンのうち、一方のボーンを親ノードに、他方のボーンを子ノードに、それぞれ割り当てた木構造に階層化される。
そして、親ノードのボーン(以下「親ボーン」という。)に固定された座標系における子ノードのボーン(以下「子ボーン」という。)が当該親ボーンに連結される連結点の座標、ならびに、当該子ボーンの向きを表すオイラー角もしくはクォータニオンにより、当該子ボーンの初期位置および初期向きが表現される。
さらに、ボーン移動部は、子ボーンの向きを表すオイラー角もしくはクォータニオンを変化させることにより、当該親ボーンに対する当該子ボーンの相対的な向きを変化させる。
本発明は、上記発明の好適実施形態に係るもので、単体のボーンの位置や姿勢は、そのボーンの親となるボーンに対する相対的な位置や姿勢によって定められる、とするものである。
本発明によれば、ボーンを階層的に管理することで、フォワードキネマティクスやインバースキネマティクスに基づいてオブジェクトの概形を適切に変化させることができるようになる。
本発明のその他の観点に係る画像処理方法は、記憶部、ボーン移動部、制御点移動部、配置部、選択部、分割部、生成部、グループ移動部を有する画像処理装置が実行する。
そして、本発明の画像処理方法は、ボーン移動工程、制御点移動工程、配置工程、選択工程、分割工程を備える。
ここで、記憶部には、互いに連結された複数のボーンの初期位置および初期向きと、複数の制御点の初期位置と、当該複数の制御点のそれぞれが複数のボーンのそれぞれに依存する重みを表す依存情報と、複数のポリゴンのそれぞれが複数の制御点のいずれを頂点とするかを表す頂点情報と、複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報と、グループのそれぞれに対する仮想空間内の基準位置および基準向きと、が記憶される。
一方、ボーン移動工程では、ボーン移動部が、複数のボーンが互いに連結される相対的な向きを変化させるときの、複数のボーンのそれぞれの初期位置および初期向きからの位置ならびに向きの変化量(以下「ボーン変化量」という。)を求める。
さらに、制御点移動工程では、制御点移動部が、複数の制御点のそれぞれについて、複数のボーンのそれぞれが求められた変化量だけ移動するのに連動して、当該制御点の位置を記憶される初期位置から移動するときの、当該制御点の位置の変化量(以下「連動変化量」という。)を求め、当該求められた連動変化量のそれぞれに、当該制御点が当該ボーンに依存する重みを適用して重み付き平均をとることにより、当該制御点の位置の変化量(以下「制御点変化量」という。)を求める。
そして、配置工程では、配置部が、複数のポリゴンのそれぞれについて、当該ポリゴンが属するグループに対する基準位置および基準向きに対する当該ポリゴンの頂点の相対的な位置を、当該頂点に対する制御点について求められた制御点変化量とすることにより、当該ポリゴンを当該仮想空間内に配置する。
一方、選択工程では、選択部が、複数のポリゴンのうち、同じグループに属するポリゴンについて、当該ポリゴンの有する辺が仮想空間に配置された分割面と交差するポリゴンを選択する。
さらに、分割工程では、分割部が、選択されたポリゴンにおいて、分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求め、当該辺の頂点とされる制御点について記憶部に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求め、当該求められた内分位置を新たな制御点の初期位置として、記憶部に記憶させ、当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、記憶部に記憶させ、選択されたポリゴンに対する頂点情報を、記憶部から削除することにより、分割されたポリゴンを消去し、選択されたポリゴンを分割面により分割することにより得られる新たなポリゴンの頂点を、分割面により分割されない辺の頂点とされる制御点ならびに分割面により分割される辺の交点に対する制御点とする頂点情報を、記憶部に記憶させることにより、新たなポリゴンを生成し、記憶部に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループ情報に分割し、当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きとする。
本発明のその他の観点に係るプログラムは、コンピュータを上記の画像処理装置として機能させるように構成する。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
本発明によれば、仮想空間に配置される複数のポリゴンからなるオブジェクトをある分割面で分割した様子を表す画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
典型的な情報処理装置の概要構成を示す模式図である。 本実施形態の画像処理装置にて処理されるオブジェクトのボーン、制御点、頂点の様子を示す説明図である。 本実施形態の画像処理装置にて処理されるオブジェクトのボーン、制御点、頂点の様子を示す説明図である。 本実施形態の画像処理装置にて処理されるオブジェクトのスキンをなすポリゴンと頂点の様子を示す説明図である。 本実施形態の画像処理装置にて処理されるオブジェクトのスキンをなすポリゴンと頂点の様子を示す説明図である。 オブジェクトが分割面によって切断される状況を表す説明図である。 オブジェクトが分割面によって切断される状況を表す説明図である。 変形後に切断されることにより生じた新たなポリゴンと頂点の様子を示す説明図である。 切断されて生じたポリゴンと頂点の基本姿勢における様子を示す説明図である。 オブジェクトの分割後のポリゴンと頂点の基本姿勢における様子を示す説明図である。 仮想空間内において各グループが異なる位置、向きに配置された場合の様子を示す説明図である。 仮想空間内において各グループが異なる位置、向きに配置された場合の様子を示す説明図である。 本実施形態に係る画像処理装置の概要構成を示す模式図である。 本実施形態に係る画像処理装置が実行する画像処理の制御の流れを示すフローチャートである。 複雑な形状のオブジェクトが切断される様子を示す説明図である。 複雑な形状のオブジェクトが切断される様子を示す説明図である。 複雑な形状のオブジェクトが切断される様子を示す説明図である。 ポリゴンが分離される場合に、どのような分離が考えられるか、を示す説明図である。 ポリゴンが分離される場合に、どのような分離が考えられるか、を示す説明図である。
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
図1は、プログラムを実行することにより、本実施形態の画像処理装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
本図に示す情報処理装置100は、いわゆるコンシューマゲーム機に相当するもので、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、インターフェース104、コントローラ105、外部メモリ106、画像処理部107、DVD−ROM(Digital Versatile Disc ROM)ドライブ108、NIC(Network Interface Card)109、音声処理部110、マイク111、ハードディスク(Hard Disk;HD)121を有する。各種の入出力装置は、適宜省略することができる。
情報処理装置100を典型的なコンシューマゲーム機として機能させる場合には、ゲーム用プログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着し、電源を投入する。すると、当該ゲームプログラムが実行され、ゲームをプレイすることができるようになる。
ただし、本実施形態においては、典型的には、DVD−ROMドライブ108に装着されたDVD−ROMから、アプリケーションをHD 121にインストールする。そして、当該HD 121に記憶されたプログラムを実行することによって、ゲームを含む各種のアプリケーションを実行することとする。
なお、携帯型のゲーム装置においては、携帯可能とするために、DVD−ROMドライブ108を利用するのではなく、ROMカセット用スロットにEEPROM(Electrically Erasable Programmable ROM)カセットを装着して、HD 121を省略したりすることも可能である。この場合、アプリケーション用プログラムをEEPROMカセットに書き込んだ上で、当該プログラムを実行することとなる。このほか、外部メモリ106にアプリケーション用プログラムをインストールすることも可能である。
さて、CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
RAM 103は、データやプログラムを一時的に記憶するためのもので、HD 121やDVD−ROM等から読み出したプログラムやデータ、その他通信対戦ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
インターフェース104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
なお、コントローラ105は、必ずしも情報処理装置100に対して外付けにされている必要はなく、一体に形成されていても良い。携帯可能な端末装置のコントローラ105は、各種のボタンやスイッチから構成され、これらの押圧操作を操作入力として扱う。このほか、タッチスクリーンを利用した情報処理装置100では、ユーザがペンや指を利用してタッチスクリーンをなぞった軌跡を操作入力として扱う。
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
上述の通り、アプリケーションプログラムを外部メモリ106にインストールして実行するような形態を採用することもできる。これは、外部メモリ106が大容量である場合に好適である。
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
携帯可能な端末装置のモニタとしては、小型の液晶ディスプレイを利用するのが典型的であり、コントローラ105としてタッチスクリーンを利用する場合には、当該タッチスクリーンの表示パネルがモニタとして機能する。自宅で遊ぶための端末装置やネットワークゲームのサーバ装置のモニタとしては、CRT(Cathode Ray Tube)やプラズマディスプレイなどの表示装置を利用することも可能である。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LANを構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
また、NIC 109経由でコンピュータ通信網から入手した情報を元に、HD 121等にアプリケーションプログラムをインストールすることも可能である。
音声処理部110は、HD 121やDVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン(図示せず)、イヤフォン(図示せず)から出力させる。
音声処理部110では、HD 121やDVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
さらに、情報処理装置100には、インターフェース104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
本実施形態で利用する情報処理装置100は、上述のように、HD 121等の大容量外部記憶装置を用いるのが典型的である。HD 121は、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすこともできる。
このほか、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータやサーバ用コンピュータ等を利用することもできる。
以上で説明した情報処理装置100は、コンシューマ向けゲーム装置に相当するものであるが、各種の入出力処理が可能な電子機器であれば、本発明の端末装置やサーバ装置を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明の端末装置やサーバ装置を実現することが可能である。
たとえば、ビジネス用コンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NIC、HDを構成要素として有するほか、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてフレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっており、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用するのが典型的である。
図2、図3は、本実施形態の画像処理装置にて処理されるオブジェクトのボーン、制御点、頂点の様子を示す説明図であり、図4、図5は、本実施形態の画像処理装置にて処理されるオブジェクトのスキンをなすポリゴンと頂点の様子を示す説明図である。以下、これらの図を参照して説明する。
これらの図においては、理解を容易にするため、オブジェクトとして、棒状の形状を有するものを想定している。たとえば、シャクトリムシのようなモンスターを表すものと考えても良いし、人間の上腕から下腕まで、あるいは、腿から脛までを表すものと考えることもできる。
オブジェクト201は、3本のボーン211、212、213によってその概形が定められる。ボーン211とボーン212は、両者の端点で連結され、ボーン212とボーン213は、両者の端点で連結されている。
一般に、キャラクターやモンスターなど、仮想空間に配置される変形するオブジェクトのデザインを行うデザイナーは、そのオブジェクトの最も自然な形状を基本姿勢として採用する。ここで、最も自然な形状とは、一般には、関節の曲がりが少なく、ボーン同士の距離が近付き過ぎないような姿勢で、オブジェクトが人間のような姿態を持つ場合には、両手両足を真っ直に広げた形状を採用することが多い。
図2、図4は、オブジェクト201の基本姿勢に相当するものである。図2を見ればわかるように、ボーン211、212、213は、ほぼ一直線上に並んでいる。
図3、図5は、オブジェクト201が、基本姿勢から変形したものである。図3を見ればわかるように、ボーン211そのものの傾きが変化している他、ボーン212はボーン211に対して傾いており、ボーン213はボーン212に対して、同じ方向に傾いている。したがって、オブジェクト201を全体として見ると、山形に曲がっていることになる。
ボーン211、212、213には、以下のように、制御点221乃至229が対応付けられている。なお、本図では、制御点221乃至229は、×印で表記されている。
(a)制御点221、222は、ボーン211のみに依存する。
(b)制御点223、224は、ボーン211、212に依存する。
(c)制御点225は、ボーン211、212、213に依存する。
(d)制御点226、227は、ボーン212、213に依存する。
(e)制御点228、229は、ボーン213に依存する。
ここで「ある制御点がある1つのボーンに依存する」とは、基本姿勢のときの制御点のボーンに対する相対的な位置が、ボーンの位置や向きが変わったあともそのまま維持されることを意味する。
また、「ある制御点がある複数のボーンに依存する」とは、基本姿勢のときの制御点が各ボーンに対して分裂して、分裂後の制御点のボーンに対する相対的な位置がボーンの位置や向きが変わったあともそのまま維持されることを意味する。
図2と図3を比較すると、制御点221、222は、分裂はしておらず、制御点223は、制御点223a、223bの2つに分裂しており、制御点224は、制御点224a、224bの2つに分裂しており、制御点225は、制御点225a、225b、225cの3つに分裂しており、制御点226は、制御点226b、226cの2つに分裂しており、制御点227は、制御点227b、227cの2つに分裂しており、制御点228、229は、分裂していない。
たとえば、2つのボーン211、212に依存する制御点223を考えたとき、図3における制御点223aとボーン211の相対的な位置関係は、図2における制御点223とボーン211の相対的な位置関係と一致している。また、図3における制御点223bとボーン212の相対的な位置関係は、図2における制御点223とボーン212の相対的な位置関係と一致している。
このように、基本姿勢からボーンの位置や向きが変わった場合に、そのボーンに依存する制御点が、そのボーンに連動して移動した先を求めるのである。
さらに、各制御点はポリゴンの頂点に対応付けられている。具体的には、制御点221は、頂点231に、制御点222は、頂点232に、制御点223(223a、223b)は、頂点233に、制御点224(224a、224b)は、頂点234に、制御点225(225a、225b、225c)は、頂点235に、制御点226(226b、226c)は、頂点236に、制御点227(227b、227c)は、頂点237に、制御点228は、頂点238に、制御点229は、頂点239に、それぞれ対応付けられている。
そして、制御点が分裂しない場合は、制御点と同じ位置に頂点が配置され、制御点が分裂する場合には、制御点の位置の重み付き平均の位置に頂点が配置される。本図では、重みはいずれも等しく設定された状態を想定しているので、2つの制御点に分裂した場合には、その中点、3つの制御点に分裂した場合には、制御点を頂点とする三角形の重心が頂点の位置となる。
図4、図5は、頂点231乃至239により、ポリゴンを配置した様子を表す説明図である。以下、本図を参照して説明する。
本図に示すように、ポリゴン241は、頂点231、232、234を有する三角形であり、ポリゴン242は、頂点231、233、234を有する三角形であり、ポリゴン243は、頂点233、234、235を有する三角形であり、ポリゴン244は、頂点233、235、236を有する三角形であり、ポリゴン245は、頂点235、236、237を有する三角形であり、ポリゴン246は、頂点236、237、238を有する三角形であり、ポリゴン247は、頂点237、238、239を有する三角形である。
このようにして、オブジェクトが変形した場合であっても、不自然なくびれや潰れが生じないようにして、自然な変形を実現することができるのである。
なお、オブジェクトを構成するボーンの数、制御点の数、ポリゴンの数、ポリゴンとしてどのような多角形を選択するか、制御点とボーンとの重みは、用途に応じて任意に変更が可能である。
また、これらのポリゴンは、すべて1つのグループに属しており、仮想空間内では一体となって移動する。
さて、このように変形されたオブジェクト201が平面状の分割面により切断される状況を考える。図6、図7は、オブジェクト201が分割面によって切断される状況を表す説明図である。以下、本図を参照して説明する。
図6に示す例では、分割面301とポリゴン244、245が交差している。すなわち、ポリゴン244、245は、いずれも、切断によって、複数のポリゴンに分割されることになる。
また、分割面301に交差するポリゴン244、245を除去して考えると、図7に示すように、ポリゴン241、242、243の一群と、ポリゴン246、247の一群と、は、分離している。
これは、分割面301から見て異なる側に配置されているとともに、ポリゴン241、242、243は、辺を共有することで連結されており、ポリゴン246、247は、辺を共有することで連結されているからである。
一方、ポリゴン244、245は、分割面301と交差することによって、いずれも2つの新たなポリゴンに分割されている。図8は、変形後に切断されることにより生じた新たなポリゴンと頂点の様子を示す説明図である。以下、本図を参照して説明する。
本図に示すように、分割面301とポリゴン244、245の辺が交差した交点に、新たな頂点431、432、433が配置されており、ポリゴン441、442、443、444が形成されることとなっている。
上記のように、本実施形態においては、
(a)基本姿勢において頂点と重なる位置に制御点を配置し、
(b)制御点が依存する各ボーンが移動すると、そのボーンに連動して制御点が移動した先を求め、
(c)制御点の移動先を、依存する重みによって平均化した位置を、変形後の頂点の位置とする。
したがって、切断によって新たに生じた頂点431、432、433が、基本姿勢においてどの位置となるのか、を定める必要がある。
本実施形態では、新たに定められる頂点が切断された辺を内分する内分比が変形後と基本姿勢とで一致するようにして、基本姿勢における頂点の位置を求める。
図9は、切断されて生じたポリゴンと頂点の基本姿勢における様子を示す説明図である。以下、本図を参照して説明する。
図8と図9とで、頂点431は、頂点233、236を結ぶ辺を内分しているが、その内分比は基本姿勢と変形後で共通している。頂点432は、頂点235、236を結ぶ辺を内分しているが、その内分比は基本姿勢と変形後で共通している。頂点433は、頂点235、237を結ぶ辺を内分しているが、その内分比は基本姿勢と変形後で共通している。
なお、頂点431、432、433は、一つの平面(分割面301をなす平面)上にあったため、図8では一直線上に並んでいるが、基本姿勢を示す図9では、一直線上に並ぶとは限らない。
図10は、オブジェクトの分割後のポリゴンと頂点の基本姿勢における様子を示す説明図である。以下、本図を参照して説明する。
本図に示すように、分割によって、
(a)分割面と交差したポリゴン244、245が削除され、
(b)新たな制御点431、432、433が追加され
(c)新たな制御点431、432、433を頂点の一部とするポリゴン441、442、443、444が追加される
こととなっている。
また、図4では、ポリゴン241乃至247は一つのグループをなし、一体となっていたが、切断によって、図10においては、ポリゴン241、242、243、441、443が第1のグループを、ポリゴン442、444、246、247が第2のグループを、それぞれなすこととなっている。
第1のグループにおいては、ポリゴン241、242が、共通の辺231−234を有し、ポリゴン242、243が、共通の辺233−234を有し、ポリゴン243、441が、共通の辺233−235を有し、ポリゴン441、443が、共通の辺235−432を有している。
第2のグループにおいては、ポリゴン442、444が、共通の辺236−432を有し、ポリゴン444、246が、共通の辺236−237を有し、ポリゴン246、247が、共通の辺237−238を有している。
そして、両グループは、切断によって新たに生じた辺431−432、辺432−433を介して接している。
すなわち、既存の頂点同士を結ぶ辺、もしくは、既存の頂点と新たな頂点を結ぶ辺によって隣接するポリゴンを次々とたどることによって、グループを定めることができる。
また、新たな頂点同士を結ぶ辺によって隣接するポリゴンは、分割面を介して対峙するポリゴンであり、切断によって異なるグループに属することとなる。
さて、各グループのポリゴンが変形する状況は、従来と同様に、ボーン211、212、213によって定められる。すなわち、本実施形態においては、ボーンを分割する必要はない。これは、オブジェクトを形成するための情報を記憶する領域の更新をできるだけ少なくし、メモリの使用量を抑制するのに役立つ。
一方、仮想空間における位置や向きを各グループに対して割り当てることとすれば、あるグループに属するポリゴンは一体として移動し、グループ同士は独立して移動することが可能となる。
さて、新たな頂点431、432、433の位置と、これらに対する制御点の位置は、基本姿勢では重なるように定められる。したがって、あとは、制御点がいずれのボーンにどのような重みで依存するか、を定めれば、既存の制御点と新たな制御点を区別する必要がなくなる。
たとえば、頂点431は、頂点233と頂点236を内分している。そして、頂点233に対する制御点223は、ボーン211、212に依存し、頂点236に対する制御点226は、ボーン212、213に依存する。そこで、本実施形態では、頂点431に対する制御点は、ボーン211、212、213に依存するものとする。
すなわち、分割により生じた頂点の制御点に対する各ボーンの重みは、分割された辺の頂点の制御点に対する各ボーンの重みを、分割の際の内分比で内分したものとするのである。
たとえば、制御点223のボーン211、212に対する重みをw11,w12とし、制御点226のボーン212、213に対する重みをw22,w23とする。制御点223はボーン213に依存しないから、制御点223のボーン213に対する重みは、0である。同様に、制御点226のボーン211に対する重みも、0である。
そして、頂点431が、頂点233(制御点223)と頂点236(制御点223)との間をA対Bに内分するとする。
すると、頂点431に対する制御点の
(a)ボーン211に対する重みは、〔B×w11 + A×0〕/〔A+B〕であり、
(b)ボーン212に対する重みは、〔B×w12 + A×w22〕/〔A+B〕であり、
(c)ボーン213に対する重みは、〔B×0 + A×w23〕/〔A+B〕である。
このように、ボーンは分割せずに新たな頂点、制御点、重みを定めることで、オブジェクトを分割した後のポリゴンの形状を、自然に保つことができるようになるのである。
図11、図12は、仮想空間内において各グループが異なる位置、向きに配置された場合の様子を示す説明図である。以下、本図を参照して説明する。
図11は、ボーン211、212、213の相対的な位置関係が、図2、図4、図10と同じ状況において、グループごとの基本位置が異なる場合の、オブジェクト201の様子を示す図である。
図11は、ボーン211、212、213の相対的な位置関係が、図3、図5、図6と同じ状況において、グループごとの基本位置が異なる場合の、オブジェクト201の様子を示す図である。
これらの図に示すように、各グループごとにオブジェクト201の概形をなすポリゴンは、ポリゴン241、242、243、441、443が第1のグループを、ポリゴン442、444、246、247が第2のグループを、なしており、それぞれが一体となっている。
このように、ボーンの相対的な位置や向きの情報は、切断前と切断後とで変わりなく、一体となったまま処理をするが、ポリゴンは、グループごとに位置を定める点が、本発明の特徴の一つである。
以下では、上記の技術を適用した画像処理装置の詳細について、説明する。
図13は、本実施形態に係る画像処理装置の概要構成を示す模式図であり、図14は、当該画像処理装置が実行する画像処理の制御の流れを示すフローチャートである。以下、これらの図を参照して説明する。
本実施形態の画像処理装置801は、記憶部802、ボーン移動部803、制御点移動部804、配置部805、選択部806、分割部807、生成部808、グループ移動部809を備え、情報処理装置100にプログラムを実行させることにより実現される。
ここで、記憶部802は、RAM 103等により構成され、ボーン、制御点、頂点、ポリゴンの情報が記憶される。
また、ボーン移動部803は、ボーンを移動させる機能を果たす。
一方、制御点移動部804は、ボーンの移動に連動させて制御点を移動させる。
さらに、配置部805は、移動した制御点の位置からポリゴンの頂点の位置を定める。
そして、選択部806は、仮想空間内の分割面と交差するポリゴンを選択する。
一方、分割部807は、記憶部802に記憶される情報を、変更、修正、追加、削除などをできるだけしないように工夫しつつ、更新することによって、分割面に基づいてポリゴンを分割し、ポリゴンのグループ分けを行う。
グループ移動部809は、ポリゴンの位置を定めるための基準位置をグループ単位で移動させる。
これら、ボーン移動部803、制御点移動部804、配置部805、選択部806、分割部807、グループ移動部809は、RAM 103等に記憶される情報を参照してCPU 101や画像処理部107が計算を行うことにより実現される。
一方、生成部808は、仮想空間内にポリゴンが配置される位置に基づいて、画像を生成するもので、CPU 101の制御の下、画像処理部107により実現される。
以下、画像処理装置801が実行する画像処理の制御の流れを、さらに詳細に説明する。
本処理が開始されると、CPU 100は、RAM 103を初期化する(ステップS901)。ここで、RAM 103により実現される記憶部802には、以下の情報が記憶される。
(a)互いに連結された複数のボーンの初期位置および初期向き。すなわち、オブジェクトが基本姿勢をとっているときの、複数のボーンの位置および向き。
典型的には、複数のボーンは、木構造に階層化されて管理される。木構造の各ノードには、各ボーンが割り当てられる。連結された2つのボーンのうち、一方のボーンを親ノードに、他方のボーンを子ノードに、割り当てられる。
本実施形態では、親ノードのボーン(以下「親ボーン」という。)に固定された座標系における子ノードのボーン(以下「子ボーン」という。)が当該親ボーンに連結される連結点の座標、ならびに、当該子ボーンの向きを表すオイラー角もしくはクォータニオンにより、当該子ボーンの初期位置および初期向きが表現される。
このほか、親ボーンに固定された座標系と、子ボーンに固定された座標系と、の位置関係の差分によって、初期位置および初期向きを表現する手法を採用しても良い。
また、木構造の根ノードのボーン(以下「根ボーン」という。)に固定された座標系における、各ボーンの位置や向きを、上記の手法によって表現することで、初期位置や初期向きを表現することもできる。
(b)複数の制御点の初期位置。これは、オブジェクトが基本姿勢をとっているときの頂点の位置に重なるものである。
(c)複数の制御点のそれぞれが複数のボーンのそれぞれに依存する重みを表す依存情報。
概念的には、依存情報は、制御点が依存しないボーンに対しては重みを0として、各重みを並べたベクトルと考えることができる。ただし、殆どの場合、このベクトルは疎なベクトルである。したがって、ベクトルの添字、すなわち、各ボーンを区別するための番号から重みへのペアの配列、あるいは、ハッシュなどの構造を採用して記憶すると、メモリの利用効率が良くなる。
(d)複数のポリゴンのそれぞれが複数の制御点のいずれを頂点とするかを表す頂点情報。
ポリゴンの形状を定義するものであり、ポリゴンの識別番号と、所定個数の制御点の識別番号と、のペアの配列等によって表現することができる。なお、後述するように、ポリゴンを三角形に限定したり、三角形と四角形に限定することで、計算を簡易化することができる。
(e)複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報。
ポリゴンが同じグループに属する、ということは、それらのポリゴンは一体となって仮想空間内を移動することを意味する。すなわち、それらのポリゴンは、まだ切断されていない、ということを意味する。
(f)グループのそれぞれに対する仮想空間内の基準位置および基準向き。
各グループに属するポリゴンの位置は、根ボーンに固定された座標系に対する相対的な座標により表現される。そこで、根ボーンの位置と向きを、ポリゴンが属するグループの基準位置および基準向きに設定することで、仮想空間内におけるポリゴンの頂点の絶対的な位置を求めることができる。
グループごとに基準位置および基準向きが設定されるので、同じグループに属するポリゴンは一体となって移動する。
このほか、RAM 103には、各ボーンの現在の位置および向き、各ボーンの移動に連動して移動する制御点の位置および向き、各頂点の現在の位置および向きなどの情報も記憶される。
ついで、CPU 101は、ユーザがコントローラ105などを指示操作して行う指示や時間経過、所定のアルゴリズム、乱数などに基づいて、RAM 103内に記憶される各ボーンの現在の位置や向きを更新する(ステップS902)。この際の変化量を「ボーン変化量」と呼ぶ。
各ボーンについてボーン変化量を決定する手法には、たとえば以下に掲げる手法等、種々の態様を採用することができる。
(a)木構造において、親ボーンから子ボーンへ、の方向に位置や向きの変化量が伝播していくフォワードキネマティクス法。
フォワードキネマティクスは、あらかじめ定めたアルゴリズムやモーションキャプチャデータを利用してオブジェクトを変形させる場合によく使われる手法である。たとえば、キャラクターに決められた振り付けのダンスを踊らせたり、必殺技や勝ち名乗りの決めポーズをとらせるような場合である。
(b)木構造において、葉ノードのボーン(以下「葉ボーン」という。)を目的位置に移動させ、根ボーンに向かって位置や向きの変化量を伝播させるインバースキネマティクス法。
インバースキネマティクスは、たとえば、キャラクターに何らかの物体を拾わせたりするような場合によく使われる。このような場合では、目的位置が動的に変化するので、腕をどのように伸ばしてから縮めれば良いか、を求める必要がある。
なお、ボーン変化量の表現法もさまざまであり、初期位置や初期向きからの変位で表現しても良いし、根ボーンに固定された座標系に対する当該ボーンに固定された座標系の、現在の位置および向きにより表現しても良い。
なお、ボーン変化量によるボーンの変形は、図2から図3に至るまでのボーン211、212、213の相対的な位置の変化に相当する。
さらに、CPU 101は、制御点のそれぞれについて、以下の処理を繰り返す(ステップS903〜ステップS909)。
まず、制御点が依存するボーン、すなわち、制御点のボーンに対する重みが非0であるようなボーンのそれぞれについて、当該ボーンに対する制御点の位置が相対的に変化しないように、制御点を移動する(ステップS904)。ここでの移動量を「連動変化量」と呼ぶ。
これは、図2から図3に至るまでの図中の×印を、それぞれ求めることに相当し、制御点が複数のボーンに依存する場合には、移動先も複数箇所となる。
次に、制御点の移動先を、そこへ移動する原因となったボーンの重みをつけて、平均をとる(ステップS905)。この結果が「制御点変化量」である。
制御点変化量を求める処理は、図2から図3に至るまでの図中の○印をそれぞれ求めることに相当する。
たとえば、制御点がN個、ボーンがM個用意されている状況を考える。j番目のボーンが移動したときに、j番目のボーンに対する相対的な位置が変化しないように、i番目の制御点を移動したときの連動変化量を表すベクトルをr[i,j]とする。また、i番目の制御点がj番目のボーンに依存する重みをw[i,j]とする。
連動変化量は、オブジェクトが
すると、i番目の制御点の制御点変化量は、
〔Σj=1 M w[i,j]r[i,j]〕/〔Σj=1 M w[i,j]〕
のように計算することができる。
制御点変化量は、その制御点に対応付けられる頂点の位置や向きの変化を表すベクトルである。
なお、w[i,j] = 0の場合、i番目の制御点はj番目のボーンに依存しないこととなるので、この場合にはr[i,j]を求める必要はない。
ついで、CPU 101は、当該制御点が属するグループを調べ(ステップS906)、当該グループの基準位置および基準向きを取得し(ステップS907)、当該制御点に対応付けられる頂点の、仮想空間内における絶対的な位置を計算する(ステップS908)。
すると、仮想空間内の頂点の位置および向きは、
(a)基準位置および基準向きと、
(b)頂点の初期位置および初期向きと、
(c)制御点変化量と、
を座標変換すれば得られる。
なお、頂点の初期位置および初期向きを、根ボーンの初期位置および初期向きと一致させる手法、すなわち、制御点変化量を、根ボーンに固定される座標系における制御点の座標で表現する手法もありうる。
この場合は、単純に、基準位置および基準向きに基づいて、制御点変化量を平行移動および回転すれば、仮想空間内における位置および向きが得られる。
1つの頂点は、一般には、複数のポリゴンで共有される。また、ある頂点を共有するポリゴンは、同じグループに属する場合が殆どである。したがって、
(a)どのグループを基準として頂点の位置を得たか、の情報と、
(b)得られた頂点の位置と、
を対応付けてキャッシュすることにより、計算量を抑制することができる。
なお、切断されていないオブジェクトを構成するポリゴンは、1つのグループに属するので、基準位置と基準向きが一致している。
一方、オブジェクトが切断されると、そのオブジェクトを構成するポリゴンは、複数のグループのいずれかに属することとなる。各グループの基準位置と基準向きは、一般には異なるので、同じグループに属するポリゴンは一体となって移動するが、異なるグループに属するポリゴンは別個に移動することになる。
このようにして、全制御点から頂点の位置を得る処理を繰り返す(〜ステップS909)。
全頂点の位置が得られたら、CPU 101は、画像処理部107を駆動して、仮想空間内に配置されたポリゴンを所定の視点位置から所定の視線方向に見た様子を表す画像を、3次元グラフィックス技術によって生成する(ステップS910)。
すなわち、オブジェクトが分割されているか否かに関わらず、ボーンに関する情報そのものを、追加したり削除したり分離したり複製したりする必要がない。これは、本発明の特徴の一つである。
ついで、CPU 101は、垂直同期割込が発生するまで待機し(ステップS911)、垂直同期割込みが発生したら、画像処理部107を制御して、生成した画像をモニタの画面に表示させる(ステップS912)。
本実施形態では、以降の処理を実行した後にステップS902に戻ることとしているので、モニタ画面に表示される画像は、垂直同期割込周期ごとに更新されることになる。このため、オブジェクトが変形している場合には、その様子が動画表示されることになる。
なお、待機中(ステップS911)には、他の計算処理をコルーチン的に並行して実行することや、以降の計算を先行して行うことも可能である。
さらに、CPU 101は、仮想空間内に分割面が配置されたか否かを判定する(ステップS913)。分割面が配置される状況とは、ユーザがコントローラ105などを指示操作して切断を指定した場合や、所定のアルゴリズムに基づく場合など、種々の態様を採用することができる。分割面の配置は、上記の待機中(ステップS911)に行っても良いし、ステップS913において、コントローラ105等の押圧操作状況を監視することにより行っても良い。
さて、分割面が配置されていない場合(ステップS913;No)、ステップS921に進む。一方、分割面が配置されている場合(ステップS913;Yes)、CPU 101は、現在仮想空間内に配置されている全ポリゴンのうち、当該分割面と交差するポリゴンを選択する(ステップS914)。
この処理は、図6において分割面301と交差するポリゴン244、245を選択する処理に相当する。
たとえば、プレイヤーが刀をコントローラ105で操作し、仮想空間内で姿勢を変化させながら移動する敵キャラクターのオブジェクトを切断する場合を考える。
この場合、刀の移動の軌跡が分割面に相当し、分割面と交差するポリゴンは、刀と衝突して切り裂かれる皮膚の部位に相当する。
分割面の形状を仮想空間内に配置される円や扇型あるいは平面等、平らな形状とすれば、交差判定の計算を容易にすることができる。
ついで、CPU 101は、選択された各ポリゴンにおいて、分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求める(ステップS915)。
これは、図8において、頂点431、432、433が、辺232−236、235−236、235−237を内分する内分比を求める処理に相当する。
さらに、CPU 101は、当該辺の頂点とされる制御点について記憶部802に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求める(ステップS916)。
これは、図9において、頂点431、432、433の位置を計算する処理に相当する。
ついで、CPU 101は、当該求められた内分位置を新たな制御点の初期位置として、記憶部802に記憶させる。
これにより、図10に示すように、新たな頂点431、432、433が、オブジェクト202のスキンを定義するための制御点として採用されることになる。
さらに、CPU 101は、当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、記憶部802に記憶させる。
これは、上記のように、頂点431、432、433が、ボーン211、212、213に依存する重みを内分によって計算した処理に相当する。
そして、CPU 101は、選択されたポリゴンに対する頂点情報を、記憶部802から削除することにより、分割されたポリゴンを消去する(ステップS917)。
この処理により、図2に示されていたポリゴン244、245が消去されることになる。
さらに、CPU 101は、選択されたポリゴンを分割面により分割することにより得られる新たなポリゴンの頂点を、分割面により分割されない辺の頂点とされる制御点ならびに分割面により分割される辺の交点に対する制御点とする頂点情報を、記憶部802に記憶させることにより、新たなポリゴンを生成する(ステップS918)。
この処理により、図10に示されるポリゴン441、442、443、444が生成されることになる。
ついで、CPU 101は、記憶部802に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループに分割する(ステップS919)。
上記の例では、ポリゴン241、242、243、441、443が1つのグループに、ポリゴン442、444、246、247が他のグループに、それぞれ属することとなる。
なお、上記のように、辺を介してポリゴンが連結されることを基準に切断の判定を行うと、一回の切断によって、複雑な姿勢に変形したオブジェクトが多数のオブジェクトに分離されるような場合であっても、正しくグループ分けを行うことができる。
そして、CPU 101は、当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きに、初期化して設定する(ステップS920)。
切断の直後は、切断後のグループの基準位置と基準向きは一致するので、図6、図10に示すように、切断直後のグループは、分割面を境界に、互いに密着することになる。
また、切断されて時間が経過すると、一般には、各グループの基準位置や基準向きは変化する。したがって、図11、図12に示すように、各グループは分離するが、グループ内のポリゴンは一体に移動する。
図15、図16、図17は、複雑な形状のオブジェクトが切断される様子を示す説明図である。以下、本図を参照して説明する。
図15は、敵キャラクターのオブジェクトが両手を下に下げている状態で、右上から左下に刀で切断されたときの様子を示す説明図である。なお、本図では、理解を容易にするため、分割面から離れるように、各ポリゴンを移動している。
本図に示すように、一つの分割面によって、オブジェクトは3つの部分に分離されている。また、分割面が平面状であることもわかる。
図16は、図15のオブジェクトの基本姿勢に相当する様子を示す説明図である。本図でも、理解を容易にするため、分割面から離れるように、各ポリゴンを移動している。
本図を見ると、基本姿勢における分割面は、複雑な折れ曲がり形状を持っていることがわかる。
図17は、分割面により切断されたポリゴンを強調して表示する説明図である。
本図を見ると、切断されたポリゴンの数は、切断されていないポリゴンの数に比べて、かなり少ないことがわかる。
しかも、本実施形態では、基本姿勢においてポリゴンを分割しているため、分割面と交差しないポリゴンについては、以前と同じデータをそのまま利用できる。このため、記憶部802の書き換えが少なくてすみ、メモリの利用効率が向上する。
さて、このようにポリゴンのグループ分けが済んだら、CPU 101は、物理シミュレーション計算やユーザの指示入力等に基づいて、各グループの基準位置や基準向きを変化させ(ステップS921)、ステップS902に戻る。
この処理によって、再度ポリゴンが仮想空間内に配置され、画像が生成される処理が繰り返されることになる。
物理シミュレーションによって、時間の経過とともに、両者のずれが大きくなるように変化すると、オブジェクトの切断された部位同士が次第に離間していく状況が再現できる。
このように、本実施形態では、分割面によって切断される一部のポリゴンに関係する情報のみを書き換えることとしている。また、書き換えた後の情報は、さらなる切断が可能となっている。たとえば、ゲームにおいてプレイヤーが敵キャラクターに何回も刀を振り下ろして、敵キャラクターを細切れにするような状況に適用することも可能である。
また、画像の生成や画像の表示が所定の時間間隔で繰り返し行われるので、オブジェクトが切断される様子を表す動画が提示されることになる。
本発明によれば、オブジェクトが移動・変形した後に切断された状況に基づいて、移動・変形がされる前の状況において一部のポリゴンを分割し、ポリゴン全体のグループ分けを再度行うことにより、オブジェクトの位置や形状を定める種々の情報の複製・削除・変更等をできるだけ抑制するとともに、簡易な計算によってオブジェクトの切断をシミュレートすることができるようになる。
上記実施形態では、辺を内分する内分点を新たな頂点とするときに、辺の元の頂点に割り当てられた重みを、内分比で内分することによって、新たな制御点の重みを得ることとしていた。
たとえば、制御点がN個、ボーンがM個用意されている状況で、i番目の制御点がj番目のボーンに依存する重みをw[i,j]とし、内分される辺の頂点がそれぞれp番目、q番目であり、内分比がA:Bであるとしたとき、新たな制御点がj番目のボーンに依存する重みは、
〔B×w[p,j] + A×w[q,j]〕/〔A + B〕
のように計算することができる。
しかしながら一般には、制御点が依存するボーンの数は1個〜4個程度とすることが多い。ここで、制御点が依存するボーンの数の上限をL個とすると、w[p,1],w[p,2],…,w[p,M]のうち、非0の要素は多くともL個しかない。w[q,1],w[q,2],…,w[q,M]についても、同様に、非0の要素は多くともL個しかない。
このため、新たな制御点に対する各ボーンの重み
〔B×w[p,1] + A×w[q,1]〕/〔A + B〕,
〔B×w[p,2] + A×w[q,2]〕/〔A + B〕,
… ,
〔B×w[p,M] + A×w[q,M]〕/〔A + B〕
のうち、非0の要素は、多くとも2L個となる。
そこで、得られた重みのうち非0の重みがL個を超える場合には、重みが大きい順からL個だけを選び、それ以外の重みを0にクリアする。
すると、制御点は、選ばれた重みを持つL個のボーンには依存するが、それ以外のボーンには依存しない、ということになる。
この構成は、ボーンに対する依存性を近似するものである。また、既存の3次元グラフィックスライブラリやハードウェアにおいては、制御点が依存するボーンの数に上限を設けていることが殆どである。本発明は、このようなライブラリ・ハードウェアを有効活用することができる。
なお、ボーンに対する重みは、M個の要素を持つ1次元配列として実装するのではなく、非0の重みのインデックスと、そのインデックスに対応する重みと、の対がL個含まれる配列で表現することにより、メモリの使用量を抑制することが可能である。
本発明によれば、制御点が依存するボーンの数を適切に抑制して、計算量やメモリの使用量を抑制することができるようになる。
上記実施形態では、ポリゴンが分割面で分離された後は、分離されたポリゴンをそのまま利用していた。本実施形態では、ポリゴンの形状として、三角形のみを採用することとする。
図18、図19は、ポリゴンが分離される場合に、どのような分離が考えられるか、を示す説明図である。以下、本図を参照して説明する。
これらの図において、分割面と交差するポリゴンは、点A、B、Cを頂点とする三角形ABCである。分割面と交差することにより、辺ABが、交点Dで分割され、辺ACが、交点Eで分割されている。
すべてのポリゴンを三角形にするためには、四角形DBCEを対角線BEもしくは対角線CDで分割する必要がある。
ここで、三角形の形状が細長くなると、画像を生成した際に、不自然なくびれや潰れが生じやすくなる。
そこで、本実施形態では、頂点を挟む辺同士の角度を利用する。
すなわち、角EDCと角DCBの和(図18)と、角DEBと角EBCの和(図19)と、を比較する。すると、前者の方が、和が大きい。
そこで、新たなポリゴンを、図16に基づいて、三角形ADE、三角形DEC、三角形EDCとするのである。
本実施形態によれば、ポリゴンを分割する際に、分割後のポリゴンの形状を適切に選択することにより、生成される画像が不自然になることをできるだけ防止することが可能となる。
以上説明したように、本発明によれば、仮想空間に配置される複数のポリゴンからなるオブジェクトをある分割面で分割した様子を表す画像を生成するのに好適な画像処理装置、画像処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
121 HD
201 オブジェクト
211 ボーン
212 ボーン
213 ボーン
221 制御点
222 制御点
223 制御点
224 制御点
225 制御点
226 制御点
227 制御点
228 制御点
229 制御点
231 頂点
232 頂点
233 頂点
234 頂点
235 頂点
236 頂点
237 頂点
238 頂点
239 頂点
241 ポリゴン
242 ポリゴン
243 ポリゴン
244 ポリゴン
245 ポリゴン
246 ポリゴン
247 ポリゴン
431 頂点
432 頂点
433 頂点
441 ポリゴン
442 ポリゴン
443 ポリゴン
444 ポリゴン
801 画像処理装置
802 記憶部
803 ボーン移動部
804 制御点移動部
805 配置部
806 選択部
807 分割部
808 生成部
809 グループ移動部

Claims (8)

  1. 互いに連結された複数のボーンの初期位置および初期向きと、複数の制御点の初期位置と、当該複数の制御点のそれぞれが前記複数のボーンのそれぞれに依存する重みを表す依存情報と、複数のポリゴンのそれぞれが前記複数の制御点のいずれを頂点とするかを表す頂点情報と、前記複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報と、前記グループのそれぞれに対する仮想空間内の基準位置および基準向きと、が記憶される記憶部、
    前記複数のボーンが互いに連結される相対的な向きを変化させるときの、前記複数のボーンのそれぞれの前記初期位置および前記初期向きからの位置ならびに向きの変化量(以下「ボーン変化量」という。)を求めるボーン移動部、
    前記複数の制御点のそれぞれについて、前記複数のボーンのそれぞれが前記求められた変化量だけ移動するのに連動して、当該制御点の位置を前記記憶される初期位置から移動するときの、当該制御点の位置の変化量(以下「連動変化量」という。)を求め、当該求められた連動変化量のそれぞれに、当該制御点が当該ボーンに依存する重みを適用して重み付き平均をとることにより、当該制御点の位置の変化量(以下「制御点変化量」という。)を求める制御点移動部、
    前記複数のポリゴンのそれぞれについて、当該ポリゴンが属するグループに対する基準位置および基準向きに対する当該ポリゴンの頂点の相対的な位置を、当該頂点に対する制御点について前記求められた制御点変化量とすることにより、当該ポリゴンを当該仮想空間内に配置する配置部、
    前記複数のポリゴンのうち、同じグループに属するポリゴンについて、当該ポリゴンの有する辺が前記仮想空間に配置された分割面と交差するポリゴンを選択する選択部、
    前記選択されたポリゴンにおいて、前記分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求め、当該辺の頂点とされる制御点について前記記憶部に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求め、当該求められた内分位置を新たな制御点の初期位置として、前記記憶部に記憶させ、当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、前記記憶部に記憶させ、前記選択されたポリゴンに対する頂点情報を、前記記憶部から削除することにより、分割されたポリゴンを消去し、前記選択されたポリゴンを前記分割面により分割することにより得られる新たなポリゴンの頂点を、前記分割面により分割されない辺の頂点とされる制御点ならびに前記分割面により分割される辺の交点に対する制御点とする頂点情報を、前記記憶部に記憶させることにより、新たなポリゴンを生成し、前記記憶部に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、前記分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループ情報に分割し、当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きとする分割部
    を備えることを特徴とする画像生成装置。
  2. 請求項1に記載の画像生成装置であって、
    前記記憶部に記憶されるグループ情報のそれぞれに対する基準位置および基準向きを変化させ、前記配置部に前記複数のポリゴンを再度配置させるグループ移動部、
    前記仮想空間に配置された複数のポリゴンを、当該仮想空間に配置される視点から当該仮想空間に配置される視線の方向に見た様子を表す画像を生成する生成部
    をさらに備えることを特徴とする画像生成装置。
  3. 請求項1または2に記載の画像生成装置であって、
    前記分割部は、前記分割面と交差する辺の頂点に対する依存情報のそれぞれの重みを前記内分比で内分することにより当該依存情報を混合して、当該内分された結果の依存情報を前記新たな制御点に対する依存情報とする
    ことを特徴とする画像生成装置。
  4. 請求項3に記載の画像生成装置であって、
    前記依存情報のそれぞれにおいて、非0である重みの個数には上限があり、前記内分された結果の依存情報において非0である重みの個数が当該上限を超える場合、当該重みが小さい順に、当該重みを0に修正して、前記混合結果の依存情報における非0である重みの個数を当該上限とする
    ことを特徴とする画像生成装置。
  5. 請求項1から4のいずれか1項に記載の画像生成装置であって、
    前記複数のポリゴンはいずれも三角形であり、
    前記選択されたポリゴンが、点A、B、Cを頂点とする三角形ABCであり、辺ABが、交点Dで分割され、辺ACが、交点Eで分割され、角EDCと角DCBの和が角DEBと角EBCの和以下である場合、前記新たなポリゴンを、三角形ADE、三角形DEB、三角形EBCとする
    ことを特徴とする画像生成装置。
  6. 請求項1から5のいずれか1項に記載の画像生成装置であって、
    前記複数のボーンは、各ボーンをノードとし、連結された2つのボーンのうち、一方のボーンを親ノードに、他方のボーンを子ノードに、それぞれ割り当てた木構造に階層化され、親ノードのボーン(以下「親ボーン」という。)に固定された座標系における子ノードのボーン(以下「子ボーン」という。)が当該親ボーンに連結される連結点の座標、ならびに、当該子ボーンの向きを表すオイラー角もしくはクォータニオンにより、当該子ボーンの初期位置および初期向きが表現され、
    前記ボーン移動部は、前記子ボーンの向きを表すオイラー角もしくはクォータニオンを変化させることにより、当該親ボーンに対する当該子ボーンの相対的な向きを変化させる
    ことを特徴とする画像生成装置。
  7. 互いに連結された複数のボーンの初期位置および初期向きと、複数の制御点の初期位置と、当該複数の制御点のそれぞれが前記複数のボーンのそれぞれに依存する重みを表す依存情報と、複数のポリゴンのそれぞれが前記複数の制御点のいずれを頂点とするかを表す頂点情報と、前記複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報と、前記グループのそれぞれに対する仮想空間内の基準位置および基準向きと、が記憶される記憶部、ボーン移動部、制御点移動部、配置部、選択部、分割部、を有する画像処理装置が実行する画像処理方法であって、
    前記ボーン移動部が、前記複数のボーンが互いに連結される相対的な向きを変化させるときの、前記複数のボーンのそれぞれの前記初期位置および前記初期向きからの位置ならびに向きの変化量(以下「ボーン変化量」という。)を求めるボーン移動工程、
    前記制御点移動部が、前記複数の制御点のそれぞれについて、前記複数のボーンのそれぞれが前記求められた変化量だけ移動するのに連動して、当該制御点の位置を前記記憶される初期位置から移動するときの、当該制御点の位置の変化量(以下「連動変化量」という。)を求め、当該求められた連動変化量のそれぞれに、当該制御点が当該ボーンに依存する重みを適用して重み付き平均をとることにより、当該制御点の位置の変化量(以下「制御点変化量」という。)を求める制御点移動工程、
    前記配置部が、前記複数のポリゴンのそれぞれについて、当該ポリゴンが属するグループに対する基準位置および基準向きに対する当該ポリゴンの頂点の相対的な位置を、当該頂点に対する制御点について前記求められた制御点変化量とすることにより、当該ポリゴンを当該仮想空間内に配置する配置工程、
    前記選択部が、前記複数のポリゴンのうち、同じグループに属するポリゴンについて、当該ポリゴンの有する辺が前記仮想空間に配置された分割面と交差するポリゴンを選択する選択工程、
    前記分割部が、前記選択されたポリゴンにおいて、前記分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求め、当該辺の頂点とされる制御点について前記記憶部に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求め、当該求められた内分位置を新たな制御点の初期位置として、前記記憶部に記憶させ、当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、前記記憶部に記憶させ、前記選択されたポリゴンに対する頂点情報を、前記記憶部から削除することにより、分割されたポリゴンを消去し、前記選択されたポリゴンを前記分割面により分割することにより得られる新たなポリゴンの頂点を、前記分割面により分割されない辺の頂点とされる制御点ならびに前記分割面により分割される辺の交点に対する制御点とする頂点情報を、前記記憶部に記憶させることにより、新たなポリゴンを生成し、前記記憶部に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、前記分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループ情報に分割し、当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きとする分割工程
    を備えることを特徴とする画像生成方法。
  8. コンピュータを、
    互いに連結された複数のボーンの初期位置および初期向きと、複数の制御点の初期位置と、当該複数の制御点のそれぞれが前記複数のボーンのそれぞれに依存する重みを表す依存情報と、複数のポリゴンのそれぞれが前記複数の制御点のいずれを頂点とするかを表す頂点情報と、前記複数のポリゴンのそれぞれがいずれのグループに属するかを表すグループ情報と、前記グループのそれぞれに対する仮想空間内の基準位置および基準向きと、が記憶される記憶部、
    前記複数のボーンが互いに連結される相対的な向きを変化させるときの、前記複数のボーンのそれぞれの前記初期位置および前記初期向きからの位置ならびに向きの変化量(以下「ボーン変化量」という。)を求めるボーン移動部、
    前記複数の制御点のそれぞれについて、前記複数のボーンのそれぞれが前記求められた変化量だけ移動するのに連動して、当該制御点の位置を前記記憶される初期位置から移動するときの、当該制御点の位置の変化量(以下「連動変化量」という。)を求め、当該求められた連動変化量のそれぞれに、当該制御点が当該ボーンに依存する重みを適用して重み付き平均をとることにより、当該制御点の位置の変化量(以下「制御点変化量」という。)を求める制御点移動部、
    前記複数のポリゴンのそれぞれについて、当該ポリゴンが属するグループに対する基準位置および基準向きに対する当該ポリゴンの頂点の相対的な位置を、当該頂点に対する制御点について前記求められた制御点変化量とすることにより、当該ポリゴンを当該仮想空間内に配置する配置部、
    前記複数のポリゴンのうち、同じグループに属するポリゴンについて、当該ポリゴンの有する辺が前記仮想空間に配置された分割面と交差するポリゴンを選択する選択部、
    前記選択されたポリゴンにおいて、前記分割面と交差する辺の交点が、当該辺の頂点の間を内分する内分比を求め、当該辺の頂点とされる制御点について前記記憶部に記憶される初期位置の間を、当該求められた内分比で内分する位置(以下「内分位置」という。)を求め、当該求められた内分位置を新たな制御点の初期位置として、前記記憶部に記憶させ、当該辺の頂点とされる制御点に対する依存情報を当該混合して、当該混合した結果を、当該新たな制御点に対する依存情報として、前記記憶部に記憶させ、前記選択されたポリゴンに対する頂点情報を、前記記憶部から削除することにより、分割されたポリゴンを消去し、前記選択されたポリゴンを前記分割面により分割することにより得られる新たなポリゴンの頂点を、前記分割面により分割されない辺の頂点とされる制御点ならびに前記分割面により分割される辺の交点に対する制御点とする頂点情報を、前記記憶部に記憶させることにより、新たなポリゴンを生成し、前記記憶部に記憶される分割面と交差するポリゴンが属するグループに対するグループ情報を、前記分割面に対して当該ポリゴンの頂点がいずれの側にあるか、ならびに、当該ポリゴンが共通する辺を有することにより連結されているか、により、複数のグループ情報に分割し、当該複数のグループ情報に対する基準位置および基準向きを、当該分割前のグループ情報に対する基準位置および基準向きとする分割部
    として機能させることを特徴とするプログラム。
JP2009216332A 2009-09-18 2009-09-18 画像処理装置、画像処理方法、ならびに、プログラム Active JP4815521B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009216332A JP4815521B2 (ja) 2009-09-18 2009-09-18 画像処理装置、画像処理方法、ならびに、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009216332A JP4815521B2 (ja) 2009-09-18 2009-09-18 画像処理装置、画像処理方法、ならびに、プログラム

Publications (2)

Publication Number Publication Date
JP2011065492A true JP2011065492A (ja) 2011-03-31
JP4815521B2 JP4815521B2 (ja) 2011-11-16

Family

ID=43951652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009216332A Active JP4815521B2 (ja) 2009-09-18 2009-09-18 画像処理装置、画像処理方法、ならびに、プログラム

Country Status (1)

Country Link
JP (1) JP4815521B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170053151A (ko) * 2015-07-29 2017-05-15 주식회사 넥슨코리아 게임 제공 장치 및 방법
JP6487083B1 (ja) * 2018-03-07 2019-03-20 株式会社スクウェア・エニックス ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム
CN117274449A (zh) * 2023-11-15 2023-12-22 唯物(杭州)科技有限公司 一种基于模型生成骨骼的方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000157729A (ja) * 1998-11-26 2000-06-13 Square Co Ltd ゲーム装置、画像処理方法、及び、プログラムを記録したコンピュータ読み取り可能な情報記録媒体
JP2003085585A (ja) * 2001-09-10 2003-03-20 Namco Ltd 画像生成システム、プログラム及び情報記憶媒体
JP2007148856A (ja) * 2005-11-29 2007-06-14 Konami Digital Entertainment:Kk スキンの制御点の位置の計算装置、計算方法、ならびに、プログラム
JP2007234033A (ja) * 1996-07-03 2007-09-13 Namco Bandai Games Inc 3次元ゲーム装置及び情報記憶媒体
JP2008233946A (ja) * 2007-03-16 2008-10-02 Konami Digital Entertainment:Kk キャラクター表示装置、キャラクター表示方法、ならびに、プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007234033A (ja) * 1996-07-03 2007-09-13 Namco Bandai Games Inc 3次元ゲーム装置及び情報記憶媒体
JP2000157729A (ja) * 1998-11-26 2000-06-13 Square Co Ltd ゲーム装置、画像処理方法、及び、プログラムを記録したコンピュータ読み取り可能な情報記録媒体
JP2003085585A (ja) * 2001-09-10 2003-03-20 Namco Ltd 画像生成システム、プログラム及び情報記憶媒体
JP2007148856A (ja) * 2005-11-29 2007-06-14 Konami Digital Entertainment:Kk スキンの制御点の位置の計算装置、計算方法、ならびに、プログラム
JP2008233946A (ja) * 2007-03-16 2008-10-02 Konami Digital Entertainment:Kk キャラクター表示装置、キャラクター表示方法、ならびに、プログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170053151A (ko) * 2015-07-29 2017-05-15 주식회사 넥슨코리아 게임 제공 장치 및 방법
KR102311957B1 (ko) * 2015-07-29 2021-10-13 주식회사 넥슨코리아 게임 제공 장치 및 방법
JP6487083B1 (ja) * 2018-03-07 2019-03-20 株式会社スクウェア・エニックス ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム
JP2019159348A (ja) * 2018-03-07 2019-09-19 株式会社スクウェア・エニックス ウェイトマップの局所性を考慮したスキニング分解高速化方法及び同スキニング分解高速化プログラム
CN117274449A (zh) * 2023-11-15 2023-12-22 唯物(杭州)科技有限公司 一种基于模型生成骨骼的方法和系统
CN117274449B (zh) * 2023-11-15 2024-02-09 唯物(杭州)科技有限公司 一种基于模型生成骨骼的方法和系统

Also Published As

Publication number Publication date
JP4815521B2 (ja) 2011-11-16

Similar Documents

Publication Publication Date Title
JP4519883B2 (ja) キャラクター表示装置、キャラクター表示方法、ならびに、プログラム
JP4037889B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
US20100231590A1 (en) Creating and modifying 3d object textures
JP2006122241A (ja) ゲーム装置およびゲームプログラム
JP4612031B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4187748B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
KR20210142200A (ko) 애니메이팅된 캐릭터의 수정
JP4019095B2 (ja) 音声処理装置、音声処理方法、ならびに、プログラム
JP2011065578A (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4815521B2 (ja) 画像処理装置、画像処理方法、ならびに、プログラム
JP4267646B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4199764B2 (ja) スキンの制御点の位置の計算装置、計算方法、ならびに、プログラム
JP4575937B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4244352B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4579964B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4563461B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4468974B2 (ja) 画像生成装置、画像生成方法ならびに、プログラム
JP4159060B2 (ja) 画像生成装置及び情報記憶媒体
JP5155262B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4287479B2 (ja) 画像生成装置、画像生成方法、ならびに、プログラム
JP4113179B2 (ja) シミュレーション装置、シミュレート方法、ならびに、プログラム
JP4726355B2 (ja) 画像処理装置および画像処理プログラム
JP2005293259A (ja) 3次元樹木形状生成装置、3次元樹木形状生成プログラム及び記録媒体
JP4068093B2 (ja) シミュレーション装置、シミュレート方法、ならびに、プログラム
KIM DESIGN AND EVALUATION OF A MOBILE 3D ARCADE GAME WITH MESH CLIPPING

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110829

R150 Certificate of patent or registration of utility model

Ref document number: 4815521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250