以下、本発明の好ましい実施の形態として、ゲームに登場させる人型のキャラクタ(以下、「ゲームキャラクタ」という。)の顔の表面形状を編集する場合を例に図面を参照して具体的に説明する。
図1は、本発明に係る顔画像編集用プログラムが実行される顔画像編集装置の基本構成を示すブロック図である。
顔画像編集装置1は、CPU(Central Processing Unit)2、ROM(Read Only Memory)3、RAM(Random Access Memory)4、外部記憶装置5、入力装置6及び表示装置7を含むコンピュータシステムによって構成される。ROM3にはオペレーションプログラムと、本発明に係る顔画像編集用プログラムが記憶されている。顔画像編集用プログラムには、標準の顔の表面形状を所望の形状に編集するための標準顔編集用プログラムとゲームキャラクタのアニメーション用の顔の表情を所望の表情に編集するためのアニメーション編集用プログラムが含まれる。
外部記憶装置5には,CPU2が標準顔編集用プログラムを実行することによって行われる編集処理の対象となるゲームキャラクタの標準の顔の表面形状を表すデータ(以下、このデータを「標準顔画像データ」という。)と、CPU2がアニメーション編集用プログラムを実行することによって行われる編集処理の対象となるアニメーションデータ(ゲームキャラクタの標準の顔画像の目や口などの部位を変化させて「笑う」、「怒る」、「泣く」などの各種の特定の表情をさせる複数コマ分の表面形状の画像で構成されるデータ)とが記憶されている。外部記憶装置5には編集後の顔画像データとアニメーションデータをそれぞれ所定数分だけ保存する記憶領域が設けられており、顔画像データ又はアニメーションデータに対して編集処理が行われると、その編集後の顔画像データ及びアニメーションデータが外部記憶装置5に保存される。
なお、標準顔画像データは、表示装置7に表示される顔画像そのもののデータではなく、顔の表面形状をポリゴンモデリングによるサーフェスモデルで表現し、XYZ座標系にそのサーフェスモデルを置いて各ポリゴン(多角形。図2では三角形で示される部分)の頂点(以下、「ポリゴン頂点」という。)の位置座標を求めた、多数のポリゴン頂点の位置データの集合で構成されている。本実施形態では、後述するように、顔画像の編集機能として、顔の各部位に複数のボーンを設定し、各ボーンの移動に複数のポリゴン頂点を連動して移動させる構成と、各部位に作業者がボーン及びポリゴン頂点を移動させるための操作点として複数のマーカを設定し、各マーカに対する操作内容に応じて1又は2以上のボーンを移動させる構成を設けているので、標準顔画像データには複数のボーンと複数のマーカの各位置データも含まれている。
従って、表示装置7にゲームキャラクタの標準の顔画像を表示するときには、標準顔画像データと、各ポリゴンに張り付ける無地のテクスチャとに基づいて、顔の表面形状を表す三次元形状画像を生成する処理が行われ、その処理結果である三次元形状画像が表示装置7に表示される。
アニメーションデータも同様で、各コマの顔画像は多数のポリゴン頂点と複数のボーンと複数のマーカの各位置データの集合となっている。アニメーション画像は顔画像の特定の部位の動きを表現する画像であるから、各コマの顔画像のデータは、特定の部位を構成するポリゴン頂点とその部位に設けられたボーン及びマーカの位置が最初のコマの顔画像における位置に対して移動したデータとなっている。従って、表示装置7にアニメーション画像を表示するときには、所定の周期(例えば、1/30秒)で各コマの顔画像データと各ポリゴンに張り付ける無地のテクスチャとに基づいて顔の三次元形状画像を生成する処理(アニメーションデータの再生処理)が行われ、その処理結果である各コマの三次元形状画像が表示装置7に順次表示される。
予め用意されているアニメーション画像は標準の顔画像を基に作成されているので、標準の顔を編集により変形した場合、アニメーション画像の最初のコマの顔画像のデータを変形後の顔画像のデータに変更すれば、アニメーションデータの再生処理により変形後の顔画像に対して目や口などの部位を予め設定されている動きと同様の動きをさせることができる。
従って、本実施形態では、標準の顔画像を変形させる編集をした場合、自動的にアニメーションデータの最初のコマの顔画像のデータを変形後の顔画像のデータに変更したり、動きのある部位のマーカやボーンのコマ毎の移動量を標準の顔画像の編集内容に応じて変更したりするだけで標準の顔画像の編集内容をアニメーション画像に反映できるようにしている。
その一方、標準の顔画像の編集内容を反映したアニメーション画像が常に適切であるとは限らず、不自然な動きになる場合もある。そのような場合には不自然な動きとなる部分のコマの顔画像の編集が必要になる。アニメーション編集用プログラムは、アニメーションデータに対してこのような編集をするためのもので、主としてアニメーションのクリエータ用に設けられている。
入力装置6は、作業者がCPU2に実行させる処理に必要な情報を入力するための装置で、例えば、キーボードやマウスなどで構成される。表示装置7は、CPU2が実行している処理に関する情報を表示するための装置であり、CRTや液晶ディスプレイなどで構成される。なお、入力装置6及び表示装置7をタッチパネルで構成してもよい。
CPU2は、作業者の操作によって入力装置6からゲームキャラクタの顔の編集処理が指令されると、ROM3から標準顔編集用プログラムをRAM4に読み出すとともに、外部記憶装置5からゲームキャラクタの標準顔画像データをRAM4に読み出す。また、CPU2は、RAM4に読み出した標準顔画像データとポリゴンに張り付けるテクスチャとに基づいて顔の表面形状を表す三次元形状画像を生成し、その三次元形状画像を表示装置7に表示させる。その後、CPU2は、作業者の操作によって入力装置6から入力される操作情報に基づき標準顔編集用プログラムに従って顔の表面形状を変形させる処理を行い、その処理結果を表示装置7に出力し、表示装置7に表示されるゲームキャラクタの顔の表面形状を変化させる。そして、CPU2は、作業者の操作によって入力装置6からゲームキャラクタの顔の編集処理終了が指令されると、RAM4に記憶されている編集処理の処理結果を外部記憶装置5に保存する。
CPU2は、作業者の操作によって入力装置6からアニメーション用の顔の編集処理が指令されると、ROM3からアニメーション編集用プログラムをRAM4に読み出すとともに、外部記憶装置5からアニメーションデータをRAM4に読み出す。また、CPU2は、RAM4に読み出したアニメーションデータのうち、作業者の操作によって入力装置6から入力されるコマの顔の表面形状のデータとポリゴンに張り付けるテクスチャとに基づいて当該コマの顔の表面形状を表す三次元形状画像を生成し、その三次元形状画像を表示装置7に表示させる。その後、CPU2は、作業者の操作によって入力装置6から入力される操作情報に基づきアニメーション編集用プログラムに従って顔の表面形状を変形させる処理を行い、その処理結果を表示装置7に出力し、表示装置7に表示されるゲームキャラクタの顔の表面形状を変化させる。そして、CPU2は、作業者の操作によって入力装置6からゲームキャラクタのアニメーション編集用の顔の編集処理終了が指令されると、RAM4に記憶されている編集処理の処理結果を外部記憶装置5に保存する。
次に、本発明に係る顔画像編集用プログラムによって実行されるゲームキャラクタの顔画像編集方法について説明する。
本発明に係る顔形状編集には、ゲームキャラクタの標準モデルの顔の表面形状を編集するモード(顔画像編集モード)と、アニメーション画像の指定されたコマの顔の表面形状を編集するモード(アニメーション編集モード)とがある。顔画像編集モードは、外部記憶装置5に記憶されたゲームキャラクタの標準顔画像データを用いて行う編集モードであり、アニメーション編集モードは、外部記憶装置5に記憶されたアニメーションデータを用いて行う編集モードである。
上述したように、本実施形態では、顔画像編集モードで標準の顔画像の編集を行うと、その編集内容が標準の顔画像で作成されたアニメーションデータに自動的に反映されるので、アニメーションデータを再生した場合には編集後の顔画像に対するアニメーション画像を表示装置7に表示させることができる。従って、編集後の顔画像に対するアニメーション画像に特に問題がない場合にはアニメーションデータに対して顔画像編集モードで行った編集作業と同様の編集作業をする必要はなく、例えば、部位のサイズを変更したことによって動きに不自然さが生じたり、動いたときの部位の形状に違和感が生じたりした場合にその部分のコマについて改めて編集が行われる。この場合の各コマの顔画像に対する編集作業は基本的に顔画像編集モードで行う編集作業と同様である。
図2は、作業者が入力装置6を操作して外部記憶装置5に記憶されている複数種類のゲームキャラクタの標準の顔画像から所望の顔画像を選択し、当該顔画像に対して編集処理を指令したときに表示装置7に表示される顔画像の一例を示す図である。
まず、顔画像編集モードにおける編集処理の内容について説明する。
図2に示すように、顔画像編集用のゲームキャラクタの顔画像は、ポリゴンモデリングによるサーフェスモデルの三次元形状画像で表現されている。顔の表面形状の変更はポリゴン頂点を移動させることによって行われる。このため、顔の表面形状の編集空間には同図の左下に示されるように、XYZの直交座標系が設定されている。XYZ座標系は、ゲームキャラクタの顔を正面から見て左右方向をX軸、上下方向をY軸、前後方向をZ軸とする座標系である。なお、X軸、Y軸、Z軸はそれぞれ右方向、上方向、後方向が+方向となっている。表示装置7の表示画面7aに正面視の顔画像が表示されている場合は、表示画面7aの横方向がX軸、縦方向がY軸、画面に垂直な方向がZ軸となる。
顔の表面形状を構成する多数のポリゴン頂点にはそれぞれ識別用のポリゴン番号とXYZ座標系の座標が設定されている。なお、以下の説明では、ポリゴン頂点の符号を「P」とし、ポリゴン番号jによって複数のポリゴン頂点Pを識別する場合には「P(j)」の表記をする。また、XYZ座標系における位置座標は(X,Y,Z)で表わすが、各座標には何の位置座標であるかを示す添え字を付して表記する。従って、ポリゴン頂点Pの位置座標は「(Xp,Yp,Zp)」(添え字「p」はポリゴン頂点Pを示す)と表記し、複数のポリゴン頂点Pの位置座標をポリゴン番号jで識別する場合は「(Xpj,Ypj,Zpj)」(添え字「j」はポリゴン番号を示す)と表記する。この表記方法は、後述するボーンやマーカの位置座標についても同様である。
顔画像編集では膨大なポリゴン頂点Pを個々に移動させて顔画像の表面形状を所望の形状に変形させることは困難であるので、図4(a)に示すように、顔画像内に多数の「ボーン」と呼ばれるポリゴン頂点Pの位置を制御する制御点が設けられている。図4(a)は、図2に示す顔画像の左側の目の部分を拡大した図であるが、同図では、ボーンの符号を「B」とし、ボーン番号iのボーンBを「B(i)」と表記している。各ボーンB(i)(i=1,2,…8)は、ボーンB(i)の移動に連動して当該ボーンB(i)に関連付けられた1又は2以上のポリゴン頂点P(j)を移動させる機能を果すものである。各ボーンB(i)にもそれぞれXYZ座標系の位置座標(Xbi,Ybi,Zbi)が設定されている。なお、各位置座標の添え字の「b」はボーンBの位置座標であることを示し、「i」はボーン番号を示している。
ボーンB(i)に関連付けられたポリゴン頂点P(j)には、図3(a)に示すように、ボーンB(i)が移動したときに当該ボーンB(i)の移動方向Nbiを基準とした移動方向θpjbi(角度)と、当該ボーンB(i)の移動量Dbiに対するポリゴン頂点P(j)の移動量の倍率Kpjbiが連動用のパラメータとして設定されている。
なお、符号「Nbi」,「Dbi」の添え字「b」と「i」はそれぞれ「ボーン」と「ボーン番号」を示し、「bi」でボーン番号iのボーンBに関するものであることを示している。また、符号「θpjbi」,「Kpjbi」の添え字「p」、「j」、「b」、「i」はそれぞれ「ポリゴン頂点」、「ポリゴン番号」、「ボーン」、「ボーン番号」を示し、ボーン番号iのボーンB(i)に関連付けられたポリゴン番号jのポリゴン頂点P(j)に関するパラメータであることを示している。この添え字の表記方法は、後述する部位変形用のマーカの移動方向や移動量の倍率(以下、「移動倍率」という。)についても同様である。
従って、図3(b)に示すように、4つのポリゴン頂点P(j),P(j+1),P(j+2),P(j+3)がそれらに囲まれたボーンB(i)に関連付けられている場合、例えば、ボーンB(i)をNbi方向(図3(b)で右方向)に距離Dbiだけ移動させると、ポリゴン頂点P(j)は、Nbi方向に対して、例えば、左側に角度θpjbiだけ開いた方向に距離Dpjbi=Dbi×Kpjbiだけ移動する。他のポリゴン頂点P(j+1),P(j+2),P(j+3)についても同様で、例えば、ポリゴン頂点P(j+1)は、Nbi方向に対して左側に角度θp(j+1)biだけ開いた方向に距離Dp(j+1)bi=Dbi(i)×Kp(j+1)biだけ移動し、ポリゴン頂点P(j+2)は、Nbi方向に対して右側に角度θp(j+2)biだけ開いた方向に距離Dp(j+2)bi=Dbi×Kp(j+2)biだけ移動し、ポリゴン頂点P(j+3)は、Nbi方向に対して右側に角度θp(j+3)biだけ開いた方向に距離Dp(j+3)bi=Dbi×Kp(j+3)biだけ移動する。図3(b)において、P(j)’、P(j+1)’、P(j+2)’、P(j+3)’はポリゴン頂点P(j)、P(j+1)、P(j+2)、P(j+3)の移動した位置である。
なお、ボーンB(i)の移動に伴う4つのポリゴン頂点P(j),P(j+1),P(j+2),P(j+3)の移動方向θpjbi,θp(j+1)bi,θp(j+2)bi,θp(j+3)biと移動倍率Kpjbi,Kp(j+1)bi,Kp(j+2)bi,Kp(j+3)biは、ボーンB(i)が含まれる部位全体の形状の変化が不自然とならないように、標準顔画像データを作成するプログラマーによって予め設定されている。また、ポリゴン頂点P(j),P(j+1),P(j+2),P(j+3)の移動位置の演算ではX,Y,Zの各座標軸の成分に分けて演算が行われる。従って、ポリゴン頂点P(j)の移動前の位置座標を(Xpj,Ypj,Zpj)、移動後の位置座標を(Xpj’,Ypj’,Zpj’)とすると、Dpjbi=Dbi×Kpjbi=√{(Xpj’−Xpj)2+(Ypj’−Ypj)2+(Zpj’−Zpj)2}となる。他のポリゴン頂点P(j+1),P(j+2),P(j+3)についても同様である。
各ボーンB(i)は、上記の座標データ(Xbi,Ybi,Zbi)とともに、関連付けられたポリゴン頂点P(j)のポリゴン番号j及びそのポリゴン頂点P(j)の連動用のパラメータ(θpjbi,Kpjbi)のデータを有している。従って、外部記憶装置5やRAM4のボーンBのデータ記憶領域には、各ボーンB(i)の位置座標(Xbi,Ybi,Zbi),(Xbi’,Ybi’,Zbi’)と、関連付けられたポリゴン頂点P(j)のポリゴン番号j及びそのポリゴン頂点P(j)の連動用のパラメータ(θpjbi,Kpjbi)のデータが格納されている。
上述した顔画像内に多数のボーンBを設定した顔画像のデータ構造は、従来のボーン編集による顔画像編集方法の基本となるデータ構造と同じである。従来は各ボーンBが複数個のポリゴン頂点Pを纏めて移動させる操作点として設定されていたが、本発明に係る顔画像編集では、ボーンBの上位に複数種類のマーカを設け、各マーカを1又は2以上のボーンBを移動させる操作点として機能させる構成としている。
従って、本発明に係る顔画像編集では、作業者が入力装置6からマーカ(本発明に係る第1,第2の操作点に相当)に対してボーンBの移動に関する所定の操作情報を入力すると、当該操作情報に基づいてマーカに関連付けられた1又は2以上のボーンB(本発明に係る「制御点」に相当)を自動的に移動させるとともに、各ボーンBに関連付けられた複数のポリゴン頂点P(本発明に係る「多角形の頂点」に相当)の位置を自動的に制御する構成を基本構成としている。
なお、マーカは隣接する部位に設けられた他のマーカに関連付けられ、他のマーカが移動すると、その移動に連動して移動するものもある。これは、例えば、目に設けられたマーカが移動することによって目の形状が変化する場合、その目の上にある眉毛の形状も目の形状変化に応じて変化させなければ、目と眉毛の形状がアンバランスになり、眉毛のマーカを単独で移動して眉毛の形状を目の形状変化に合わせることは容易でないから、眉毛に設けられるマーカを目に設けられるマーカに関連付け、目のマーカが移動するのに応じて眉毛のマーカを連動して移動させるものである。
同様の事情は、例えば、口の下唇に設けられるマーカと顎に設けられるマーカや、口の上唇に設けられるマーカと鼻に設けられるマーカなどについても言える。従って、本発明に係る顔画像編集では、隣接する部位で一方の部位の形状が変化すると、それに伴い他の部位の形状も連動して変化するような複数の部位については、各部位の部位変形用のマーカ同士を互いに連携させ、一方の部位の部位変形用のマーカの移動に連動して他方の部位の部位変形用のマーカを移動させる構成も有している。
本実施形態では、部位毎に顔画像編集用の4種類のマーカが設定されている。以下の説明では、4種類のマーカの符号を「H」,「M」,「E」,「R」とし、例えば、マーカHについて、マーカ番号iのマーカHを「H(i)」と表記する。マーカM,E,Rについても同様で、マーカ番号iのマーカM,E,Rを「M(i)」,「E(i)」,「R(i)」と表記する。4種類のマーカH,M,E,Rは、その種類が識別できるように、形や大きさの異なるマークで表示される。例えば、マーカHは円形、マーカMはマーカHとは異なる大きさと色の円形、マーカEは四角形、マーカRは三角形などである。
4種類のマーカH,M,E,Rのうち、マーカHは、部位の形状を部分的に変形させるために部位内の1又は2以上のボーンBの一部を任意の方向に移動させる編集操作をするためのマーカ(本発明に係る「第1の操作点」に相当。以下、「部位変形用マーカ」という。)である。部位変形用マーカHは、当該部位変形用マーカHに関連付けられた1又は2以上のボーンBを当該部位変形用マーカHの移動に連動して移動させることにより部位の一部の形状を変化させる機能を果す。部位変形用マーカH(i)にもXYZ座標系の位置座標(Xhi,Yhi,Zhi)が設定されている。なお、各座標の添え字の「h」は部位変形用マーカHを示し、「i」は部位変形用マーカHのマーカ番号を示している。
図4は、目と眉毛の部位に設けられた部位変形用マーカHの一例を示し、(a)は目の部位変形用マーカHを移動させる前の目と眉毛の状態を示す図、(b)は同部位変形用マーカHを移動させた後の目と眉毛の状態を示す図である。なお、図面の煩雑さを避けるために、図4ではポリゴンは省略し、ボーンBと部位変形用マーカHのみを描いている。
図4の例では、目には目頭と、目尻と、上瞼の2箇所と、下瞼の2箇所の計6箇所に円形の部位変形用マーカH(1),H(2),H(3),H(4),H(5),H(6)が設けられている。部位変形用マーカH(2),H(3)は、上瞼の部位変形用マーカH(1)と部位変形用マーカH(4)の間をほぼ3等分する位置に設けられ、部位変形用マーカH(5),H(6)は、下瞼の部位変形用マーカH(1)と部位変形用マーカH(4)の間をほぼ3等分する位置に設けられている。6個の部位変形用マーカH(i)(i=1,2,…,6)は、それぞれ図3に示した6個のボーンB(i)(i=1,2,…,6)の位置と同じ位置に設けられている。
また、各ボーンB(i)(i=1,2,…,6)は同じ位置に設けられた部位変形用マーカH(i)だけに関連付けられており、各ボーンB(i)には部位変形用マーカH(i)の移動に応じて同じ位置に移動するように連動用のパラメータが設定されている。すなわち、ボーン番号jのボーンB(j)に設定された部位変形用マーカH(i)に対する移動方向をθbjhi、移動倍率をKbjhiとすると、ボーンB(i)には連動用のパラメータとして移動方向θbihi=0°と倍率Kbihi=1.0が設定されている。なお、「θbjhi」、「Kbjhi」の添え字「b」、「i」、「h」、「i」はそれぞれ「ボーン」、「ボーン番号」、「部位変形用マーカ」、「マーカ番号」を示している。
眉毛には2個の部位変形用マーカH(7),H(8)が設けられている。眉毛には眉頭の部分にボーンH(7)が設けられ、目の部位変形用マーカH(3)に対して略上方の位置にボーンH(8)が設けられているが、部位変形用マーカH(7)はボーンB(7)と同じ位置に設けられ、部位変形用マーカH(8)はボーンB(8)と同じ位置に設けられている。また、ボーンB(7)は部位変形用マーカH(7)にだけ関連付けられ、ボーンB(8)は部位変形用マーカH(8)にだけ関連付けられている。従って、ボーンB(7),B(8)には連動用のパラメータとして「0°」の移動方向θb7h7,θb8h8と「1.0」の移動倍率Kb7h7,Kb8h8が設定されている。
外部記憶装置5やRAM4のボーンB(i)(i=1,2,…8)が関連付けられた部位変形用マーカH(i)(i=1,2,…8)のデータ記憶領域には、各部位変形用マーカH(i)の移動前と移動後の位置座標(Xhi,Yhi,Zhi),(Xhi’,Yhi’,Zhi’)と、関連付けられたボーンB(i)のボーン番号i及びそのボーンB(i)の連動用のパラメータ(θbihi,Kbihi)のデータが格納されている。
なお、ボーンB(j)に部位変形用マーカH(i)に対する連動用のパラメータとして設定される移動方向θbjhiと移動倍率Kbjhiの内容は、それぞれ図3に示した移動方向θpjbiと倍率Kpjbiと同じであるので、ここでは詳細な説明は省略する。
図4に示す目及び眉毛の例は、部位変形用マーカH(i)(i=1,2,…8)を移動させると、ボーンB(i)だけが部位変形用マーカH(i)と共に移動するので、部位変形用マーカH(i)を移動させる操作は実質的に従来のボーンB(i)を直接的に移動させる操作と変わらないが、例えば、目に設ける部位変形用マーカHの数を減らし、一部の部位変形用マーカHには複数のボーンBを関連付け、当該部位変形用マーカHに移動に応じて複数のボーンBを同時に移動させるようにしてもよい。
例えば、上瞼の2個の部位変形用マーカH(2),H(3)を上瞼の略中央に設けた部位変形用マーカH(9)(図4(a)の点線で示すマーカH(9)参照)に置き換えるとともに、下瞼の2個の部位変形用マーカH(4),H(5)を下瞼の略中央に設けた部位変形用マーカH(10) (図4(a)の点線で示すマーカH(10)参照)に置き換え、ボーンB(2),B(3)を部位変形用マーカH(9)に関連付け、ボーンB(5),B(6)を部位変形用マーカH(10)に関連付けるようにしてもよい。この場合は、ボーンB(2),B(3)には連動する部位変形用マーカH(9)に対する連動用のパラメータとしてそれぞれ移動方向θb2h9、移動倍率Kb2h9と移動方向θb3h9、移動倍率Kb3h9が設定され、ボーンB(5),B(6)には連動する部位変形用マーカH(10)に対する連動用のパラメータとしてそれぞれ移動方向θb5h10、倍率Kb5h10と移動方向θb6h10、倍率Kb6h10が設定される。なお、移動方向θb2h9,θb3h9,θb5h10,θb6h10はいずれも「0°」でない適切な値が設定され、移動倍率Kb2h9,Kb3h9,Kb5h10,Kb6h10はいずれも「1.0」でない適切な値が設定される。
そして、この場合は、ボーンB(1)とボーンB(4)はそれぞれ部位変形用マーカH(1)と部位変形用マーカH(4)にだけ関連付けられるので、部位変形用マーカH(1)又は部位変形用マーカH(4)を移動させると、目頭のボーンB(1)又は目尻のボーンB(4)だけが移動するが、部位変形用マーカH(9)を移動させると、上瞼に設けられたボーンB(2)及びボーンB(3)が連動して移動し、部位変形用マーカH(10)を移動させると、下瞼に設けられたボーンB(5)及びボーンB(6)が連動して移動することになる。
図4に戻り、部位変形用マーカH(1)〜H(6)によって目の形状を変形する編集では、目の上の眉毛も目の形状変化に伴って形状が変化しなければ、変形後の顔が不自然になる。部位変形用マーカH(1)〜H(6)による目の編集と部位変形用マーカH(7),H(8)による眉毛の編集を独立して行わせると、目と眉毛を不自然さのないように変形することは容易でないので、本実施形態では、例えば、眉毛に設定される2個の部位変形用マーカH(7),H(8)をそれぞれ目の部位変形用マーカH(2),H(3)に関連付け、目の部位変形用マーカH(2),H(3)が移動すると、その移動に連動して眉毛の部位変形用マーカH(7),H(8)を移動させるようにしている。
従って、部位変形用マーカH(7)には部位変形用マーカH(2)に対する連動用のパラメータとして移動方向θh7h2と移動倍率Kh7h2が設定され、部位変形用マーカH(8)には部位変形用マーカH(3)に対する連動用のパラメータとして移動方向θh8h3と移動倍率Kh8h3とが設定されている。なお、「θh7h2」、「Kh7h2」の添え字「h」、「7」、「h」、「2」はそれぞれ「眉毛に設けられた部位変形用マーカ」、「眉毛に設けられた部位変形用マーカのマーカ番号」、「目に設けられた部位変形用マーカ」、「目に設けられた部位変形用マーカのマーカ番号」を示している。「θh8h3」、「Kh8h3」の添え字「h」、「8」、「h」、「3」も「θh7h2」、「Kh7h2」の添え字「h」、「7」、「h」、「2」と同様の意味を有している。
外部記憶装置5やRAM4の部位変形用マーカH(2),H(3)のデータ記憶領域には、各部位変形用マーカH(2),H(3)の移動前の位置座標(Xh2,Yh2,Zh2),(Xh3,Yh3,Zh3)と、移動後の位置座標(Xh2’,Yh2’,Zh2’),(Xh3’,Yh3’,Zh3’)と、それぞれに関連付けられた部位変形用マーカH(7),H(8)のマーカ番号7,8及び部位変形用マーカH(7),H(8)の連動用のパラメータ(θh7h2,Kh7h2),(θh8h3,Kh8h3)が格納されている。
部位変形用マーカH(7)に部位変形用マーカH(2)に対する連動用のパラメータとして設定される移動方向θh7h2と移動倍率Kh7h2や部位変形用マーカH(8)に部位変形用マーカH(2)に対する連動用のパラメータとして設定される移動方向θh8h3と移動倍率Kh8h3の内容も、それぞれ図3に示した移動方向θpjbiと倍率Kpjbiと同じであるので、ここでは詳細な説明は省略する。
なお、部位変形用マーカH(7)を目の部位変形用マーカH(1),H(2)の両方に関連付け、部位変形用マーカH(8)を目の部位変形用マーカH(3),H(4)の両方に関連付けるようにしてもよい。
図5は、顔画像に設けられている部位変形用マーカH、部位変形用マーカHに関連付けられたボーンB及びボーンBに関連付けられたポリゴン頂点Pの相互のデータ構造関係の一例を示す図である。同図は、図4に示す目と眉毛に設けられた部位変形用マーカH(1)〜H(8)のうち、部位変形用マーカH(3)と、その部位変形用マーカH(3)に関連付けられたボーンB(3)及び部位変形用マーカH(8)と、そのボーンB(3)及び部位変形用マーカH(8)にそれぞれ関連付けられたポリゴン頂点Pの相互のデータ構造関係を示している。
図5に示すように、部位変形用マーカH(3)に関連付けられたボーンB(3)及び部位変形用マーカH(8)は、部位変形用マーカH(3)の下にツリー構造で配置され、ボーンB(3)に関連付けられた複数のポリゴン頂点P(t),P(t+1),…,P(t+n)(t,t+1,…t+nはポリゴン番号)はボーンB(3)の下にツリー構造で配置されている。また、部位変形用マーカH(8)にはボーンB(8)が関連付けられているので、部位変形用マーカH(3)の下にボーンB(8)がツリー構造で配置され、その下にボーンB(8)に関連付けられた複数のポリゴン頂点P(s),P(s+1),…,P(s+m)(s,s+1,…s+mはポリゴン番号)がツリー構造で配置されている。
部位変形用マーカH(3),H(8)、ボーンB(3),B(8)、ポリゴン頂点P(s),P(s+1),…,P(s+m)及びポリゴン頂点P(t),P(t+1),…,P(t+n)はそれぞれ現在位置を示す位置座標を有している。作業者が入力装置6を操作して表示装置7に表示された部位変形用マーカH(3)の位置を移動させると、部位変形用マーカH(3)の位置座標が変化し、その変化に連動して部位変形用マーカH(8)とボーンB(3),B(8)の位置座標が変化する。
例えば、部位変形用マーカH(3)の現在の位置座標を(Xh3,Yh3,Zh3)とし、部位変形用マーカH(8)の現在の位置座標を(Xh8,Yh8,Zh8)とすると、ボーンB(3)は部位変形用マーカH(3)と同じ位置にあり、ボーンB(8)は部位変形用マーカH(8)と同じ位置にあるから、ボーンB(3),B(8)の現在の座標データはそれぞれ(Xh3,Yh3,Zh3)、(Xh8,Yh8,Zh8)となっている。
作業者が入力装置6を操作して部位変形用マーカH(3)を現在位置からY軸の下方向に移動させると、CPU2は入力装置6から入力される操作情報(例えば、入力装置6がマウスの場合、マウスの移動量の情報)に基づいて表示画面7a上における移動量Dh3を算出し、部位変形用マーカH(3),H(8)の位置座標をそれぞれ(Xh3,Yh3−Dh3,Zh3)と(Xh8,Yh8−Dh3,Zh8)に変更する。また、CPU2はボーンB(3),B(8)の位置座標をそれぞれ(Xb3,Yb3−Dh3,Zb3)と(Xb8,Yb8−Dh3,Zb8)に変更する。これにより、部位変形用マーカH(3),H(8)及びボーンB(3),B(8)の表示装置7における表示位置が変化する。なお、移動量Dh3の添え字「h」は、部位変形用マーカHを示し、添え字「3」は、部位変形用マーカHのマーカ番号を示している。
更に、CPU2は、ボーンB(3)に関連付けられている複数のポリゴン頂点P(t+k)(k=0,1,…,n)に対して各ポリゴン頂点P(t+k)の連動用のパラメータとボーンB(3)の移動方向Nb3及び移動量Db3を用いて各ポリゴン頂点P(t+k)の移動位置を算出し、その算出結果を用いて位置座標を変更する。同様に、ボーンB(8)に関連付けられている複数のポリゴン頂点P(s+k)(k=0,1,…,m)に対して各ポリゴン頂点P(s+k)の連動用のパラメータとボーンB(8)の移動方向Nb8及び移動量Db8を用いて各ポリゴン頂点P(s+k)の移動位置を算出し、その算出結果を用いて位置座標を変更する。これにより、ポリゴン頂点P(t+k)及びポリゴン頂点P(s+k)の表示装置7における表示位置が変化し、目と眉毛の形状が変化する。
図4に戻り、部位変形用マーカHを用いた目の編集操作について説明する。
図4には記載されていないが、表示装置7の表示画面7aにはカーソルが表示されており、作業者は入力装置6を操作してカーソルを所望の部位変形用マーカH(i)の位置に移動させ、所定の操作を行うと、カーソルによって部位変形用マーカH(i)を所望の位置に移動させることができる。例えば、入力装置6がマウスの場合、作業者はカーソルを所望の部位変形用マーカH(i)の位置に移動させた後、左クリックを行い、そのクリック状態を保持してマウスを所望の方向に移動させることによりカーソルとともに部位変形用マーカH(i)を所望の方向に移動させることができる。そして、作業者は所望の位置で左クリックの操作を解除すると、その位置に部位変形用マーカH(i)を固定することができる。
なお、入力装置6によって部位変形用マーカH(i)を指定し、その部位変形用マーカH(i)の移動方向Nhiや移動量Dhiをキー操作によって入力させるようにしてもよい。
図4(b)は、作業者が図4(a)の状態から目の部位変形用マーカH(3),H(4),H(5)をそれぞれY軸の下方向に移動量Dhずつ移動させた場合(部位変形用マーカH(3),H(4),H(5)の移動方向Nh3,Nh4,Nh5をY軸の下方向とし、移動量Dh3,Dh4,Dh5をDh3=Dh4=Dh5=Dhとした場合)の目と眉毛の形状の変化を示している。3個の部位変形用マーカH(3),H(4),H(5)の位置が下に移動するのに応じて3個のボーンB(3),B(4),B(5)の位置も下に移動するので、これにより各ボーンB(3),B(4),B(5)にそれぞれ関連付けられた複数のポリゴン頂点Pの位置が変化して目が目尻の部分が下側に垂れた形状に変化している。
また、眉毛に設定された部位変形用マーカH(8)は、目に設定された部位変形用マーカH(3)に関連付けられているので、部位変形用マーカH(3)が下方向に移動すると、それに連動して眉毛に設定された部位変形用マーカH(8)も下方向に移動する。そして、部位変形用マーカH(8)が下方向に移動すると、部位変形用マーカH(8)に関連付けられたボーンB(8)も部位変形用マーカH(8)と同じ位置に移動し、これによりボーンB(8)に関連付けられた複数のポリゴン頂点Pの位置が変化して眉毛も目尻の部分が下側に垂れた形状に変化している。
図4(b)の例では、部位変形用マーカH(3)に関連付けられた部位変形用マーカH(8)の移動倍率Kh8h3を「0.5」に設定しているので、部位変形用マーカH(8)は部位変形用マーカH(3)の移動量Dhに対して移動量Dh×0.5だけ下方向に移動している。図4(b)の例では、部位変形用マーカH(3)に部位変形用マーカH(8)だけを連動させているので、目の形状が過度に三角形になり、不自然感を与える場合もあるが、部位変形用マーカH(3)に部位変形用マーカH(7)も連動させ、両部位変形用マーカH(7),H(8)の移動倍率Kh7h3,Kh8h3を調整すれば、不自然な形状変化を緩和することができる。
上記のように、6個の部位変形用マーカH(i)(i=1,2,…6)のいずれかを移動させると、その部位変形用マーカH(i)に関連付けられている1又は2以上のボーンB(j)を当該部位変形用マーカH(i)の移動に連動して移動させることができるので、目の形状を容易に変形させることができる。
また、眉毛に設定された部位変形用マーカH(7),H(8)をそれぞれ目の部位変形用マーカH(2),H(3)に関連付け、目の部位変形用マーカH(2),H(3)の移動に連動して眉毛の部位変形用マーカH(7),H(8)を移動させるようにしているので、目の位置と密接に関係する眉毛の位置をバランスよく移動させることができる。
マーカMは、部位全体を移動させる編集操作をするためのマーカ(本発明に係る「第2の操作点」に相当。以下、「部位移動用マーカ」という。)である。部位移動用マーカMは、部位に設定された複数の部位変形用マーカHを一括して移動させることにより部位全体を移動させる機能を果す。各部位移動用マーカM(i)にもXYZ座標系の位置座標(Xmi,Ymi,Zmi)が設定されている。なお、各座標の添え字の「m」は部位移動用マーカMを示し、「i」は部位移動用マーカMのマーカ番号を示している。
部位移動用マーカMは、部位を代表する位置(通常は、部位の画像の中心位置)に1個だけ設けられ、当該部位に設けられる複数の部位変形用マーカHが部位移動用マーカMに関連付けられている。部位移動用マーカMの位置を移動させると、部位に設定された複数の部位変形用マーカHが連動して部位移動用マーカMの移動方向にそれぞれ移動し、これにより部位全体が移動する。
図6は、目の部位に設けられた部位移動用マーカMの一例を示し、(a)は目の部位移動用マーカMによって目全体を移動させる前の状態を示す図、(b)は同部位移動用マーカMによって目全体を鼻筋側に移動させた状態を示す図である。なお、同図もポリゴンは省略し、ボーンBと部位移動用マーカMのみを描いている。
図6の例では、目を全体的に移動させるので、目の瞳孔の位置に部位移動用マーカMが1つだけ設けられている。図6の例では、部位移動用マーカM(1)も部位変形用マーカH(1)〜H(6)と同様に円形のマークで表示されているが、部位移動用マーカM(1)は部位変形用マーカH(1)〜H(6)より大きく、色も異なっている。そして、6つの部位変形用マーカH(1)〜H(6)は部位移動用マーカM(1)に関連付けられている。
部位移動用マーカM(1)は目を全体的に移動させる機能を果すので、6つの部位変形用マーカH(i)(i=1,2,…6)に部位移動用マーカM(1)に対する連動用のパラメータとして設けられる移動方向θhim1(i=1,2,…6)には、図7に示すように、それぞれ「0°」若しくは「0°」に近い値が設定され、移動倍率Khim1(i=1,2,…6)にはそれぞれ「1.0」若しくは「1.0」に近い値が設定されている。すなわち、部位移動用マーカM(1)の移動方向θm1及び移動量Dm1で6つの部位変形用マーカH(1)〜H(6)がほぼ同じ方向にほぼ同じ量だけ移動するように、各部位変形用マーカH(1)〜H(6)の連動用のパラメータが設定されている。図7において、M(1)’、H(1)’〜H(6)’はそれぞれ部位移動用マーカM(1)と部位変形用マーカH(1)〜H(6)の移動した位置である。
なお、「θm1」、「Dm1」の添え字「m」、「1」はそれぞれ「部位移動用マーカM」と「部位移動用マーカMのマーカ番号」を示している。また、「θhim1」、「Khim1」の添え字「h」、「i」、「m」、「1」はそれぞれ「部位変形用マーカH」、「部位変形用マーカHのマーカ番号」、「部位移動用マーカM」、「部位移動用マーカMのマーカ番号」を示している。
外部記憶装置5やRAM4の部位移動用マーカM(1)のデータ記憶領域には、部位移動用マーカM(1)の移動前の位置座標(Xm1,Ym1,Zm1)と、移動後の位置座標(Xm1’,Ym1’,Zm1’)と、関連付けられた部位変形用マーカH(i)のマーカ番号iと部位変形用マーカH(i)の連動用のパラメータ(θhim1,Khim1)(i=1,2,…6)のデータが格納されている。
部位移動用マーカM(1)と6つの部位変形用マーカH(1)〜H(6)のデータ構造の関係は、図5に示すデータ構造において、部位変形用マーカH(3)と部位変形マーカH(8)のツリー構造の関係と同じであるので、その説明は省略する。
図6(a)の状態で、作業者が入力操作6を操作して部位移動用マーカM(1)を右方向(X軸に沿って顔の鼻筋に近づける方向)に移動量Dm1だけ移動させると、6つの部位変形用マーカH(1)〜H(6)が連動してそれぞれ標準の位置(図6(a)の位置)からほぼ移動量Dm1だけほぼ右方向に移動する。6つの部位変形用マーカH(1)〜H(6)が移動することにより各部位変形用マーカH(1)〜H(6)にそれぞれ関連付けられたボーンB(1)〜B(6)が移動するとともに、各ボーンB(1)〜B(6)に関連付けられた複数のポリゴン頂点Pもそれぞれ連動して移動する。この結果、目は、図6(b)に示すように、全体的に鼻筋に近づくことになる。
なお、図6の例では、眉毛に設けられた部位変形用マーカH(7)と部位変形用マーカH(8)をそれぞれ目の部位変形用マーカH(2)と部位変形用マーカH(3)に連携させ、部位変形用マーカH(7)と部位変形用マーカH(8)の連動用のパラメータの移動方向θh7h2,θh8h3を「0°」、倍率Kh7h2,Kh8h3を「1.0」に設定しているので、部位変形用マーカH(2)と部位変形用マーカH(3)の右方向の移動に連動して眉毛の部位変形用マーカH(7)と部位変形用マーカH(8)も右方向に同じ移動量だけ移動している。
従って、作業者は、鼻筋の右側にある目に対して部位移動用マーカMを鼻筋側に移動させる操作を行うことにより、簡単に顔画像の両目を鼻筋に近づける(両目の距離を短くする)ことができる。なお、部位移動用マーカM(1)の標準の位置(図6(a)の位置)と移動後の位置(図6(b)の位置)の情報(位置座標の情報)は保存されるので、作業者は両位置の座標から部位移動用マーカM(1)の操作情報(移動方向θm1と移動量Dm1の情報)を確認することができる。
マーカEは、部位全体を拡大又は縮小させる編集操作をするためのマーカ(本発明に係る「第2の操作点」に相当。以下、「部位拡縮用マーカ」という。)である。部位拡縮用マーカEは、部位に設定された複数の部位変形用マーカHを当該部位拡縮用マーカEに対して放射状に移動させることにより部位の形状を拡大又は縮小する機能を果す。各部位拡縮用マーカE(i)にもXYZ座標系の位置座標(Xei,Yei,Zei)が設定されている。なお、各座標の添え字「e」は部位拡縮用マーカEを示し、「i」は部位拡縮用マーカEのマーカ番号を示している。
部位拡縮用マーカEは、部位に設定された複数の部位変形用マーカHの内側に1個だけ設けられ、その複数の部位変形用マーカHが部位拡縮用マーカEに関連付けられている。部位拡縮用マーカEには標準画像における部位のサイズ(標準サイズ)に対して変化させる割合(拡縮倍率)が設定可能になされ、ディフォルトでは「1.0」が設定されている。本実施形態では、部位拡縮用マーカEに予め複数の拡縮倍率(例えば、0.3、0.5、0.7、1.0、1.3、1.5、1.7、2.0の8種類の拡縮倍率)を用意しておき、作業者が部位拡縮用マーカEにカーソルを合わせてクリック操作をすると、クリック操作毎に部位拡縮用マーカEに設定される拡縮倍率が循環的に変化し、部位拡縮用マーカEに設定される拡縮倍率を所望の値に変更することができるようにしている。作業者が部位拡縮マーカEを操作して拡縮倍率を変化させると、その拡縮倍率の変化に応じて各部位変形用マーカHの部位拡縮用マーカEからの距離が変化して表示装置7に表示される部位のサイズが拡大又は縮小される。
なお、部位拡縮マーカEに設定される拡縮倍率を変化させる操作としては、部位拡縮用マーカEに複数の拡縮倍率を用意せず、作業者が部位拡縮用マーカEにカーソルを合わせてクリック操作をすることにより当該部位拡縮用マーカEを指定し、数字キーにより所望の拡縮倍率を入力させるようにしてもよい。この方法では、部位拡縮用マーカEに任意の拡縮倍率を設定できる利点がある。
また、任意の拡縮倍率の入力インターフェースとして、作業者がカーソルによって部位拡縮用マーカEを指定したとき、例えば、図8に示すように、XYZ座標の各軸方向に延びる3本の拡縮倍率の大きさを示す倍率線Qx,Qy,Qzを表示させ、いずれかの倍率線Qq(q=x,y,z)をカーソルで指定し、その倍率線Qqの長さを伸縮させることができる入力インターフェースを設けることができる。この入力インターフェースでは、各倍率線Qx,Qy,Qzに表示されている数値は拡縮倍率を示しており、ディフォルト値は「1.0」である。作業者がカーソルでいずれかの倍率線Qq(q=x,y,z)を指定し、その長さを伸縮させる操作をすると、その長さの伸縮に連動して表示されている数値が変化する。
従って、例えば、作業者がカーソルでX方向の倍率線Qxを指定し、表示されている数値が「1.3」に変化するまでその長さを伸長させる操作をすると、表示画面7aに表示されている目のX方向のサイズ(寸法)を標準サイズの1.3倍に設定することができる。表示画面7a上では、X方向の倍率線Qxの長さ(X方向の拡縮倍率の値)の変化に連動して目の形状変化処理が行われるので、作業者は、目のX方向のサイズを変更したい場合に視覚的に所望のサイズの入力と変更後の目の形状を確認することができる。目のY方向やZ方向のサイズ変更の操作についても同様である。この入力インターフェースによれば、作業者による顔の各部位の形状を所望のサイズに変更する操作が容易で、作業効率を高めることができる。
図9は、目の部位に設けられた部位拡縮用マーカEの一例を示し、(a)は目の部位拡縮用マーカEによって目を拡大する前の状態を示す図、(b)は同部位拡縮用マーカEによって目を拡大した状態を示す図である。なお、同図もポリゴンは省略し、ボーンBと部位拡縮用マーカEのみを描いている。
図9の例では、目に設定された6つのボーンB(1)〜B(6)を放射状に移動させることによって目を全体的に拡大したり、縮小したりするので、その放射状の移動の基準となる位置に部位拡縮用マーカEが1つだけ設けられている。図9の例では、目の瞳孔の位置に部位拡縮用マーカE(1)が設定されている。この設定位置は部位移動用マーカM(1)の設定位置と同じ位置であるが、部位拡縮用マーカE(1)のマークを四角形とすることによって部位移動用マーカM(1)と識別できるようにしている。
6つのボーンB(1)〜B(6)にそれぞれ直結されている部位変形用マーカH(1)〜H(6)は部位拡縮用マーカE(1)にも関連付けられている。また、目の大きさが変化すると、それに伴い眉毛の位置や大きさも影響するので、目の形状の変化に応じて眉毛の形状を変形させるために、眉毛に設けられている部位変形用マーカH(7),H(8)が目の部位変形用マーカH(2),H(3)にそれぞれ関連付けられている。
各部位変形用マーカH(i)(i=1,2,…6)には部位拡縮用マーカE(1)に対する連動用のパラメータとして移動方向φhie1と拡縮倍率Khie1が設定されている。符号「φhie1」,「Khie1」の添え字「h」、「i」、「e」、「1」はそれぞれ「部位変形用マーカH」、「部位変形用マーカHのマーカ番号」、「部位拡縮用マーカE」、「部位拡縮用マーカEのマーカ番号」を示している。移動方向φhie1は、図10に示すように、部位拡縮用マーカE(1)の位置と部位変形用マーカH(i)の標準の位置(図9(a)の位置)とを結ぶ線の方向である。部位拡縮用マーカE(1)の位置と各部位変形用マーカH(i)の標準の位置は変化しないので、各部位変形用マーカH(i)の移動方向φhie1は固定値となっている。
一方、拡縮倍率Khie1は、部位拡縮用マーカE(1)の位置から部位変形用マーカH(i)の標準の位置までの距離(以下、「標準距離」という。)に対する、部位拡縮用マーカE(1)の位置から部位変形用マーカH(i)の移動した位置までの距離の割合である。すなわち、拡縮倍率Khie1は、移動方向φhie1の直線上における部位変形用マーカH(i)の移動した位置を標準距離に対する割合で示すものである。
例えば、部位変形用マーカH(1)の場合、図10に示すように、標準距離をL(1)、部位変形用マーカH(1)の移動した位置の部位拡縮用マーカE(1)の距離をL(1)’とすると、拡縮倍率Kh1e1は、Kh1e1=L(1)’/L(1)である。他の部位変形用マーカH(2)〜H(6)についても同様である。なお、拡縮倍率Khie1のディフォルト値は「1.0」である。また、L(1)=√{(Xh1−Xe1)2+(Yh1−Ye1)2+(Zh1−Ze1)2}、L(1)’=√{(Xh1’−Xe1)2+(Yh1’−Ye1)2+(Zh1’−Ze1)2}である。
外部記憶装置5やRAM4の部位拡縮用マーカE(1)のデータ記憶領域には、部位拡縮用マーカE(1)の位置座標(Xe1,Ye1,Ze1)と、移動後の位置座標(Xe1’,Ye1’,Ze1’)と、関連付けられた部位変形用マーカH(i)のマーカ番号iと部位変形用マーカH(i)の連動用のパラメータ(φhie1,Khie1)(i=1,2,…6)のデータが格納されている。
部位拡縮用マーカE(1)と各部位変形用マーカH(i)のデータ構造の関係は、図5に示した部位移動用マーカM(1)と部位変形用マーカH(i)のデータ構造がツリー構造となる関係と基本的に同じであるので、その説明は省略する。
図9(b)は、目に設定された部位拡縮用マーカE(1)によって目の大きさを約1.3倍にした例を示している。作業者が目に設定された部位拡縮用マーカE(1)を操作して当該部位拡縮用マーカE(1)の拡縮倍率Ke1を「1.3」に設定すると、各部位変形用マーカH(i)の拡縮倍率Khie1が「1.3」に変更され、目の部位変形用マーカH(1)〜H(6)がそれぞれ移動方向φh1e1〜φh6e1の方向に移動する。また、部位変形用マーカH(2),H(3)の移動に伴いこれらに関連付けられている眉毛の部位変形用マーカH(7),H(8)も連動用のパラメータに基づいて移動する。
各部位変形用マーカH(i)(i=1,2,…6)の移動位置の部位拡縮用マーカE(1)からの距離L(i)’(i=1,2,…6)は、部位拡縮用マーカM(1)から各部位変形用マーカH(1)〜H(6)の標準の位置(図9(a)の位置)までの標準距離をL(i)とすると、L(i)’=Khie1×L(i)=Khie1×√{(Xhi’−Xe1)2+(Yhi’−Ye1)2+(Zhi’−Ze1)2}となっている。
目の部位では、6つの部位変形用マーカH(1)〜H(6)が部位拡縮用マーカE(1)から離れる方向に移動することにより各部位変形用マーカH(1)〜H(6)に関連付けられたボーンB(1)〜B(6)が連動して移動し、それに伴い各ボーン(1)〜B(6)に関連付けられた複数のポリゴン頂点Pの位置が連動して移動する。この結果、目の形状は、図9(b)に示すように、全体的に大きくなる。また、眉毛の部位も、部位変形用マーカH(2),H(3)に連動して部位変形用マーカH(7),H(8)が移動することにより各部位変形用マーカH(7),H(8)に関連付けられたボーンB(7),B(8)が連動して移動し、それに伴い各ボーンB(7),B(8)にそれぞれ関連付けられた複数のポリゴン頂点Pの位置が連動して移動するので、眉毛の形状も、図9(b)に示すように、全体的に大きくなる。
従って、作業者は、鼻筋の右側にある目に対して部位拡縮用マーカEを用いて目の拡大操作を行うことにより顔画像の両目と両眉毛を簡単に大きくすることができる。なお、部位拡縮用マーカE(1)に設定された拡縮倍率Ke1や各部位変形用マーカH(i)に設定された拡縮倍率Khie1(i=1,2,…6)の情報は保存されるので、作業者は部位拡縮用マーカE(1)の操作情報(部位の拡大または縮小の割合の情報)や各部位変形用マーカH(i)の連動用のパラメータを確認することができる。
マーカRは、部位全体を回転させる編集操作をするためのマーカ(本発明に係る「第2の操作点」に相当。以下、「部位回転用マーカ」という。)である。部位回転用マーカRは、例えば、部位に設定された複数の部位変形用マーカHを左側と右側に分け、部位回転用マーカRの回転に連動して左側の部位変形用マーカHを上側に移動させる一方、右側の部位変形用マーカHを下側に移動させることにより、部位を見かけ上、回転させた形状に変化させる機能を果す。各部位回転用マーカR(i)にも位置座標「(Xri,Yri,Zri)」が設定されている。なお、各座標の添え字の「r」は部位回転用マーカRを示し、「i」は部位回転用マーカRのマーカ番号を示している。
部位回転用マーカRも、部位拡縮用マーカEと同様、部位を代表する位置(通常は、部位の画像の中心位置)に1個だけ設けられ、当該部位に設けられる複数の部位変形用マーカHが部位回転用マーカRに関連付けられている。部位回転用マーカRを回転させることにより、当該部位回転用マーカRに関連付けられた複数の部位変形用マーカHの一部と残りが互いに逆方向に連動して移動し、これにより部位の形状が全体的に回転した形状に変化する。
図11は、目の部位に設けられた部位回転用マーカRの一例を示し、(a)は目の部位回転用マーカRによって目を回転する前の状態を示す図、(b)は同部位回転用マーカRによって目を回転した状態を示す図である。なお、同図もポリゴンは省略し、ボーンBと部位回転用マーカRのみを描いている。
図11の例では、目の瞳孔の位置に部位回転用マーカR(1)が1つだけ設けられている。この設定位置は部位拡縮用マーカE(1)の設定位置と同じ位置であるが、部位回転用マーカR(1)のマークを三角形とすることによって部位拡縮用マーカE(1)や部位移動用マーカM(1)などと識別できるようにしている。
部位回転用マーカR(1)は、部位回転用マーカR(1)を時計回りに回転させると、これに連動して部位回転用マーカR(1)よりも左側の3個の部位変形用マーカH(3),H(4),H(5)を上側に移動させるとともに、右側の3個の部位変形用マーカH(1),H(2),H(6)を下側に移動させ、逆に部位回転用マーカR(1)を反時計回りに回転させると、これに連動して左側の3個の部位変形用マーカH(3),H(4),H(5)を下側に移動させるとともに、右側の3個の部位変形用マーカH(1),H(2),H(6)を上側に移動させて目が全体的に右側又は左側に傾いた形状に変化させる機能を果す。
このため、6つの部位変形用マーカH(1)〜H(6)は部位回転用マーカR(1)にも関連付けられている。また、目の形状が変化すると、それに伴い眉毛の形状も影響するので、眉毛に設けられている部位変形用マーカH(7),H(8)も部位回転用マーカR(1)に関連付けられている。
6つの部位変形用マーカH(1)〜H(6)には、図12に示すように、部位回転用マーカR(1)の回転量ψに基づいてY軸方向の移動量Dy(1)〜Dy(6)を算出する関数F1(ψ)〜F6(ψ)が連動用のパラメータとして設定されている。移動量Dy(i)(iは部位変形用マーカHのマーカ番号。i=1,2,…6)を算出する関数Fi(ψ)(i=1,2,…6)は、部位回転用マーカR(1)の回転方向に目全体が回転するように見せるために、部位回転用マーカR(1)が時計回りに回転したときには左側の3個の部位変形用マーカH(3),H(4),H(5)の移動量Dy(3),Dy(4),Dy(5)が「正」の値(Y軸の上方向移動に相当)で算出され、右側の3個の部位変形用マーカH(1),H(2),H(6)の移動量Dy(1),Dy(2),Dy(6)が「負」の値(Y軸の下方向移動に相当)で算出される。
逆に部位回転用マーカR(1)が反時計回りに回転したときには左側の3個の部位変形用マーカH(i)(i=3,4,5)の移動量Dy(i)が「負」の値で算出され、右側の3個の部位変形用マーカH(i)(i=1,2,6)の移動量Dy(i)が「正」の値で算出されるように設定されている。なお、部位回転用マーカR(1)の回転に連動して部位変形用マーカH(1)〜H(6)を移動させる方向はY軸方向だけであるので、各部位変形用マーカH(1)〜H(6)には移動方向のパラメータは設定されていない。外部記憶装置5やRAM4の部位回転用マーカR(1)のデータ記憶領域には、部位拡縮用マーカR(1)の移動前の位置座標(Xr1,Yr1,Zr1)と、移動後の位置座標(Xr1’,Yr1’,Zr1’)と、関連付けられた部位変形用マーカH(i)のマーカ番号iと部位変形用マーカH(i)の連動用のパラメータ(Dy(i))(i=1,2,…6)のデータが格納されている。
部位回転用マーカR(1)と6つの部位変形用マーカH(1)〜H(6)のデータ構造の関係は、図5に示した部位移動用マーカM(1)と部位変形用マーカH(i)のデータ構造がツリー構造となる関係と基本的に同じであるので、その説明は省略する。
図11(b)は、作業者が目に設定された部位回転用マーカR(1)を指定し、画面上で時計回りに回転させた場合の目の形状の変化を示したものである。
作業者が、入力装置6によって部位回転用マーカR(1)を時計回りに回転させる操作を行うと、部位回転用マーカR(1)がその操作に応じて回転し、その回転量ψが算出され、その算出結果と部位変形用マーカH(1)〜H(6)に連動用のパラメータとして設定された関数F1(ψ)〜F6(ψ)を用いて部位変形用マーカH(1)〜H(6)に移動量Dy(1)〜Dy(6)が設定される。なお、部位回転用マーカR(1)に対する操作としては、部位拡縮用マーカE(1)と同様に、作業者がカーソルで部位回転用マーカR(1)を指定し、数値キーによって回転角を入力するようにしてもよい。
図11(b)の例は、6つの部位変形用マーカH(1)〜H(6)に対してそれぞれDy(1)=−0.1×ψ、Dy(2)=−0.01×ψ、Dy(3)=+0.01×ψ、Dy(4)=+0.1×ψ、Dy(5)=+0.01×ψ、Dy(6)=−0.01×ψの移動量が算出され、部位回転用マーカR(1)よりも左側の3つの部位変形用マーカH(3),H(4),H(5)がそれぞれ「+0.01×ψ」、「+0.1×ψ」、「+0.01×ψ」だけ上側に移動し、部位回転用マーカR(1)よりも右側の3つの部位変形用マーカH(2),H(1),H(6)がそれぞれ「−0.01×ψ」「−0.1×ψ」、「−0.01×ψ」だけ下側に移動した状態を示している。
6つの部位変形用マーカH(1)〜H(6)が上記のように移動することによって各部位変形用マーカH(1)〜H(6)にそれぞれ関連付けられたボーンB(1)〜B(6)も移動し、ボーンB(1)〜B(6)の移動により各ボーンB(1)〜B(6)にそれぞれ関連付けられた複数のポリゴン頂点Pが連動して移動するので、図11(b)では、目尻が吊り上り、目頭が垂れ下がった形状に変化している。
また、部位変形用マーカH(2),H(3)の移動に伴いこれらに関連付けられている眉毛の部位変形用マーカH(7),H(8)も連動用のパラメータに基づいて移動する。これにより、各部位変形用マーカH(7),H(8)に関連付けられたボーンB(7),B(8)が連動して移動し、それに伴い各ボーンB(7),B(8)にそれぞれ関連付けられた複数のポリゴン頂点Pの位置が連動して移動するので、眉毛の形状も、図11(b)に示すように、眉尻が吊り上り、眉頭が垂れ下がった形状に変化する。
部位回転用マーカR(1)を反時計回りに同じように回転させた場合は、部位変形用マーカH(3),H(4),H(5)がそれぞれ「−0.01×ψ」だけ下側に移動し、部位変形用マーカH(2),H(1),H(6)がそれぞれ「+0.01×ψ」だけ上側に移動するから、表示装置7のディスプレイには、図11(b)とは逆に、目及び眉毛は、目頭及び眉頭が吊り上り、目尻及び眉尻が垂れ下がった形状に変化した顔画像が表示されることになる。
従って、作業者は、鼻筋の右側にある目に対して部位回転用マーカRを用いて目の回転操作を行うことにより顔画像の両目と両眉毛の形状を簡単に回転させることができる。なお、部位回転用マーカR(1)に設定された回転量ψと6つの部位変形用マーカH(1)〜H(6)に設定された移動量Dy(1)〜Dy(6)の情報は保存されるので、作業者は部位回転用マーカR(1)の操作情報や各部位変形用マーカH(1)〜H(6)の連動用のパラメータ(移動量Dy(1)〜Dy(6))を確認することができる。
次に、アニメーション編集について説明する。
アニメーション画像は、標準の顔画像に対して顔の特定の部位を構成するポリゴン頂点Pとその部位に設けられたボーンB及びマーカH,M,E,Rの位置を少しずつ移動させた複数コマの顔画像の集合である。従って、アニメーションデータは、コマ毎に作成された顔の表面形状を表すデータで構成されている。各コマの顔の表面形状を表すデータは、多数のポリゴン頂点P、ボーンB及びマーカH,M,E,Rの位置座標で構成されるが、2コマ目以降の顔画像を構成する各ポリゴン頂点P、各ボーンB及び各マーカH,M,E,Rの位置座標は1コマ目の顔画像における位置座標に対して移動方向及び移動量の移動条件が与えられると算出できるので、2コマ目以降のコマの顔の表面形状を表すデータは、各ポリゴン頂点P、各ボーンB及び各マーカH,M,E,Rの初期位置(1コマ目の顔画像における位置)からの移動位置を予め設定された移動条件に基づいて算出するプログラムデータで構成されている。従って、1コマ目の顔の表面形状を表すデータだけが標準の顔画像の多数のポリゴン頂点P、ボーンB及びマーカH,M,E,Rの位置座標(初期位置の座標)で構成されている。
アニメーションデータでは、アニメーション画像を再生する際、最初のコマは標準画像データと各ポリゴンに張り付けるテクスチャとに基づいて顔の表面形状を表す三次元形状画像が生成され、その三次元形状画像が表示装置7に表示されるが、2コマ目以降のコマは顔画像に含まれる各ポリゴン頂点P、各ボーンB及び各マーカH,M,E,Rの初期位置からの移動位置が算出され、その算出結果と各ポリゴンに張り付けるテクスチャとに基づいて顔の表面形状を表す三次元形状画像が生成されて表示装置7に表示される。
本実施形態では、標準画像編集モードでゲームキャラクタの標準の顔の表面形状を変形させる編集を行うと、その編集結果がアニメーションデータに反映されるようになされている。すなわち、標準顔編集用プログラムには、作業者の操作によって入力装置6から編集処理終了の指令が入力されると、RAM4に一次保存されている編集処理の処理結果(編集処理によって変化したポリゴン頂点P、ボーンB及びマーカH,M,E,Rの位置座標を含む顔画像データ)を外部記憶装置5の編集後の顔画像データの記憶領域に保存する処理と、外部記憶装置5に保存されている標準のアニメーションデータに含まれる標準の顔画像データや移動条件のデータを顔画像編集モードで変更された顔画像データや移動条件に変更する処理と、が含まれている。
後者の処理は、具体的には顔画像編集処理で標準の顔画像内のいずれかの部位変形用マーカHの位置が変更され、その部位変位用マーカHに関連付けられたボーンBやそのボーンBに関連付けられたポリゴン頂点Pの位置が変更されると、アニメーションデータの1コマ目の顔画像内の当該部位変形用マーカH、当該ボーンB及び当該ポリゴン頂点Pにそれぞれ対応する部位変形用マーカAH、当該ボーンAB及び当該ポリゴン頂点APを同じ位置に変更するものである。なお、符号「AH」,「AB」,「AP」の「A」はアニメーションデータのものであることを示している。
1コマ目の顔画像内の部位変形用マーカAH、ボーンAB及びポリゴン頂点APの位置を自動的に変更することにより、当該部位変形用マーカAHの設けられた部位が大きさを変更するものではなく、単に形を変形するだけのものである場合は当該部位を構成する多数のポリゴン頂点APは、2コマ目以降の各コマでは標準の顔画像の場合と同様の移動条件で位置が変化するから、アニメーションデータを再生すると、変更後の部位の形状に対して標準の顔画像と同様の動きをさせることができる。
例えば、アニメーションデータが目を閉じる動作(上瞼を上下する動作)を含む画像のデータで、顔画像編集処理で図4に示した目の目尻を下げる編集が行われた場合、アニメーションデータを再生すると、図4(b)に示す目尻の下がった目に対して上瞼が標準の顔画像の場合と同様の移動量で上下に動く動作をする。顔画像編集処理で図6に示した目全体を鼻筋側に移動させる編集が行われた場合や図11に示した目尻を吊り上げる編集が行われた場合も同様である。
一方、顔画像編集処理で図9に示した目全体を拡大する編集が行われた場合は、1コマ目の顔画像内の目の部位変形用マーカAH、ボーンAB及びポリゴン頂点APの位置を変更するだけでなく、各コマの部位変形用マーカAH、ボーンAB及びポリゴン頂点APの初期位置からの移動量に拡縮倍率が反映される。
例えば、図9の例で、部位変形用マーカH(3)に対応するアニメーションデータの部位変形用マーカAH(3)が、標準の顔画像(図9(a)の目の大きさ)では最初のコマから第nコマまでの間でY軸の下方向に移動量Dnyだけ移動するように設定されているとすると、第nコマの部位変形用マーカAH(3)の位置座標のY成分を決定する式は移動量Dnyに部位変形用マーカAH(3)の拡縮倍率Kh3e1を乗じた(Dny×Kh3e1)に設定されている。部位変形用マーカAH(3)に関連付けられているボーンB(j)やそのボーンB(j)に関連付けられているポリゴン頂点Pの第nコマにおける位置座標のY成分を決定する式も同様で、予め設定された移動量に拡縮倍率Kh3e1を乗じた式に設定されている。
拡縮倍率Kh3e1のディフォルト値は「1.0」に設定されているので、標準の顔画像に対するアニメーション画像では、部位変形用マーカAH(3)、部位変形用マーカAH(3)に関連付けられているボーンB(j)及びそのボーンB(j)に関連付けられているポリゴン頂点Pは、それぞれ予め設定されている標準の移動量でY軸の下方向に移動するが、顔画像編集処理で目のサイズが、例えば、標準のサイズに対して拡縮倍率Kh3e1=1.3で拡大された場合は、顔画像に対するアニメーション画像では、部位変形用マーカAH(3)、部位変形用マーカAH(3)に関連付けられているボーンB(j)及びそのボーンB(j)に関連付けられているポリゴン頂点Pは、標準の移動量を1.3倍した移動量でY軸の下方向に移動することになる。すなわち、目のサイズの拡縮倍率Kh3e1に応じて各コマのポリゴン頂点Pの初期位置からの移動量も連動して拡大又は縮小される。
従って、本実施形態では、標準画像編集モードでゲームキャラクタの標準の顔画像を変形させる編集を行うと、自動的にその編集結果がアニメーションデータに反映されるので、標準画像編集の後で標準の顔画像を用いて作成されているアニメーションデータを用いて標準画像編集と同様の編集を行い、変形後の顔画像に対するアニメーションデータを作成することは基本的に必要とされない。しかしながら、標準顔画像の編集結果を反映したアニメーションデータを再生したとき、部位の変形量が大きすぎたりしてその部位の動きが不自然になったり、顔全体の表情として違和感が生じたりする場合があるので、その場合には標準顔画像の編集結果を反映したアニメーションデータに対して修正をする必要がある。
本実施形態におけるアニメーション編集モードは、主としてそのようなアニメーションデータの修正をするためのモードである。本実施形態に係る顔画像編集プログラムは、アニメータがゲームソフトにおけるゲームキャラクタの標準画像やアニメーション画像を作成する場合に利用されるが、ゲームソフトに搭載することによってプレイヤがゲームキャラクタの標準の顔を好みの顔に編集する場合にも利用することができる。この場合は、顔画像の編集によって生じるアニメーション画像の不自然感や違和感などは顔画像の編集の仕方で緩和することができるので、プレイヤの編集作業の容易性や簡易性、ゲームソフトのデータ容量などを考慮し、標準顔編集用プログラムのみをゲームソフトに搭載するとよい。
顔画像編集は1枚の標準モデルの顔画像について表面形状を変化させる編集であるが、アニメーション編集は、標準モデルの顔画像の口や目などの部位をコマ送りで変化させて「笑う」、「怒る」などの特定の顔の表情を示す一群のコマ画像について、コマ毎に顔画像の表面形状を変化させる編集である。従って、顔画像編集は1枚の顔画像に対する編集作業となるのに対し、アニメーション編集は多数の同一の顔画像に対する編集作業となる点が異なる。
アニメーション編集は、前のコマの顔の所定の部位を微小変化させて各コマの顔の表面形状を作成するという作業を繰り返す編集であるから、コマ毎の顔の表面形状の編集でみれば、その編集作業は顔画像編集と基本的に同じである。従って、上述した顔画像編集用に設けた4種類の部位変形用マーカH、部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRをアニメーション編集にも適用することができる。
しかしながら、顔画像編集では、木目細かい編集作業を可能にするために、各部位に各種類のマーカH,M,E,Rが比較的多く設定されているが、アニメーション編集では、主として前のコマの顔に付された部位の変化部分に対して微小な変化を付する作業となるので、顔画像編集用に設定されたマーカH,M,E,Rが全て必要になるということは少ない。そこで、本実施形態では、アニメーション編集における作業や編集データの管理の負担を軽減するために、アニメーション編集用の4種類の部位変形用マーカH、部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRの数を顔画像編集用よりも少なくしている。
図13は、目と眉毛の部位に設けられたアニメーション編集用の部位変形用マーカの一例を示す図である。
例えば、目と眉毛には、図4(a)に示すように、顔画像編集用の部位変形用マーカHとして目頭、目尻、上瞼の2箇所、下瞼の2箇所に合計6個の部位変形用マーカH(1)〜H(6)を設定していたが、アニメーション編集では、図13に示すように、上瞼の2箇所と下瞼の1箇所の合計3箇所にそれぞれ部位変形用マーカAH(2),AH(3),AH(5)が設けられ、目頭と目尻と下瞼の他の1箇所の3箇所には部位変形用マーカAHは設けられていない。すなわち、顔画像編集用の部位変形用マーカH(1),H(4),H(6)に対応する部位変形用マーカAHは設けられていない。
なお、部位変形用マーカAHの符号「A」は、アニメーション編集用であることを示している。後述する部位変形用マーカAHの移動量ADや部位変形用マーカAHに関連付けられたボーンABやそのボーンABに設定される倍率AKの符号「A」についても同様である。
顔画像編集用では、部位変形用マーカH(1)〜H(6)はボーンB(1)〜B(6)と同じ位置に設けられ、目頭のボーンB(1)と目尻のボーンB(4)は目頭の部位変形用マーカH(1)と目尻の部位変形用マーカH(4)とでそれぞれ移動させることができたが、アニメーション編集用では、目頭の部位変形用マーカH(1)と目尻の部位変形用マーカH(4)と下瞼の部位変形用マーカH(6)に対応する部位変形用マーカAHを設けていないので、ボーンAB(1),AB(4),AB(6)をそれぞれ部位変形用マーカAH(2),AH(3),AH(5)で移動させる必要がある。
そこで、本実施形態では、目尻のボーンAB(4)を部位変形用マーカAH(3)と部位変形用マーカAH(5)とに関連付け、部位変形用マーカAH(3)又は部位変形用マーカAH(5)が移動すると、それに連動してボーンAB(4)を移動させるようにしている。ボーンAB(4)には、連動用のパラメータとして部位変形用マーカAH(3)の移動量ADh3と部位変形用マーカAH(5)の移動量ADh5に対してそれぞれ所定の倍率AKb4h3,AKb4h5(例えば、いずれも0.25)を乗じた移動量が設定される関数が設定されている。
なお、「AKb4h3」の添え字の各符号「b」,「4」,「h」,「3」は、それぞれ「アニメーション編集用のボーン」、「アニメーション編集用のボーンのボーン番号」、「アニメーション編集用の部位変形用マーカ」、「アニメーション編集用の部位変形用マーカのマーカ番号」を示している。「AKb4h5」の添え字についても同様である。
部位変形用マーカAH(3)及び部位変形用マーカAH(5)が移動すると、ボーンAB(4)は、部位変形用マーカAH(3)の移動ベクトルと部位変形用マーカAH(5)の移動ベクトルを合成した方向に移動する。部位変形用マーカAH(3),AH(5)の移動前の位置座標をそれぞれ(AXh3,AYh3,AZh3),(AXh5,AYh5,AZh5)とし、移動後の位置座標をそれぞれ(AXh3’,AYh3’,AZh3’),(AXh5’,AYh5’,AZh5’)とすると、部位変形用マーカAH(3),AH(5)の各移動ベクトルのX,Y,Z成分(ΔXh3,ΔYh3,ΔZh3),(ΔXh5,ΔYh5,ΔZh5)は、
(ΔXh3,ΔYh3,ΔZh3)=(AXh3’−AXh3,AYh3’−AYh3,AZh3’−AZh3)
(ΔXh5,ΔYh3,ΔZh3)=(AXh5’−AXh5,AYh5’−AYh5,AZh5’−AZh5)
である。
ボーンAB(4)の移動前後の位置座標をそれぞれ(AXb4,AYb4,AZb4),(AXb4’,AYb4’,AZb4’)とすると、ボーンAB(4)の移動ベクトルのX,Y,Z成分(ΔXb4,ΔYb4,ΔZb4)は、(ΔXb4,ΔYb4,ΔZb4)=(AXb4’−AXb4,AYb4’−AYb4,AZb4’−AZb4)である。ボーンAB(4)の移動ベクトルは、部位変形用マーカAH(3)の移動ベクトルと部位変形用マーカAH(5)の移動ベクトルを合成したものであるから、ボーンAB(4)の移動ベクトルのX,Y,Z成分、すなわち、X,Y,Zの各軸方向の移動量(ΔXb4,ΔYb4,ΔZb4)は、ΔXb4=ΔXh3×AKb4+ΔXh5×AKb5、ΔYb4=ΔYh3×AKb4+ΔYh5×AKb5、ΔZb4=ΔZh3×AKb4+ΔZh5×AKb5である。図13の例で、AKb4=AKb5=0.25に設定していると、部位変形用マーカAH(3)及び部位変形用マーカAH(5)が移動すれば、ボーンAB(4)は、X,Y,Zの各軸方向にそれぞれ(ΔXh3+ΔXh5)×0.25、(ΔYh3+ΔYh5)×0.25、(ΔZh3+ΔZh5)×0.25だけ移動する。
また、下瞼のボーンB(6)を部位変形用マーカAH(2)と部位変形用マーカAH(5)とに関連付け、部位変形用マーカAH(2)又は部位変形用マーカAH(5)が移動すると、それに連動してボーンAB(6)を移動させるようにしている。この場合は、ボーンAB(6)が横方向に部位変形用マーカAH(5)と並んでいるので、部位変形用マーカAH(5)のY軸方向の移動に対してはボーンAB(6)を部位変形用マーカAH(5)と同じ移動量で移動させ、部位変形用マーカH(5)のX軸方向やZ軸方向の移動に対して部位変形用マーカH(5)の移動量に対して所定の倍率AKのb6h5(例えば、0.25)を乗じた移動量で移動させるようにしている。
なお、眉毛については数が少ないので、眉頭用と眉尻用の2個の部位変形用マーカAH(7),AH(8)がアニメーション編集用にも設定されている。また、顔画像編集用では、眉毛の部位変形用マーカH(7),H(8)をそれぞれ目の部位変形用マーカH(2),H(3)に連携させ、目の編集で部位変形用マーカH(2),H(3)が移動すると、それに連動して眉毛の部位変形用マーカH(7),H(8)を連動させるようにしていたが、その構成はアニメーション編集用でも同様に適用され、眉毛の部位変形用マーカAH(7),AH(8)はそれぞれ目の部位変形用マーカAH(2),AH(3)に連携するように関連付けられている。従って、アニメーション編集でも顔画像編集と同様に目の変形に連動して眉毛をバランス良く移動させることができる。
一方、顔画像編集用の顔の表面形状に設定されている部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRは、アニメーション用の各コマの顔の表面形状にも同様に設定されている。すなわち、目の瞳孔の位置に部位移動用マーカAM(1)、部位拡縮用マーカAE(1)、部位回転用マーカAR(1)が1つだけ設けられている。部位移動用マーカAM(1)、部位拡縮用マーカAE(1)及び部位回転用マーカAR(1)の各マーカを用いて、部位を全体的に移動させたり、部位を全体的に拡縮したり、部位を全体的に回転させたりする編集操作は、上述した顔画像編集の場合と同様であるので、ここではその説明を省略する。
次に、顔画像編集における顔の表面形状の編集処理について、図14のフローチャートに従って説明する。なお、以下の説明では、顔の目の部位の編集作業を例に説明する。
作業者が入力装置6を操作して顔画像編集モードを選択すると、CPU2はROM3に記憶されている標準顔編集用プログラムと標準顔画像データをRAM4に読み出し、その標準顔編集用プログラムを実行する。図14に示すフローチャートは、CPU2が標準顔編集用プログラムを実行したときの処理内容のアルゴリズムを示すものである。
CPU2は、まず、RAM4に読み出した顔画像編集用のキャラクタの顔画像のリストを表示装置7に表示し、作業者に編集対象の顔画像を選択させる(S1)。この編集対象の顔画像には、標準の顔の表面形状(ディフォルトの表面形状)と標準の顔の表面形状に対して既に編集が行われた表面形状の画像が含まれている。
作業者の操作により入力装置6から編集対象の顔画像が選択されると、CPU2は、その顔画像のデータとテクスチャデータを用いて図2に示す三次元形状画像を生成する(S2)。この場合、標準の顔の表面形状が選択されていれば、CPU2は、標準顔画像データとテクスチャデータを用いて三次元形状画像を生成し、標準の顔の三次元形状画像を表示装置7の表示画面7aに表示する(S3、図2、図4(a)参照)。
一方、編集後の顔画像が選択されていれば、CPU2は、編集後の顔画像のデータとテクスチャデータを用いて図2に示す三次元形状画像を生成し(S2)、編集後の顔の三次元形状画像を表示装置7の表示画面7aに表示する(S3)。
表示画面7aには顔画像がポリゴンモデルで表示されるが、その表面形状には部位の形状を変形させる操作点として部位変形用マーカHが表示されている(図4(a)参照)。なお、本実施形態では部位の形状を変形させる操作点として部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRを用意しているが、標準の編集画面ではこれらのマーカは表示されておらず、作業者の選択操作によって表示されるようになっている(S9,S10参照)。これは、同一の位置に部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRが重複して表示される場合があり(図6(a),図9(a),図11(a)参照)、全てのマーカを表示させると、却って操作点の表示が煩雑になり、操作がし難くなるからである。
作業者が入力装置6を操作して所望の部位変形用マーカH(i)(iは部位変形用マーカHのマーカ番号)を指定し、その部位変形用マーカH(i)を所望の位置に移動させる操作を行うと(S4:YES)、CPU2は、XYZ座標系におけるその部位変形用マーカH(i)の移動前の位置座標と移動後の位置座標を算出し、その算出結果から移動方向Nhiと移動量Dhiを算出する(S5)。更に、CPU2は、移動操作があった部位変形用マーカH(i)に連動対象として関連付けられている1又は2以上のボーンB(j)(jはボーン番号)を検索し、部位変形用マーカH(i)の移動内容とそのボーンB(j)に設定されている連動用のパラメータ(θbjhi,Kbjhi)とに基づいて各ボーンB(j)の移動後の位置座標を算出する(S6)。また、CPU2は、各ボーンB(j)に連動対象として関連付けられている複数のポリゴン頂点P(t)(tはポリゴン番号)の移動後の位置座標を算出する(S7)。ポリゴン頂点P(t)の移動後の位置座標もボーンB(j)の移動後の位置座標の算出と同様に、ボーンB(j)の移動内容と各ポリゴン頂点P(t)に設定されている連動用のパラメータ(θptbj,Kbjhi)とに基づいて算出される。
そして、CPU2は、部位変形用マーカH(i)と当該部位変形用マーカH(i)に連動する1又は2以上のボーンB(j)及び複数のポリゴン頂点P(t)の位置座標のデータを、算出した移動後の位置座標のデータに変化させるとともに、表示画面7aに表示された顔画像における表示位置を移動後の位置に変化させる(S8、図4(b)の例参照)。
続いて、CPU2は、入力装置6から編集作業終了の操作が入力されたか否かを判断し(S16)、編集作業終了の操作がなければ(S16:NO)、ステップS4に戻り、編集作業終了の操作があれば(S16:YES)、CPU2は、部位変形用マーカH(i)に対して行われた操作内容とその操作内容に基づくボーンB(j)及びポリゴン頂点P(t)の移動内容の演算結果を顔画像のデータとともに外部記憶装置5に記憶した後(S17)、編集処理を終了する。
ステップS4で作業者が部位変形用マーカHの操作をせず(S4:NO)、入力装置6を操作して部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRのいずれかを指定し、そのマーカの表示を指定すると(S9:YES)、CPU2は、表示画面7aに表示されている顔画像に指定されたマーカを表示させる(S10、図6(a),図9(a)、図11(a)の例参照)。
作業者が入力装置6を操作して所望の部位移動用マーカM、部位拡縮用マーカE又は部位回転用マーカRを指定し、そのマーカに対して所定の操作情報を入力すると(S11:YES)、CPU2は、指定されたマーカの設定されている部位に設けられている複数の部位変形用マーカH(i)に対して、入力装置6から入力された操作情報と各部位変形用マーカH(i)に設定されている連動用のパラメータに基づいてXYZ座標系における移動位置を算出し、その算出結果から移動方向と移動量を算出する(S12)。
例えば、作業者が部位移動用マーカMを表示させ、目の部位移動用マーカM(1)に対して移動操作を行うと、CPU2は、XYZ座標系におけるその部位移動用マーカM(1)の移動前の位置((Xm1,Ym1,Zm1)と移動後の位置(Xm1’,Ym1’,Zm1’)を算出し、その算出結果から移動方向θm1と移動量Dm1を算出する。そして、CPU2は、目に設定されている6つの部位変形用マーカH(i)(i=1〜6)の移動位置(Xhi’,Yhi’,Zhi’)及びこれらに直結されているボーンB(i)の移動位置(Xbi’,Ybi’,Zbi’)を算出する(図6,図7の例参照)。
また、作業者が部位拡縮用マーカEを表示させ、例えば、目の部位拡縮用マーカE(1)に対して拡大又は縮小の倍率xを入力すると、CPU2は、目に設定されている6つの部位変形用マーカH(i)(i=1〜6)に対して、それぞれ移動方向φhie1と移動距離L(i)’=Khie1×L(i)を算出する(図9,図10の例参照)。
また、作業者が部位回転用マーカRを表示させ、例えば、目の部位拡縮用マーカR(1)に対して回転操作を行うと、CPU2は、目に設定されている6つの部位変形用マーカH(i)(i=1〜6)に対してそれぞれ移動量Dy(i)=Fi(ψ)(i=1〜6)を算出する(図11,図12の例参照)。
更に、CPU2は、移動した部位変形用マーカHに関連付けられている1又は2以上のボーンB(j)(jはボーンの番号)を検索し、部位変形用マーカHの移動内容とそのボーンB(j)に設定されている連動用のパラメータとに基づいて各ボーンB(j)の移動後の位置座標(Xbj’,Ybj’,Zbj’)を算出する(S13)。また、CPU2は、各ボーンB(j)に関連付けられている複数のポリゴン頂点P(k)(kはポリゴン頂点の番号)の移動後の位置座標(Xpk’,Ypk’,Zpk’)を算出する(S14)。
そして、CPU2は、部位変形用マーカHと当該部位変形用マーカHに連動する1又は2以上のボーンB(j)及び複数のポリゴン頂点P(k)の位置座標のデータを、算出した移動後の位置座標のデータに変化させるとともに、表示画面7aに表示された顔画像における表示位置を移動後の位置座標に変化させる(S15、図6(b),図9(b),図11(b)の例参照)。
続いて、CPU2は、入力装置6から編集作業終了の操作が入力されたか否かを判断し(S16)、編集作業終了の操作がなければ(S16:NO)、ステップS4に戻って上述した編集処理を行い、編集作業終了の操作があれば(S16:YES)、CPU2は、各マーカに対して行われた操作内容とその操作内容に基づくボーンB及びポリゴン頂点Pの移動内容の演算結果を顔の表面形状のデータとともに外部記憶装置5に記憶した後(S17)、編集処理を終了する。
なお、アニメーション編集は、作業者が修正したい動きの部分で指定したコマの顔画像に対して上述した顔画像編集における編集処理を行うことになるから、指定したコマの顔画像に対する編集作業は基本的に顔画像編集の顔画像に対する編集作業と同じである。
従って、図14に示すフローチャートにおいて、作業者が修正したい動きの部分で指定したコマの顔画像の編集作業が終了した場合、その編集内容を外部記憶装置5に記憶する(S16)。なお、他に修正したいコマがある場合には、そのコマの顔画像の編集をするために、ステップS1に戻る内容に修正すれば、アニメーション編集における編集処理を示すフローチャートにすることができる。
以上のように、本実施形態によれば、従来の顔画像に設けられたボーンBとは別に、1又は2以上のボーンBを移動させるためのマーカH,M,E,Rを設け、それらのマーカH,M,E,Rに対する操作に基づいて1又は2以上のボーンBを移動させるようにしているので、ボーンBを変位させて顔の表面形状を変化させる編集作業が容易になる。
特に、部位毎に、各部位に設定されている複数のボーンBを纏めて同じ方向に移動させる部位移動用マーカMや、複数のボーンBを纏めて放射状に移動させる部位拡縮用マーカEや、複数のボーンBを纏めて同じ方向に回転移動させる部位回転用マーカRを設けているので、これらのマーカM,E,Rを操作することにより顔面における部位の位置や大きさや向きなどを簡単に変更することができる。
また、各部位に設定された部位変形用マーカHと近接若しくは隣接している部位に設定された部位変形用マーカH(例えば、目に設定された部位変形用マーカHと眉毛に設定された部位変形用マーカHなど)を連携させ、一方の部位変形用マーカHを操作して一方の部位を変形させたとき、他の部位変形用マーカHも連動して移動させるようにしているので、一方の部位の変形の影響を他の部位の変形にも好適に反映することができる。
また、標準画像編集モードでゲームキャラクタの標準の顔画像を変形させる編集を行うと、自動的にその編集結果がアニメーションデータに反映され、アニメーションデータを再生すると、編集後の顔画像に対して所定の動作をさせることができる。従って、編集後の顔画像に対する動きが不自然であったり、違和感があったりして部分的に修正が必要な場合は別として、基本的に標準の顔画像を用いて作成されているアニメーションデータに対して改めて標準画像編集と同様の編集を行う必要がないので、アニメーションデータに対する編集効率が向上する。
編集後の顔画像に対するアニメーションに対して部分的に編集をする場合でも、標準画像編集と同様に部位変形用マーカAH、部位移動用マーカAM、部位拡縮マーカAE及び部位回転用マーカARの操作によって所望のコマの顔の表面形状を簡単に変形できるので、アニメーションデータの編集作業を大幅に低減することができる。
なお、上記実施形態では、顔の目の部位を例に本発明に係る顔形状編集方法を説明したが、目以外の口や鼻などの部位や顔の輪郭や髪形や髭などについても同様の方法が適用できることは言うまでもない。また、人の顔の表面形状だけでなく、動物や他の生き物の顔の表面形状の編集についても適用することができる。
また、上記実施形態では、主としてゲームキャラクタの顔画像を作成する際の標準の顔画像の編集やアニメーション画像の編集をするための顔画像編集装置として説明したが、本発明に係る標準顔編集用プログラムをゲームソフトに搭載すれば、ゲームソフトに設けられたキャラクタの標準の顔画像をプレイヤに好みの顔に編集させることができる。すなわち、ゲームソフトにプレイヤによるキャラクタの顔画像の編集機能を持たせることができる。
本発明に係る標準顔編集用プログラムでは、従来のボーンとは別に、そのボーンを個々に若しくは複数個を纏めて一定の纏まりを持った移動させるための部位変形用マーカH、部位移動用マーカM、部位拡縮用マーカE及び部位回転用マーカRを設けているので、顔画像の編集経験の少ないプレイヤであっても比較的容易にキャラクタの顔画像を所望の形状に編集することができる。
また、プレイヤがキャラクタの標準の顔画像に対して好みの修正をした場合、修正後の顔画像のデータ(移動させたボーンBやポリゴン頂点Pの位置座標のデータなど)がアニメーションデータに反映され、そのアニメーションデータを再生すると、修正後の顔画像に対して所定の動きをさせることができるので、プレイヤはアニメーションデータを修正することなく、顔画像を修正したキャラクタをゲーム空間に登場させてゲームを楽しむことができる。
すなわち、ゲーム画面にはゲーム装置内のRAMからアニメーションデータとして作成されている各コマの画像が所定の周期でVRAMに読み出されてキャラクタの動画が再生されるが、アニメーションデータは、標準サイズの画像を元に作成されているので、例えば、キャラクタがまばたきをするアニメーションデータを再生した場合は、その顔の画像は、標準の顔画像の上瞼を上下に動かした画像となる。
しかしながら、例えば、プレイヤが部位拡縮用マーカEを用いてキャラクタの標準の顔画像の目のサイズを倍率Mで拡大する編集をした場合、上述したように、編集後の顔画像がアニメーションの1コマ目の顔画像に変更され、目に設定された部位拡縮用マーカEに入力された倍率Mはコマ間のボーンBの移動量に乗じられるように設定されているので、キャラクタのまばたきをする顔のアニメーションデータとして作成されている各コマの顔画像をVRAMに読み出す処理を行うと、コマ間でのキャラクタの目の上瞼の移動量は標準の移動量のM倍の移動量となるから、再生されるアニメーション画像は、編集後の顔画像の上瞼を上下に動かした画像となる。
このように、VRAMにアニメーションデータの各コマの顔画像を読み出すときに、目の上瞼が動く量を目に設定されている部位拡縮用マーカEに入力された倍率Mで変化させることで、プレイヤが編集したキャラクタの顔画像についてまばたきをさせたアニメーション画像をゲーム画面に表示することができる。従って、例えば、編集したキャラクタの顔画像について編集前の顔画像と同様の上瞼の動きをさせた場合には、上瞼が下瞼に完全に閉じないという不都合が生じる場合があるが、上記のようにアニメーションデータの再生時に顔画像編集で部位拡縮用マーカEに入力された倍率Mが反映されるので、プレイヤは上記の不都合を感じることなく顔画像を修正したキャラクタでゲームを楽しむことができる。
なお、上記の例では目の部位について説明したが、口や鼻などの他の部位についても同様である。また、部位拡縮用マーカEだけでなく、部位移動用マーカMや部位回転用マーカRについても顔画像編集で入力された操作情報をアニメーションデータの再生時に反映して各コマの顔画像を変化させることで、上記の効果を奏することができる。
また、上記実施形態では、ポリゴンモデルによって顔の表面形状が表現される場合について説明したが、本発明は、顔の表面形状が多数の点で表現され、それらの点の位置を移動させて表面形状を変形させる編集方法に広く適用することができる。例えば、本発明は、NURBS(Non-Uniform Rational B-Spline)曲線によって表現させる表面形状の形状編集にも適用することができる。
また、上記実施形態では、ゲームソフトに登場する人型のキャラクタの顔の表面形状の編集方法について説明したが、本発明がゲームソフトに登場するキャラクタの顔画像の編集に限定されないことは言うまでもない。