(57)【特許請求の範囲】
【請求項１】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングシステムであって、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成部と、
前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理部と、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成部と、
任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すパーツ選択部と、
前記交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、前記交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得部と、
前記交換用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択部により切り出されたパーツデータに関連する動作制御データ、又は、前記交換用データ内の動作制御データを選択して読み込むパーツ交換処理部と
を備えることを特徴とするモデリングシステム。
【請求項２】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングシステムであって、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成部と、
前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理部と、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成部と、
ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとして前記データセットから切り出すパーツ選択部と、
前記編集用データに含まれるパーツデータ又は動作制御データに変更を加えるパーツ編集部と、
前記編集用データに含まれるパーツデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、前記編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得部と、
前記編集用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択部により切り出されたパーツデータに関連する動作制御データ、又は、前記編集用データ内の動作制御データを選択して読み込むパーツ交換処理部と
を備えることを特徴とするモデリングシステム。
【請求項３】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングシステムであって、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成部と、
前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理部と、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成部と、
前記データセット内の任意のパーツに含まれるポリゴンデータを、前記階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する縫合部と
を備えることを特徴とするモデリングシステム。
【請求項４】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングプログラムであって、コンピューターに、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、  前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、ユーザー操作に基づいて、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すパーツ選択ステップと、
前記交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、前記交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
前記交換用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、前記交換用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
を備える処理を実行させることを特徴とするモデリングプログラム。
【請求項５】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングプログラムであって、コンピューターに、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、  前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとして前記データセットから切り出すパーツ選択ステップと、
前記編集用データに含まれるパーツデータ又は動作制御データに変更を加えるパーツ編集ステップと、
前記編集用データに含まれるパーツデータデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、前記編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
前記編集用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、前記編集用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
を備える処理を実行させることを特徴とするモデリングプログラム。
【請求項６】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングプログラムであって、コンピューターに、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、  前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
前記データセット内の任意のパーツに含まれるポリゴンデータを、前記階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する縫合ステップと
を備える処理を実行させることを特徴とするモデリングプログラム。
【請求項７】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリング方法であって、
パーツ生成部が、前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、
動作管理部が、前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
データセット生成部が、前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
パーツ選択部が、任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すパーツ選択ステップと、
基礎データ取得部が、前記交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、前記交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
パーツ交換処理部が、前記交換用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、前記交換用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
を備えることを特徴とするモデリング方法。
【請求項８】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリング方法であって、
パーツ生成部が、前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、
動作管理部が、前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
データセット生成部が、前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
パーツ選択部が、ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとして前記データセットから切り出すパーツ選択ステップと、
パーツ編集部が、前記編集用データに含まれるパーツデータ又は動作制御データに変更を加えるパーツ編集ステップと、
基礎データ取得部が、前記編集用データに含まれるパーツデータの、データ構成に関する情報である編集用トポロジーデータを生成するとともに、前記編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
パーツ交換処理部が、前記編集用トポロジーデータと前記基礎トポロジーデータとを比較し、比較結果に基づいて、前記パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、前記編集用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
を備えることを特徴とするモデリング方法。
【請求項９】
仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリング方法であって、
パーツ生成部が、前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、
動作管理部が、前記各パーツデータの動作に関する情報を動作制御データとして生成する動作管理ステップと、
データセット生成部が、前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと、
縫合部が、前記データセット内の任意のパーツに含まれるポリゴンデータを、前記階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する縫合ステップと
を備えることを特徴とするモデリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングシステム及びモデリングプログラムに関する。
【背景技術】
【０００２】
従来、コンピュータグラフィックスの分野において、仮想空間上の３Ｄモデルを作成する場合、ボーンをジョイントにより連結して構成されたスケルトンと呼ばれる骨構造を用いる手法が採用されている。詳述すると、先ず、ポリゴンで構成される３次元モデルの内部に多数の骨となるボーンと、関節となるジョイントとから成るスケルトンデータを構築する。次いで、人体等の３Ｄモデルの皮膚や筋肉、頭髪、顔の各部等を、スケルトンデータに関連づけられたポリゴンで作り込んでいく。具体的には、皮膚としては、一般にウェイトと呼ばれる骨構造に連動して変形するポリゴンの制御情報を作成する必要がある。
【０００３】
近年では、テレビゲームやインターネットゲームなどの分野で、ユーザーが自分の分身となる３Ｄモデル、所謂「アバター」を作成し、このアバターを介して、ゲームやサービスに参加する形態が普及しつつある。このアバターについては、顔の形や、目・鼻などのパーツの色や形をユーザーが変更して自由に顔やスタイルをデザインすることが求められる（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−９２６４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、厳密な３Ｄモデルとしてパーツを編集するためには、例えば、人物のモデルや部分的なパーツが変更されると、そのパーツに関連する骨構造のみならず、そのパーツを動かすための筋肉や動作制御などの付随情報を変更する必要が生じ、場合によってはウェイトを再編集する必要も生じる。このような作業は複雑であるため、手間がかかるばかりでなく作業者には豊富な経験が求められる。
【０００６】
このため従来では、ユーザーが自由にアバターを編集させる場合には、顔のパーツなどを二次元的なデータとしておき、顔部の３Ｄパーツの表面に貼り付けるようにして、擬似的に３Ｄ化することで対応しているが、近年では、３Ｄ映像の精細化が進んでおり、よりリアルなアバターを、より簡単な操作で作成できるシステムの要請が高まっている。
【０００７】
そこで、本発明は、上記のような問題を解決するものであり、より精細でリアリティーのある３Ｄモデルを、高度な技能や経験を要することなく、簡単な操作で自由に作成・編集できるモデリングシステム、モデリングプログラム、及びモデリング方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングシステムであって、
前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成部と、
各パーツデータの動作に関する情報を動作制御データとして生成する動作管理部と、
パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、モデリングデータを生成するデータセット生成部と
を備えることを特徴とする。
【０００９】
他の発明は、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリング方法であって、
（１）前記仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、前記スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、
（２）前記各ボーンデータの前記スキンデータに対する影響度を定義するウェイトデータと、前記パーツデータの動作に関する情報とを、動作制御データとして生成する動作管理ステップと、
（３）前記パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、前記モデリングデータを生成するデータセット生成ステップと
を備えることを特徴とする。
【００１０】
これらの発明によれば、仮想空間上における立体的形状であるアバターを構成する各部位（身体、頭部、目、鼻、口等）を、その位置関係に従ってグループ化し、グループ毎にパーツデータとすることにより、交換用のパーツデータを選択して読み込むという簡単な操作で、ユーザーが任意のパーツを選択して好みのデザインのアバターを自由に作成することができる。このとき、アバターの骨格となるスケルトンデータや、皮膚や衣装となるポリゴンであるスキンデータとの整合性や、アニメーションに必要となる動作制御データなどの必要な情報は、相互の位置関係に基づいた階層構造をなすデータセットに格納されているため、複雑な作業を要することなく、所望のアバターを作成することができる。
【００１１】
上記発明において、任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すパーツ選択部と、交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得部と、交換用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択部により切り出されたパーツデータに関連する動作制御データ、又は、交換用データ内の動作制御データを選択して読み込むパーツ交換処理部とをさらに設けることができる。
【００１２】
この場合には、例えば、パーツを切り出す基となるベースモデルの中に含まれる情報を交換用データとして取得するか、或いは予め用意された交換用データを取得し、交換の対象となるモデリングデータであるベースモデルの中から交換用データに対応する部位のパーツデータを切り出し、切り出したパーツデータと交換用データとを比較し、ベースモデル又は交換用データのいずれかから、必要な情報を選択して抽出し、組み合わせることで、任意のパーツが交換された新たなアバターを作成することができる。
【００１３】
詳しくは、スケルトンデータに対する相対位置関係や、ポリゴンの構成、アニメーションに必要となる動作制御データなど、モデリングデータのデータ構成に関する情報をトポロジーデータとして読み込むが、その際、新たに読み込まれた交換用トポロジーデータと、ベースモデルの基礎トポロジーデータとを比較し、双方で一致している情報についてはベースモデルのトポロジーを用い、異なる情報については新たに読み込まれたパーツのトポロジーを用いることで、ベースモデルと新たなパーツとの整合性を維持しつつ、新たなパーツの特徴を反映させたアバターを作成することができる。
【００１４】
上記発明において、ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとしてデータセットから切り出すパーツ選択部と、編集用データに含まれるパーツデータ又は動作制御データに変更を加えるパーツ編集部と、編集用データに含まれるパーツデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得部と、編集用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択部により切り出されたパーツデータに関連する動作制御データ、又は、編集用データ内の動作制御データを選択して読み込むパーツ交換処理部とをさらに設けることができる。
【００１５】
この場合には、例えば、パーツを切り出す基となるベースモデルの中に含まれる情報を編集用データとして取得するか、或いは予め用意された編集用データを取得し、編集の対象となるモデリングデータであるベースモデルの中から編集用データに対応する部位のパーツデータを切り出し、切り出したパーツデータに変更を加える。切り出したパーツデータと、変更を加えられた新たな編集用データとを比較し、ベースモデル又は編集用データのいずれかから、必要な情報を選択して抽出し、組み合わせることで、任意のパーツが編集された新たなアバターを作成することができる。
【００１６】
上記発明において、データセット内の任意のパーツに含まれるポリゴンデータを、階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する縫合部をさらに設けることができる。
【００１７】
この場合には、ベースモデルに交換用のパーツを組み付ける際に、接合する部分に含まれるポリゴンの頂点のうち、座標が一致するものを同一化することにより、グラフィックを表示する際の無駄なレンダリングを省略することができ、処理の高速化を図ることができるとともに、不必要な頂点についての動作制御も省略することができ、パーツを入れ替えた際の、ポリゴンの不整合が発生する確率を低減することができる。
【００１８】
なお、上記モデリングプログラムを使用することで、特別な処理装置を必要とせず、上述したモデリングシステムを、様々な情報処理装置において実現することができる。すなわち、このモデリングプログラムを、汎用的なコンピューターやＩＣチップにインストールし、ＣＰＵ上で実行することにより、上述した各機能を有するモデリングシステムを容易に構築することができる。このプログラムは、例えば、通信回線を通じて配布することが可能であり、またスタンドアローンの計算機上で動作するパッケージアプリケーションとして譲渡することができる。そして、このようなモデリングプログラムは、コンピューターで読み取り可能な記録媒体に記録することができ、汎用のコンピューターや専用コンピューターを用いて、上述したシステムや方法を実施することが可能となるとともに、プログラムの保存、運搬及びインストールを容易に行うことができる。
【発明の効果】
【００１９】
以上述べたように、この発明によれば、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するにあたり、より精細でリアリティーのある３Ｄモデルを、高度な技能や経験を要することなく、簡単な操作で自由に作成・編集できる。
【図面の簡単な説明】
【００２０】
【図１】実施形態に係るモデリングプログラムの起動画面を示す説明図である。
【図２】実施形態に係るモデリングプログラムにおけるモデリングデータの階層構造を示す説明図である。
【図３】実施形態に係るモデリング方法の手順を示すフロー図である。
【図４】（ａ）実施形態に係るスケルトンデータを示す説明図であり、（ｂ）は、身体パーツを示す説明図である。
【図５】（ａ）実施形態に係る装飾パーツを示す説明図であり、（ｂ）は、装飾パーツを身体パーツと組み合わせた状態を示す説明図である。
【図６】（ａ）実施形態に係る身体パーツを示す説明図であり、（ｂ）は、頭部パーツを示す説明図である。
【図７】（ａ）実施形態に係る頭部パーツに付随する説明図であり、（ｂ）は、頭部パーツに目パーツを組み込んだ状態を示す説明図である。
【図８】実施形態に係るモデリング方法において、頭部パーツから目や口のパーツを切り出す手順を示す説明図である。
【図９】実施形態に係るモデリング方法におけるSkin_Weightデータを可視化した状態を示す説明図である。
【図１０】実施形態に係るモデリングシステムの全体構成を示す概念図である。
【図１１】実施形態に係るモデリング生成サーバーの内部構成を示すブロック図である。
【図１２】実施形態に係るモデリング配信サーバーの内部構成を示すブロック図である。
【図１３】実施形態に係るユーザー端末の内部構成を示すブロック図である。
【発明を実施するための形態】
【００２１】
以下に添付図面を参照して、本発明に係るモデリングシステム、モデリング方法及びモデリングプログラムの実施形態を詳細に説明する。本実施形態において、モデリングシステムは、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するシステムであり、本発明のモデリングプログラムを実行することにより構築される。
【００２２】
（モデリングシステム及びモデリングプログラムの概要）
本実施形態に係るモデリングシステムは、パーソナルコンピューターやサーバー装置などの汎用コンピューターに、本実施形態に係るモデリングプログラムをインストールし、実行することにより実現される。図１は、本実施形態に係るモデリングプログラムの起動画面を示す説明図である。
【００２３】
このモデリングプログラムは、人間や動物、ロボットなど、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するプログラムであり、図１に示すように、画面１０の右側にアバターＡ１が表示され、このアバターＡ１に対する操作を行うためのＧＵＩ１０１〜１０３が配置されている。
【００２４】
アバターＡ１は、頭部パーツＰ１と、身体パーツＰ２に大きく分けられ、頭部パーツＰ１には、頭髪パーツＰ１１や目パーツＰ１３などが付随し、身体パーツＰ２には、服や靴等の装飾パーツＰ３が付随している。そして、ＧＵＩ１０１〜１０３を操作することにより、上述した各パーツの入れ替え、髪の毛などの身体パーツの入れ替え、アバターの全身や、胸、顔などアバターの部位のサイズ又は形状の変更（モーフィング）、目の色などの変更（テクスチャの入れ替え）を施すことができる。
【００２５】
本実施形態において、アバターに関するモデリングデータは、パーツデータ及び動作制御データを、図２に示すような、身体上における相互の位置関係に基づいた階層構造１００に従ってデータセットに格納することで構成されている。このデータセットは、所定のファイル形式（例えば、FBX形式）で保存され、各パーツの表面に貼り付けられるテクスチャは、画像ファイル形式で保存される。このテクスチャについては、１パーツにつき１つの画像ファイルが関連づけられる。なお、複数のテクスチャを使用している場合は、１つの画像ファイルに統合される。
【００２６】
(1)パーツデータ
パーツデータは、人体の身体各部（本実施形態では頭部を除く。）のボーンデータ周囲の外表面を形作るスキンデータの他、人体やキャラクターの頭部や目などのボーンデータとの直接的な関係を有しないポリゴンデータなどが、相対位置関係に従ってグループ化され、グループ毎にアバターの部位としてまとめられたデータセットの１要素であり、仮想空間上において一塊のオブジェクトとして扱われる。なお、本実施形態のモデリングデータは、頭部や目などのパーツの他、上記身体のスキンデータも、すべてポリゴンデータで構成されており、ポリゴンデータは三角ポリゴンまたは四角ポリゴンとし、１パーツにつき全ポリゴンの頂点数は、42,000頂点数以下に設定される。
【００２７】
本実施形態では、図４（ｂ）に示すように、頭部パーツと身体パーツとに大きく分けられており、頭部パーツは、ボーンデータとの直接的な関係を有しないポリゴンデータを主なデータ要素とし、身体パーツは、ボーンデータ周囲の外表面を形作るスキンデータを主なデータ要素としている。各パーツでは、変形可能な範囲を予め規定するように、最小状態、中央値の状態及び最大状態のパーツの形がセットになって作成され、保存される。
【００２８】
(2)スケルトンデータ
ボーンデータは、仮想空間上における所定の２点により定義され所定の長さを有し、アバターの骨となるデータであり、図４（ａ）に示すように、複数のボーンデータＢ１〜２４２が複数連結されてアバターの骨格となるスケルトンデータが構成される。ボーンデータにはその両端における関節に相当するジョイントデータが含まれ、このジョイントデータにより、連結されたボーンの主従関係が決められ、従属するボーンの、親のボーンに対する相対移動範囲が規定される。
【００２９】
各パーツのスキンデータ（ポリゴンデータ）は、スケルトンデータとの相対位置に従って各頂点の座標が、直接的に又は他のパーツを介して間接的に定められ、スケルトンデータ内のボーンの動きに応じて、スキンデータ（ポリゴンデータ）の各頂点も移動するようになっている。例えば、アバターの首から下の身体パーツにはスケルトンデータが含まれ、首から上の頭部や、頭部に付随する目、鼻、口などのパーツは、首のボーンデータに対する相対位置だけが含まれるなど、パーツの特性によってスケルトンデータとの関連づけが異なる。
【００３０】
(3)スキンデータ
スキンデータは、本実施形態では、主に身体パーツのように、一つ又は複数のボーンデータに対して関連づけられて、オブジェクト（パーツ、アバター自身が含まれる）の外表面を定義するポリゴンデータである。具体的には、多数の頂点座標により定義された多面形状をなすポリゴンデータであり、各頂点座標は、所定のボーンデータに対する相対的位置関係や、相対移動範囲が規定されている。
【００３１】
また、各パーツやアバターを形成するポリゴンデータは、トポロジーデータにより、その組み方（頂点の数や、配置順序、頂点を結ぶエッジの構造などを含むメッシュ構造）が定義されている。
【００３２】
(4)動作制御データ（Skin_Weightデータ及びBlend_Shapeデータ）
動作制御データには、各ボーンデータに関連づけられたスキンデータに対する影響度を定義するウェイトデータ（Skin_Weightデータ）と、又は頭部や目などのようにボーンデータに直接的には関連づけられていないが、間接的に動作が規定されるパーツデータの動作に関する情報（Blend_Shapeデータ）とが含まれる。Skin_Weightデータは、主にアバターの身体の動きを制御するためのデータであり、Blend_Shapeデータは、顔部分や顔に付随する各パーツの動きを制御するためのデータである。このような動作制御データは、パーツデータとともに、相互の位置関係に基づいた階層構造に従ってデータセットに格納又は関連づけされ、モデリングデータを構成する。
【００３３】
（モデリング方法の概要）
次いで、本実施形態におけるモデリング方法について詳述する。図３は、本実施形態に係るモデリング方法の手順を示すフロー図である。
【００３４】
(1)初期化プロセス
アバターの作成・変種作業の開始時に、各種データの初期化を行う。先ず、 すべてのパーツが格納されたFBXファイルとテクスチャファイルを読み込む（Ｓ１０１）。この読み込まれたファイルに含まれるデータセットから、各パーツの階層レベルを取得する（Ｓ１０２）とともに、各パーツの親ＩＤを取得する。この親ＩＤとは、上記階層レベルに従って、上位に位置するパーツを特定するＩＤであり、この親ＩＤによって各パーツの主従関係、位置関係が定められる。
【００３５】
次いで、各パーツのスキンデータ（ポリゴンデータ）の頂点の数を取得するとともに、ベースモデルの対応する部位のポリゴンデータについて、頂点同士を比較し、各頂点について、同じ座標を計算する（Ｓ１０５）。すなわち、ベースモデルの身体パーツの頂点と同じ座標をもつ、パーツの頂点の座標を検索し、その数をカウントする。このとき、座標が一致すれば同一の頂点としてカウントし、不一致であれば異なる超点数としてカウントする。
【００３６】
次いで、差し替え可能なパーツ、及び重なっている部分のあるパーツの登録を行う（Ｓ１０６及びＳ１０７）。具体的には、ステップＳ１０５で行った一致・不一致のカウント数に応じて、異なる頂点数が閾値以下であれば、ベースモデルのパーツと同一であるとみなし、そのパーツに対して、“同じ”旨のマークを付与し、ベースモデルの身体パーツの各頂点に対して、階層上位（親）の身体パーツと”同じ”頂点が存在していたら、” 入れ替え（Replacement）”として登録される。一方、身体パーツのいくつかの頂点が”同じ頂点”として存在していたら、その頂点は”縫い合わせ”として登録される。階層下位（子）の身体パーツが親の身体パーツに対して、空白が存在していたら、後述する接続（Connect）処理のために、”接続（Connect）”と登録される。
【００３７】
(2)アニメーションの各フレームの入力計算
パーツモデルについては、モーフィングサイズパラメータ、選択されたパーツのトポロジー、アニメーションファイル（ジョイントデータ、Blend_Shapeデータ）が読み込まれる。なお、アニメーションデータは、ファイル形式で取得されなくてもよく、例えばデータがストリーミング配信により順次取得される方式であってもよい。
そして、パーツやトポロジーに変更があったか判断が行われ（Ｓ１０８）、変更があれば、ステップＳ１０９に進み、変更がなければ変形をすることなく、パーツの入れ替え（Ｓ１１２）に進む。
【００３８】
(3)パーツの連結
上記ステップＳ１０９では、Blend_Shapeデータの計算をし、すべてのトポロジーと変異に適用する。具体的には、Blend_Shapeデータは、各トポロジーのすべての頂点に対して、移動量を定義しており、新しい頂点の位置は下記式で計算される。
【数１】
0006340313.tif 000002
【００３９】
次いで、モーフィングによる変形、及びサイズ変更による変更を実行する（Ｓ１１０及びＳ１１１）。具体的には、ユーザーがインプットした値によって変形量、サイズが決定される。このとき、サイズが変更されたパーツに付随するパーツのサイズも変更される。例えば、頭部のサイズを大きくした場合には、その頭部に付随する眉毛などのパーツのサイズも大きくなる。
【００４０】
特に、このモーフィングでは、各パーツの頂点、線、顔や身体の動作制御データ（Blend_Shapeデータ、Skin_Weightデータ）について、最大モデルと最小モデルとの間を補間して、滑らかに拡大・縮小するようにする。具体的には、Blend_Shapeデータの演算処理を実行した後に、モデルをmp,t,kとすると、変形グループ(variant group)は、Gp,t,g={mp,t,k0, ..., mp,t,kn}で定義される。ここで、pはパーツ番号であり、 tはトポロジーであり、kは変形量(userが入力）であり、gはグループ番号である。
【００４１】
そして、各変形グループに対して、ユーザーがスライダーを操作するなどして、変形量が入力されると、Sp,t,g がスライダー値として取得される。ここで、スライダー値はSp,t,g∈[0,n] とする。ここで、nはvariant グループ番号である。
【００４２】
上記補間は、線形補間を用い、座標間を直線的に補間する。この補間処理の下式により求められる。
【数２】
0006340313.tif 000003
ここで、r∈{0,...,n}とし、r≦ Sp,t,g<r+1.すべての頂点に対して、下記式によって新しい頂点を計算する。
【数３】
0006340313.tif 000004
また、上述したように、サイズが変更されたパーツに付随するパーツのサイズも変更するときの処理は、以下の通りである。
【００４３】
例えば、頭を大きくした時の眉毛も一緒に大きくする際、Blend_Shapeデータの演算やモーフィングで頂点座標を移動すると、元々の形と異なる形になっている。そのため、3D空間内でねじれが起きる場合がある。本実施形態では、このサイズ変更の際に生じるねじれを下記の方法によって修正する。
【００４４】
先ず、δva,iをbody part pの頂点vpiの元の座標からモーフィング後の座標までの移動とする。Aをすべてのbody part pの親の集合とすると、新しい頂点は、下記の式で計算される。
【数４】
0006340313.tif 000005
なお、オリジナルのポジションでは、Blend_Shapeデータに基づく移動もモーフィングによる移動もないものとする。
【００４５】
次いで、パーツの入れ替え（Replacement）を実行し（Ｓ１１２）、その後、上位（親）のパーツと同じ座標に頂点座標をコピーし、Stitching(縫い合わせ) を実行し（Ｓ１１３）、子パーツを縫い合わせる。その後、最適化処理（Global optimization）を実行し、メッシュの変更をスムーズにする。
【００４６】
上記パーツの入れ替え（Replacement）では、ユーザーがパーツの入れ替えを実行すると、自動的に縫い合わせ処理（Stitching）が実行される。この入れ替え(Replacement)では、ベースモデル及び交換用パーツのスキンデータ内における、同じ頂点同士を入れ替える。
【００４７】
また、上記縫い合わせ処理（Stitching）では、ユーザーがパーツの入れ替えを実行すると、切り出されたスキンデータの外縁であるOutlineと、ベースモデル側の外縁に対応するOutlineを重ね合わせて、比較し、縫い合わせを行う。この時、無駄なレンダリングを省くため、交換用パーツに含まれる頂点のみを採用する。
【００４８】
上述した、入れ替えるパーツのOutlineとOutlineの座標が異なる場合は、その間に頂点とedgeを発生させてつなぐConnect処理を実行する。具体的には、下位のパーツの外縁上（Outline）の各頂点vcoiに対して、上位のパーツの外縁（Outline）上の各頂点vaojの最も近い頂点を計算する。このとき、KNNを用いて、k個の最も近い頂点vaojに対して、ある閾値より距離が近い場合に、それらの中間に頂点を発生させる。この新しく発生した頂点の間隔が閾値よりも小さくなるまで、新たに頂点を発生させ、発生した頂点の間は、三角形になるように線で結合する。
【００４９】
その後、動作制御データのパラメータを複製する（Ｓ１１４）。詳述すると、顔部分を動かすためのパラメータであるBlend_Shapeデータの値をベースモデルの対応するパーツから複製する。このとき、ベースとなるパーツとトポロジーが同じ場合には、ベースモデルのBlend_Shapeデータをそのまま使用し、トポロジーが異なる場合には、そのパーツのBlend_Shapeデータを使用する。このBlend_Shapeデータの複製と併せて、身体を動かすためのパラメータであるSkin_Weightデータを、ベースモデルの対応パーツから複製する。このとき、ベースとなるパーツとトポロジーが同じ場合には、ベースモデルのSkin_Weightデータをそのまま使用し、トポロジーが異なる場合には、そのパーツのSkin_Weightデータを使用する。
【００５０】
そして、完成したアバターに対してアニメーションのための動作操作があれば（Ｓ１１５に置ける「Ｙ」）、アバターを動かし（Ｓ１１６）、最後に、縫い合わせたパーツ、パラメータ等を一つのフルモデルとしてFBXファイルに出力する（Ｓ１１７）。
【００５１】
（交換用パーツの作成方法）
以上説明したモデリング方法に用いられる交換用パーツの作成方法について、以下に詳述する。
【００５２】
先ず、パーツを準備するために、ベースモデルを作成する。このベースモデルとは、作成される交換用パーツの基となるアバターのフルモデルであり、このベースモデルから切り出されたパーツに変形を加えて、交換用パーツが作成される。フルモデルとは、スケルトンデータ、動作制御データ（Skin_Weightデータ、Blend_Shapeデータ）、メッシュ構造等のトポロジーデータといった形と動かすために必要な要素がすべて含まれている基本データである。
【００５３】
なお、このベースモデルは複数種作成することができ、すべてのベースモデルには必ず共通のスケルトンデータが導入され、その共通スケルトンには、必要なボーンの主従関係を規定するジョイントデータや円滑化接続処理によりSmooth Bindデータが設定され、共通スケルトンに対するスキンデータの調整も完了されている。
【００５４】
次いで、上記フルモデルから、変更したいパーツを切り出し、切り出したパーツをベースに、新しい形を作成する。このとき、トポロジーは同じであっても同じでなくてもよい。切り出したパーツについては、どこに付随するパーツであるか示すために階層構造におく(目は顔に付随するパーツである等)。
【００５５】
アバターの各部位に関するパーツの切り出しについて、以下にパーツ毎に説明する。
(1)ベースモデルからのパーツの切り出し
○スケルトンの切り出し（マスタースケルトンの作成）
上記ベースモデルから、図４（ａ）に示すような、必要な部位のスケルトンデータを切り出し、パーツを作成する際に用いる各パーツに共通のマスタースケルトンを作成する。
【００５６】
○スキンデータの切り出し
上記ベースモデルから、所定の部位をパーツとして選択して切り出し、交換用のパーツデータを作成する。なお、作成された各パーツのデータ名は、所定のルールに従って付けられる。
【００５７】
ここで作成される各パーツについては、変形可能な範囲を予め規定するように、最小状態、中央値の状態及び最大状態のパーツの形がセットになって作成され、各データ名も、最小、最大などの変形量の状態が分かる名前とし、その他の特徴や、関連づけられるトポロジーデータが変更された場合には、それが分かるように名前が付けられる。
【００５８】
この切り出されたパーツに対応するトポロジーデータを作成する。このトポロジーの生成に関し、ベースモデルのトポロジーと、切り出された変形パーツのトポロジーとが一致する必要があるため、切り出されたパーツのスキンデータに対しては、頂点の追加、エッジの追加は行わず、ベースモデルをコピーして頂点移動を行い、ベースモデルのトポロジーのうち必要箇所を複製して変形パーツのトポロジーを作成する。
【００５９】
○身体部分（Body）の切り出し
図４（ｂ）に示すように、頭部を除く身体部分（Body）は一塊の「身体パーツ」として取り扱う。このとき、Bodyは、衣類などの他のパーツの取り除いた、裸の状態で処理を行う。衣類の切り出しは、別途行う。
【００６０】
図５及び図６（ａ）に示すような衣類パーツについては、Body以外のポリゴンを切り出して、Clothとして作成する。このとき、衣類の形状のポリゴン（トポロジー共通）を別途用意し、Bodyのウェイトデータとともに読み込み、Bodyのウェイトデータを、衣類のポリゴンに適用する。その後、Bodyのポリゴンを削除して、Clothのみを衣類パーツとして保存する。なお、トポロジーが異なる衣類については、異なるトポロジーの名前が含まれたファイル名を、当該衣類パーツに付けて、トポロジーと衣類パーツとを関連づけておく。
【００６１】
○顔部の切り出し
図６（ｂ）に示すような顔部については、Blend_Shapeデータが関連づけられているスキンデータ内のポリゴングループを、全て顔部のアウトライン用パーツとして、ベースモデルから切り出して顔部パーツとして使用する。具体的には、上記ポリゴングループを、Blend_Shapeデータを含んだ状態で、共通スケルトンの首関節（Neck joint）配下に主従関係を定義する「Parent化」を行う。このとき、Neck jointに対するParent化のみ行う。
【００６２】
○顔部からの各パーツの切り出し
次いで、図７に示すように、顔部から目や口といった各パーツを切り出す。
【００６３】
FBXの必要なポリゴングループから分離処理（Separate）を行い、目のエリアを切り出す。ここでは、パーツを構成するポリゴンのグループ情報と、変形（Transform）情報を維持する。切り出されたパーツについては、ベースモデルに使用されているポリゴンと同じ名前が有る場合、適宜ポリゴン名の変更を行う。
【００６４】
この目のエリアの切り出しは、具体的には、顔のBlend_Shapeデータに関連づけられているグループポリゴンと、切り出すエリアに含まれるポリゴンを抽出することで行う。この抽出処理は、Blend_Shapeデータを設定しているFaceグループを選択し、分離処理（Separate）を行う。
【００６５】
目に関するスキンデータ（フェース）を抽出するためには、先ず、図８に示すように、顔部分において、切り出すエリアの外縁にある頂点をエッジ（Outline）として、その周辺にある不必要なフェースポリゴンを削除する。さらに分離処理（Separate）を行い、目のフェースを抽出し、抽出したFaceポリゴン部分の名前を、固有のポリゴン名（例えばEyeLeftFace等）に変更する。ここで、固有のポリゴン名とは、複数のFBXファイルを読み込む際に、他のファイルにおけるポリゴン名と重複しない名称である。
【００６６】
そして、抽出されたEyeLeft,EyeRightの中央値モデル（Baseモデル）、最大モデル、最小モデルを作成する。具体的には、先ず、作成したEyeLeft.mbを読み込み、拡大・縮小したいポリゴンを選択し、拡大・縮小する方向に移動させる。このとき、Blend_Shapeデータに基づく処理に使用していたFaceポリゴン（グループ）を分離（Separate）した時の変形（transform）情報は維持しておく。 なお、この最大モデル、最小モデルについては、ポリゴン構成を変えずに作成する。また、切り口となった外縁に位置するポリゴン（Outline）は変形させない。
【００６７】
次いで、目に使用しているテクスチャを１枚に統合する。
その後、UV展開を行う。具体的異は、マスタースケルトンを読み込み、首部分（Neck joint）又は首に追随するボーン（EyeLeft joint）に対するジョイントデータ（主従関係や可動範囲）を作成し、必要に応じて結合（Combine）処理を実行する。
【００６８】
○顔部からの口・鼻部分の切り出し
形状を変形させて違うパーツを作る場合は、Outlineは変更せず、エッジ内のポリゴンだけ変形を行う。トポロジーを変える場合は（頂点数）、アウトラインの形は変えてはいけない。
【００６９】
このようにして準備されたパーツを組み合わせる処理は、以下の手順で行われる。先ず、顔と身体のパーツを、それぞれ独自にモーフィング(最大と最小の間をなめらかにつなぐ)処理を行う。次いで、顔を動かすためのパラメータ(Blend_Shapeデータの値)を、ベースとなったフルモデルの対応するパーツからコピーするとともに、身体を動かすためのパラメータ(Skin_Weightデータ)をパーツのベースとなったフルモデルからコピーする。このとき、トポロジーが異なる状態であってもよい。
【００７０】
そして、ユーザー操作に基づいて、ユーザーが選択したパーツを入れ替える。このとき、入れ替えられたパーツについて、自動的に縫い合わせ処理が実行される。また、必要に応じて、身体全体に最適化を行う。
【００７１】
（モデリングシステムの構造）
次いで、図３は、本実施形態に係るモデリングシステムの全体構成を示す概念図である。本実施形態において、モデリングシステムは、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するシステムである。通信ネットワーク５には、ユーザーが所持するユーザー端末１と、モデリングデータを生成するモデリング生成サーバー３と、モデリング生成サーバー３によって生成されたモデリングデータを保存・配信するデータ配信サーバー２とが接続されている。
【００７２】
通信ネットワーク５は、通信プロトコルＴＣＰ／ＩＰを用いたＩＰ網であって、種々の通信回線（電話回線やＩＳＤＮ回線、ＡＤＳＬ回線、光回線などの公衆回線、専用回線、無線通信網）を相互に接続して構築される分散型の通信ネットワークである。この通信ネットワーク５には、１０ＢＡＳＥ−Ｔや１００ＢＡＳＥ−ＴＸ等によるイントラネット（企業内ネットワーク）や家庭内ネットワークなどのＬＡＮなども含まれる。
【００７３】
ユーザー端末１及び管理者用端末３は、ＣＰＵを備えた演算処理装置であり、通信機能によりインターネット５等の通信ネットワークに接続可能となっており、ブラウザソフトなどにより、表示情報を受信して表示するとともに、ユーザーの操作信号を送信する機能を備えている。この情報端末としては、パーソナルコンピューター等の汎用コンピューターや、機能を特化させた専用装置により実現することができ、モバイルコンピュータやＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）、携帯電話機が含まれる。
【００７４】
モデリング生成サーバー３は、本システムの管理者の操作に応じてモデリングデータを生成して管理するサーバー装置であり、本システムの管理者が所持する情報処理端末と接続可能となっている。そして、モデリング生成サーバー３において生成されたモデリングデータは、データ配信サーバー２に送信される。
【００７５】
データ配信サーバー２は、ユーザー管理、モデリングデータの配信などを制御するサーバー装置である。また、データ配信サーバー２には、Ｗｅｂサーバーが含まれ、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）等のドキュメントシステムにおいて、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルや画像ファイル、音楽ファイルなどの情報送信を行うサーバーコンピューター或いはその機能を持ったソフトウェアであり、モデリングデータベース２ａ内にモデリングデータなどの情報を蓄積しておき、ユーザー端末１上で実行されるアプリケーションの要求に応じて、モデリングの編集操作を受け付け、編集後のモデリングデータをユーザー端末１に配信する。
【００７６】
（各装置の内部構造）
次いで、上述したモデリングシステムを構成する各装置の内部構造について説明する。図１１は、本実施形態に係るモデリング生成サーバー３の内部構成を示すブロック図であり、図１２は、本実施形態に係るモデリング配信サーバー２の内部構成を示すブロック図であり、図１３は、本実施形態に係るユーザー端末１の内部構成を示すブロック図である。なお、説明中で用いられる「モジュール」とは、装置や機器等のハードウェア、或いはその機能を持ったソフトウェア、又はこれらの組み合わせなどによって構成され、所定の動作を達成するための機能単位を示す。
【００７７】
（１）モデリング生成サーバー３の内部構成
先ず、モデリング生成サーバー３の内部構成について説明する。モデリング生成サーバー３は、単一のサーバー装置の他、Ｗｅｂサーバーやデータベースサーバーなど複数のサーバー群から構成することができ、本実施形態では、図１１に示すように、通信インターフェース３１と、制御部３２と、記憶部３３と、入出力インターフェース３４とを備えている。
【００７８】
記憶部３３は、本システムに関する各種の情報を蓄積するデータベース群であり、ここでは、モデリングデータベース３３１を備えている。なお、各データベースは、単体のデータベースとして構成してもよいし、複数のデータベース間でリレーションシップを設定するようにしてもよい。
モデリングデータベース３３１は、モデリング生成モジュール郡３１０によって生成されたモデリングデータを蓄積するデータベースである。
【００７９】
通信インターフェース３１は、データ通信を行うための通信インターフェースであり、通信ネットワーク５を介してモデリング配信サーバー２や管理者が所持する情報処理端末と接続可能となっている。入出力インターフェース３４は、管理者が所持する情報処理端末と接続されたインターフェースであり、管理者が所持する情報処理端末のマウスやキーボードなどの操作デバイスからの操作信号が、ユーザー操作として入力され、管理者が所持する情報処理端末のモニタ等にモデリングデータを表示させる。
【００８０】
制御部３２は、ＣＰＵやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等のプロセッサ、メモリ、及びその他の電子回路等のハードウェア、或いはその機能を持ったプログラム等のソフトウェア、又はこれらの組み合わせなどによって構成された演算モジュールであり、プログラムを適宜読み込んで実行することにより種々の機能モジュールを仮想的に構築し、構築された各機能モジュールによって、各部の動作制御、管理者操作に対する種々の処理を行っている。そして、本実施形態において、制御部３２には、モデリング生成制御部３１０と、モデリング編集制御部３２０と、モデリングデータ配信部３３０とを備えている。
【００８１】
モデリング生成制御部３１０は、モデリングデータを生成するモジュール群であり、パーツ生成部３１１と、動作管理部３１２と、データセット生成部３１３とを備えている。
パーツ生成部３１１は、仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するモジュールである。
動作管理部３１２は、各ボーンデータのスキンデータに対する影響度を定義するウェイトデータと、パーツデータの動作に関する情報とを、動作制御データとして生成するモジュールである。
データセット生成部３１３は、パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、モデリングデータを生成するモジュールである。
【００８２】
モデリング編集制御部３２０は、生成されたモデリングデータを交換・編集するモジュール群であり、本実施形態では、生成されたモデリングデータのパーツを交換する交換機能と、生成されたモデリングデータのパーツを編集する編集機能とを有している。
【００８３】
先ず、モデリング編集制御部３２０のパーツ交換機能について説明する。パーツ交換機能としてモデリング編集制御部３２０には、パーツ選択部３２１と、基礎データ取得部３２２と、パーツ交換処理部３２３と、縫合部３２４とを備えている。
【００８４】
パーツ選択部３２１は、  任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すモジュールである。
【００８５】
基礎データ取得部３２２は、交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得するモジュールである。
【００８６】
パーツ交換処理部３２３は、交換用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択部３２１により切り出されたパーツデータに関連する動作制御データ、又は、交換用データ内の動作制御データを選択して読み込むモジュールである。
【００８７】
縫合部３２４は、データセット内の任意のパーツに含まれるポリゴンデータを、階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化するモジュールである。
【００８８】
一方、パーツ編集機能としてモデリング編集制御部３２０には、パーツ選択部３２１と、基礎データ取得部３２２と、パーツ交換処理部３２３と、縫合部３２４とを有している。
【００８９】
パーツ選択部３２１は、ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとしてデータセットから切り出すモジュールである。ここで、パーツ選択部３２１には、パーツ編集部３２２ａを備えている。パーツ編集部３２２ａは、編集用データに含まれるパーツデータ又は動作制御データに変更を加えるモジュールである。
【００９０】
基礎データ取得部３２２は、編集用データに含まれるパーツデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得するモジュールである。
【００９１】
パーツ交換処理部３２３は、編集用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択部３２１により切り出されたパーツデータに関連する動作制御データ、又は、編集用データ内の動作制御データを選択して読み込むモジュールである。
【００９２】
また、縫合部３２４は、データセット内の任意のパーツに含まれるポリゴンデータを、階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する。
【００９３】
モデリングデータ配信部３３０は、コンテンツ生成制御部３１０で生成されたモデリングデータを、通信インターフェース３１を通じてコンテンツ配信サーバー２に配信するモジュールである
（２）モデリング配信サーバー２の内部構成
次いで、モデリング配信サーバー２の内部構成について説明する。モデリング配信サーバー２は、単一のサーバー装置の他、Ｗｅｂサーバーやデータベースサーバーなど複数のサーバー群から構成することができ、本実施形態では、図１２に示すように、通信インターフェース２１と、制御部２２と、データベース２ａとを備えている。
【００９４】
データベース２ａは、本システムに関する各種の情報を蓄積するデータベース群であり、ここでは、モデリングデータベース２０１と、会員データベース２０２とを備えている。なお、各データベースは、単体のデータベースとして構成してもよいし、複数のデータベース間でリレーションシップを設定するようにしてもよい。
【００９５】
モデリングデータベース２０１は、モデリング生成サーバー３によって生成されたモデリングデータを蓄積するデータベースであり、モデリングデータベース３３１と同様なデータ構成となっている。
【００９６】
会員データベース２０２は、ユーザー端末１を所持する顧客に関する情報を蓄積するデータベースであり、本実施形態では、ユーザー端末１を識別するユーザーＩＤ（ユーザー端末１のＩＰアドレス等）及びパスワードに、電話番号、メールアドレス、ユーザーの氏名、年齢、性別、住所などの個人情報の他、作成したモデリングデータを識別するモデリングＩＤ、決済情報などが関連付けて記録することができる。
【００９７】
通信インターフェース２１は、データ通信を行うための通信インターフェースであり、通信ネットワーク５を介してユーザー端末１に接続可能となっている。
【００９８】
制御部２２は、ＣＰＵやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等のプロセッサ、メモリ、及びその他の電子回路等のハードウェア、或いはその機能を持ったプログラム等のソフトウェア、又はこれらの組み合わせなどによって構成された演算モジュールであり、プログラムを適宜読み込んで実行することにより種々の機能モジュールを仮想的に構築し、構築された各機能モジュールによって、各部の動作制御、管理者操作に対する種々の処理を行っている。そして、本実施形態において、制御部２２には、認証部２６と、操作信号取得部２５と、編集制御部２３と、モデリングデータ配信部２４とを備えている。
【００９９】
認証部２６は、アクセス者の正当性を検証するコンピューター或いはその機能を持ったソフトウェアであり、各ユーザーを特定するユーザーＩＤに基づいて認証処理を実行する。また、任所部２６は、本システムを利用するユーザーの会員登録を処理する機能も有しており、ユーザー端末１からのアクセスを受け付けて会員登録を行う。具体的に、会員登録部２２１は、先ず、ユーザー端末１を特定するためのユーザーＩＤ等を取得して会員データベース２３１に記録するとともに、その後、ユーザーからの個人情報入力があった場合には、そのユーザーＩＤに、ユーザーが所持するユーザー端末１に関する情報（ユーザー端末１のメールアドレス、電話番号、ユーザーの氏名、年齢、住所、性別、決済情報などの個人情報など）を会員データベース２３１に関連付けて記録することができる。また、認証部２６は、ユーザーが編集等したモデリングデータを識別するモデリングＩＤを会員データベース２０２に関連付けて記録する。
【０１００】
操作信号取得部２５は、ユーザー端末１からの操作信号を受信し、操作信号に対応する制御信号を各部に出力するモジュールである。この操作信号取得部２５からの制御信号に基づいて、モデリングデータベース２０１内のモデリングデータを配信したり、モデリングデータの編集処理を編集制御部２３で実行させたりする。
【０１０１】
モデリングデータ配信部２４は、ユーザー操作に応じてモデリングデータをユーザー端末１に配信するモジュールであり、ユーザー操作によって選択されたモデリングデータ全体やパーツデータをユーザー端末１の画面上に表示可能に配信する。
【０１０２】
編集制御部２３は、ユーザー操作に応じてモデリングデータの編集を受け付けるモジュール群であり、本実施形態では、パーツ選択部２３１と、パーツ編集部２３２と、基礎データ取得部２３３と、パーツ交換処理部２３４と、縫合部２３５とを備えている。
【０１０３】
パーツ選択部２３１は、ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとしてデータセットから切り出すモジュールである。
【０１０４】
パーツ編集部２３２は、編集用データに含まれるパーツデータ又は動作制御データに変更を加えるモジュールである。
【０１０５】
基礎データ取得部２３３は、  編集用データに含まれるパーツデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得するモジュールである。
【０１０６】
パーツ交換処理部２３４は、  編集用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択部２３１により切り出されたパーツデータに関連する動作制御データ、又は、編集用データ内の動作制御データを選択して読み込むモジュールである。
【０１０７】
縫合部２３５は、データセット内の任意のパーツに含まれるポリゴンデータを、階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化するモジュールである。
【０１０８】
（３）ユーザー端末１の内部構成
次いで、ユーザー端末１の内部構成について説明する。ユーザー端末１の内部構成について説明する。図に示すように、ユーザー端末１は、通信インターフェース１１と、入力インターフェース１２と、出力インターフェース１３と、アプリケーション実行部１４と、メモリ１５とを備えている。
【０１０９】
通信インターフェース１１は、データ通信を行うための通信インターフェースであり、無線等による非接触通信や、ケーブル、アダプタ手段等により接触（有線）通信をする機能を備えている。入力インターフェース１２は、マウス、キーボード、操作ボタンやタッチパネルなどユーザー操作を入力するデバイスである。また、出力インターフェース１３は、ディスプレイやスピーカーなど、映像や音響を出力するデバイスである。特に、この出力インターフェース１３には、液晶ディスプレイなどの表示部１３ａが含まれている。
【０１１０】
メモリ１５は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種のアプリケーション用のプログラム、その他のデータ等などを記憶する記憶装置であり、このメモリ１５内には、モデリング配信サーバー２から取得したモデリングデータを蓄積する。
【０１１１】
アプリケーション実行部１４は、一般のＯＳやブラウザソフトなどのアプリケーションを実行するモジュールであり、通常はＣＰＵ等により実現される。このアプリケーション実行部１４では、本発明に係るモデリングプログラムが実行されることで、モデリング配信サーバー２と通信を行い、例えば、編集対象となるモデリングデータ、及びパーツデータの選択、パーツデータの編集処理が行われ、各操作に応じた表示情報が表示部１３ａ上に表示される。
【０１１２】
（モデリングプログラム）
また、上述した本実施形態に係るモデリングシステム法は、所定の言語で記述されたモデリングプログラムをコンピューター上で実行することにより実現することができる。すなわち、本実施形態に係るプログラムは、仮想空間上において、所定の立体的形状が定義されたアバターに関するモデリングデータを生成及び編集するモデリングプログラムであって、コンピューターに、
（１）仮想空間上における所定の２点により定義されるボーンデータを複数連結してスケルトンデータを構成し、スケルトンデータに対して関連づけられオブジェクトの外表面をポリゴンによって定義するスキンデータを、位置関係に従ってグループ化し、グループ毎にパーツデータを生成するパーツ生成ステップと、
（２）各ボーンデータのスキンデータに対する影響度を定義するウェイトデータと、パーツデータの動作に関する情報とを、動作制御データとして生成する動作管理ステップと、
（３）パーツデータ及び動作制御データを、相互の位置関係に基づいた階層構造に従ってデータセットに格納し、モデリングデータを生成するデータセット生成ステップと
を備える処理を実行させる。
【０１１３】
また、このモデリングプログラムは、モデリングデータのパーツを交換する機能として、コンピューターに、
（１）任意のパーツデータ及びこのパーツデータに対応する動作制御データを交換用データとして取得するとともに、取得された交換用データに対応するパーツデータ及び動作制御データを、交換の対象となるモデリングデータから選択し、選択されたパーツデータをそのデータセットから切り出すパーツ選択ステップと、
（２）交換用データに含まれるパーツデータのデータ構成に関する情報である交換用トポロジーデータを取得するとともに、交換の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
（３）交換用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、交換用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
をさらに実行させる。
【０１１４】
また、このモデリングプログラムは、モデリングデータのパーツを編集する機能として、コンピューターに、
（１）ユーザー操作に基づいて、編集の対象となるモデリングデータから任意のパーツデータを選択するとともに、選択されたパーツデータ及びこのパーツデータに対応する動作制御データを、編集用データとしてデータセットから切り出すパーツ選択ステップと、
（２）編集用データに含まれるパーツデータ又は動作制御データに変更を加えるパーツ編集ステップと、
（３）編集用データに含まれるパーツデータのデータ構成に関する情報である編集用トポロジーデータを生成するとともに、編集の対象となるモデリングデータのデータ構成に関する情報である基礎トポロジーデータを取得する基礎データ取得ステップと、
（４）編集用トポロジーデータと基礎トポロジーデータとを比較し、比較結果に基づいて、パーツ選択ステップで切り出されたパーツデータに関連する動作制御データ、又は、編集用データ内の動作制御データを選択して読み込むパーツ交換処理ステップと
をさらに実行させる。
【０１１５】
また、上記の処理において、モデリングプログラムは、コンピューターに、
データセット内の任意のパーツに含まれるポリゴンデータを、階層構造の上位にあるパーツのポリゴンデータと比較し、各ポリゴンデータに含まれる各頂点の座標の一致・不一致を判断し、一致する頂点同士を同一化する縫合ステップを実行させる。
【０１１６】
そして、このモデリングプログラムを、ユーザー端末やＷｅｂサーバー等のコンピューターやＩＣチップにインストールし、ＣＰＵ上で実行することにより、上述した各機能を有するシステムを容易に構築することができる。このモデリングプログラムは、例えば、通信回線を通じて配布することが可能であり、またパッケージアプリケーションとして譲渡することができる。そして、このようなモデリングプログラムは、パーソナルコンピューターで読み取り可能な記録媒体に記録することができ、汎用のコンピューターや専用コンピューターを用いて、上述したシステム、装置、サーバーを実施することが可能となるとともに、モデリングプログラムの保存、運搬及びインストールを容易に行うことができる。
【符号の説明】
【０１１７】
Ａ１…アバター
Ｂ１〜２４２…ボーンデータ
Ｐ１…頭部パーツ
Ｐ１１…頭髪パーツ
Ｐ１３…目パーツ
Ｐ２…身体パーツ
Ｐ３…装飾パーツ
２…コンテンツ配信サーバー
２ａ…モデリングデータベース
３…管理者用端末
５…インターネット
１０…画面
１１…通信インターフェース
１２…入力インターフェース
１３…出力インターフェース
１３ａ…表示部
１４…アプリケーション実行部
１５…メモリ
２１…通信インターフェース
２２…制御部
２３…編集制御部
２４…モデリングデータ配信部
２５…操作信号取得部
２６…認証部
３１…通信インターフェース
３２…制御部
３３…記憶部
３４…入出力インターフェース
１００…階層構造
１０１〜１０３…ＧＵＩ
２０１…モデリングデータベース
２０２…会員データベース
２２１…会員登録部
２３１…パーツ選択部
２３２…パーツ編集部
２３３…基礎データ取得部
２３４…パーツ交換処理部
２３５…縫合部
３１０…モデリング生成モジュール郡
３１１…パーツ生成部
３１２…動作管理部
３１３…データセット生成部
３２０…モデリング編集制御部
３２１…パーツ選択部
３２２…基礎データ取得部
３２２ａ…パーツ編集部
３２３…パーツ交換処理部
３２４…縫合部
３３０…モデリングデータ配信部
３３１…モデリングデータベース
【図１】
0006340313.tif 000006
【図２】
0006340313.tif 000007
【図３】
0006340313.tif 000008
【図４】
0006340313.tif 000009
【図５】
0006340313.tif 000010
【図６】
0006340313.tif 000011
【図７】
0006340313.tif 000012
【図８】
0006340313.tif 000013
【図９】
0006340313.tif 000014
【図１０】
0006340313.tif 000015
【図１１】
0006340313.tif 000016
【図１２】
0006340313.tif 000017
【図１３】
0006340313.tif 000018