(58)【調査した分野】(Int.Cl.,DB名)
前記操作対象の顔の部位に対する前記選択操作が検出されたときに、前記顔モデルにおいて前記操作対象の顔の部位をハイライトするように構成された第3の表示ユニットを更に含む、請求項6に記載の装置。
【発明を実施するための形態】
【0011】
当業者にこの出願における解決策をより良く理解してもらうために、以下に、この出願の実施例における添付図面を参照して、この出願の実施例における技術的解決策を明確且つ完全に説明する。明らかに、説明する実施例は、この出願の実施例の全てではなく、一部に過ぎない。創造的取り組みなしに本出願の実施例に基づいて当業者により得られる全ての他の実施例は、本出願の保護範囲内に入るものとする。
【0012】
この出願の明細書、特許請求の範囲及び前述の添付図面において、「第1」及び「第2」という用語は、同様の対象を区別するために使用され、必ずしも特定の順序又は順番を記述するために使用されない。このように使用されるデータは、適切な場合に置き換えられることができ、それにより、ここに記載するこの出願の実施例は、ここに例示又は記載する順序以外の順序で実現できることが理解されるべきである。さらに、「含む」及び「有する」という用語並びにそれらの変形のいずれかは、非排他的な包含をカバーすることを意図しており、例えば、一連のステップ又はユニットを含むプロセス、方法、システム、プロダクト又はデバイスは、明確に記載されたステップ又はユニットに限定される必要はなく、明確に記載されていないか、或いはプロセス、方法、プロダクト又はデバイスに固有の他のステップ又はユニットを含んでもよい。
【0013】
この出願の実施例に従って、顔モデル編集方法の実施例が提供され、顔モデル編集方法は、
図1に示す適用環境に適用されてもよいが、これに限定されない。
図1に示すように、端末102がネットワーク104を使用することによりサーバ106から顔モデルを取得した後に、端末102内で表示された顔モデルにおけるカーソルの位置が検出され、表示された顔モデルは複数の顔の部位を含み、複数の顔の部位のうち操作対象の顔の部位が位置に従って決定され、操作対象の顔の部位に対する選択操作が検出された後に、操作対象の顔の部位が、操作対象の顔の部位に対する取得された編集操作に応じて編集され、次に、編集された操作対象の顔の部位が顔モデルにおいて表示される。この実施例では、端末は、以下のもの、すなわち、移動電話、タブレットコンピュータ、ノートブックコンピュータ及びPCのうち少なくとも1つを含んでもよいが、これらに限定されない。
【0014】
この出願の実施例に従って、顔モデル編集方法が提供される。
図2に示すように、方法は以下のステップを含む。
【0015】
S202.表示された顔モデルにおけるカーソルの位置を検出し、表示された顔モデルは複数の顔の部位を含む。
【0016】
S204.位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定する。
【0017】
S206.操作対象の顔の部位に対する選択操作を検出する。
【0018】
S208.操作対象の顔の部位に対する取得された編集操作に応じて、操作対象の顔の部位を編集する。
【0019】
S210.顔モデルにおいて編集された操作対象の顔の部位を表示する。
【0020】
この実施例では、顔モデル編集方法は、端末アプリケーション内のキャラクタ役生成プロセスにおけるキャラクタ役の対応する顔モデルを編集することに適用されてもよいが、これに限定されない。例えば、ゲームアプリケーションを例として使用すると、ゲームアプリケーション内のキャラクタ役がプレイヤのために生成されるときに、操作対象の顔の部位は、表示された顔モデルの複数の顔の部位におけるカーソルの位置を検出することにより決定されてもよく、操作対象の顔の部位に対する選択操作が検出された後に、対応する編集操作が、取得された編集操作に応じて実行される。
【0021】
図3は、この出願の実施例による顔モデル編集方法の適用の概略図である。
図3に示すように、顔モデルにおける眉毛の部位(
図3の左側に示す点線フレーム等)は、カーソルの位置を使用することにより選択される。その部位に対する編集操作(回転操作等)が取得された後に、眉毛の部位が編集されてもよく、編集された眉毛の部位(
図3の右側に示す点線フレーム等)が顔モデルにおいて表示される。したがって、キャラクタ役の顔モデルに対する編集操作が簡略化され、編集されたキャラクタ役は、プレイヤのために迅速且つ正確に表示される。この例示は単なる例であり、この実施例において説明する顔モデル編集方法は、如何なる種類の端末アプリケーションにも適用可能である。
【0022】
この実施例では、端末内で表示された顔モデルにおいて検出されたカーソルの位置に従って、顔モデルの複数の顔の部位のうち操作対象の顔の部位が決定され、操作対象の顔の部位に対する選択操作が検出された後に、操作対象の顔の部位が、操作対象の顔の部位に対する取得された編集操作に応じて編集され、それにより、顔モデルにおいて編集された操作対象の顔の部位を表示する。すなわち、カーソルの位置を検出することにより、顔モデルの複数の顔の部位から選択された操作対象の顔の部位が決定され、それにより、操作対象の顔の部位についての編集プロセスを直接完了し、操作対象の顔の部位に対応するスライドブロックは、更なる制御リストの中でドラッグされる必要はない。したがって、ユーザは、顔モデルに対して顔のピッキング編集を直接実行することができ、それにより、顔モデルに対する編集操作を簡略化し、次に、顔モデルと制御リストの中のスライドブロックとの間を切り替えることにより引き起こされる比較的高い操作の複雑性の問題を克服する。さらに、編集操作は、顔モデルにおける顔の部位に対して直接実行され、それにより、ユーザは、端末内で表示された編集操作と編集された操作対象の顔の部位の変更効果とを直感的に見ることができ、見るものが得られるものであることを実現できる。したがって、編集操作は、ユーザ要求をより良く満たすことができる。
【0023】
この実施例では、カーソルの位置は、画面上に表示されたマウスの対応する位置を示すために使用されてもよいが、これに限定されない。
【0024】
この実施例では、操作対象の顔の部位に対する選択操作が検出されたときに、方法は、操作対象の顔の部位を特別に表示することを含んでもよいが、これに限定されない。例えば、顔の部位はハイライトされるか、或いは描影が顔の部位に対して表示される。
【0025】
この実施例では、編集は、以下のもの、すなわち、操作対象の顔の部位を移動すること、操作対象の顔の部位を回転すること、操作対象の顔の部位を拡大すること、及び操作対象の顔の部位を縮小することのうち少なくとも1つを含んでもよい。
【0026】
この実施例では、カーソルの位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定することは、
位置における画素のカラー値を取得し、
カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定することを含む。
【0027】
この実施例では、位置における画素のカラー値を取得することは、マスクマップにおいて、位置に対応する画素のカラー値を取得し、マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応し、画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含んでもよいことを含んでもよいが、これに限定されない。
【0028】
この実施例では、顔モデル上で貼り合わされたマスクマップ上の各マスク領域は、顔モデル上の1つの顔の部位に対応する。すなわち、顔モデル上で貼り合わされたマスクマップ上のマスク領域がカーソルを使用することにより選択されたときに、顔モデルにおける対応する顔の部位が選択されてもよく、それにより、顔モデル上の顔の部位を直接編集し、編集操作を簡略化する。
【0029】
例えば、この実施例では、マスクマップは、以下のコードを使用することにより構築されてもよいが、以下のコードを使用することにより構築されることに限定されない。
float4 maskColor = tex2D(FacialMaskSampler,param.uv0);
float maskR = maskColor.r*255.0f;
float alpha = 0;
if(IsValEqual(SelectedAreaColor, maskR))
{
alpha += FacialMaskParams.y;
}
float4 finalColor = float4(0,2,5,alpha*2.5f*maskColor.b);
ここで、maskColor.rは赤チャネルを示すために使用され、maskColor.bは青チャネルを示すために使用される。
【0030】
さらに、この実施例では、マスクマップ内の各マスク領域と、対応する画素のカラー値との間のマッピング関係は予め設定されてもよいが、予め設定されることに限定されない。例えば、表3に示す顔モデルにおける鼻は、6個の部位を具体的に含み、1つの赤カラー値(Rカラー値を使用することにより示される)が部位毎に設定され、誤りを回避するために、例えば、値は少なくとも10単位だけ互いに異なってもよいが、異なることに限定されない。
【0031】
【表1】
すなわち、カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定することは、マスクマップにおいて、位置に対応する画素のカラー値が取得された後に、画素のカラー値に対応するマスク領域がマッピング関係を問い合わせることにより取得されてもよく、次に、マスク領域に対応する操作対象の顔の部位が取得されることを含んでもよいが、これに限定されない。
【0032】
この実施例では、表示された顔モデルにおけるカーソルの位置は、画素ピッキングのために顔ピッキング技術を使用することにより検出されてもよいが、画素ピッキングのために顔ピッキング技術を使用して検出されることに限定されない。画素ピッキングは、モデルオブジェクトが1単位として使用されるピッキング技術であり、ディスプレイ画面上でカーソルにより選択又はクリックされた仮想オブジェクトが検出され、カーソルが仮想オブジェクトと相互作用する方法である。仮想オブジェクトは、対応する顔モデルにおける顔の部位でもよいが、これに限定されない。
【0033】
この実施例では、1つの識別子IDが仮想オブジェクト(すなわち、顔の部位)毎に設定され、次に、全てのピッキング可能な仮想オブジェクトが1つのrender targetに描画され、IDは定数レジスタにより取り入れられる。最後に、カーソルの現在の位置の部位のIDがGetRenderTarget()(すなわち、Direct3Dにおける1つの関数)を使用することにより取得される。
【0034】
この実施例では、表示された顔モデルにおけるカーソルの位置を検出する前に、方法は、顔モデルと生成されたマスクマップとを表示し、マスクマップは顔モデル上で貼り合わされるように設定されることを更に含んでもよい。
【0035】
顔モデルを取得するプロセスは以下の通りでもよい。
【0036】
顔ピッキングシステムは、実際に、以下のコアHLSLコードを使用することにより実現される、マップカラーに敏感なピッキング方法である。
result.color0=tex2D(FacialMaskSampler,param.uv0);
result.color0.gb=param.uv0.xy;
floatdepth=EncodeFloatToRGBA8(param.homoDepth.x/param.homoDepth.y);
result.color1=float4(1.0f, 1.0f, 0, depth);//magic code marking for facial model map
画面上に表示された顔モデルは、以下のコードを使用することにより取得される。
tex2D(FacialMaskSampler,param.uv0);
result.color1=float4(1.0f, 1.0f, 0, depth)
1つの検証コードが画面内の画素毎に設定され、画素が顔モデルに属するか否かは、検証コードを使用することにより検証される。検証コードに一致する画素((1.0,1.0,0)に等しい)のみが顔モデルに従って処理される。
【0037】
EncodingColorData(queryData,maskCode);
If(maskCode.r==0xff &&
maskCode.g==0xff &&
maskCode.b==0)
{
mDepthSelted=maskCode.a;
mIsPickingVaild=true;
}
画面上のカーソルの位置と、画面の現在の解像度とを検出することにより、カーソルの位置におけるユーザにより選択された画素が計算される。
【0038】
この出願において提供されるこの実施例では、端末内で表示された顔モデルにおいて検出されたカーソルの位置に従って、顔モデルの複数の顔の部位のうち操作対象の顔の部位が決定され、操作対象の顔の部位に対する選択操作が検出された後に、操作対象の顔の部位が、操作対象の顔の部位に対する取得された編集操作に応じて編集され、それにより、顔モデルにおいて編集された操作対象の顔の部位を表示する。すなわち、カーソルの位置を検出することにより、顔モデルの複数の顔の部位から選択された操作対象の顔の部位が決定され、それにより、操作対象の顔の部位についての編集プロセスを直接完了し、操作対象の顔の部位に対応するスライドブロックは、更なる制御リストの中でドラッグされる必要はない。したがって、ユーザは、顔モデルに対して顔のピッキング編集を直接実行することができ、それにより、顔モデルに対する編集操作を簡略化し、次に、顔モデルと制御リストの中のスライドブロックとの間を切り替えることにより引き起こされる比較的高い操作の複雑性の問題を克服する。
【0039】
この出願のこの実施例では、位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定することは、
位置における画素のカラー値を取得し、
カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定することを含む。
【0040】
この実施例では、画素のカラー値は、マスクマップにおいて、カーソルの位置に対応する画素のカラー値でもよいが、これに限定されない。マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応する。
【0041】
この実施例では、マスクマップにおいて、カーソルの位置に対応する画素のカラー値は、赤チャネルのカラー値及び青チャネルのカラー値を含んでもよいが、これらに限定されない。画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含んでもよいが、これらに限定されない。
【0042】
この実施例では、赤チャネルのカラー値により形成された顔は
図4に示されるものでもよく(画像は赤で表示されるべきである)、異なる描影は、赤の異なるレベルを示し、左側の綾織で満たされた領域の色は、波状の点で満たされた領域の色より明るく、波状の点で満たされた領域の色は、交叉した綾織で満たされた領域の色より明るい。青チャネルのカラー値により形成された顔は
図5に示されるものでもよい(画像は青で表示されるべきである)。
【0043】
この実施例では、マスクマップ内の各マスク領域と、対応する画素のカラー値との間のマッピング関係は予め設定されてもよいが、予め設定されることに限定されない。したがって、カーソルの位置の画素のカラー値を使用することにより、顔モデルにおいて、カラー値に対応するマスク領域が決定され、次に、複数の顔の部位のうち操作対象の顔の部位が決定される。
【0044】
例えば、表1を参照して、カーソルの位置における画素の取得されたRカラー値が200であるときに、対応するマスク領域は、予め設定されたマッピング関係を検索することにより決定されてもよく、次に、マスク領域に対応する操作対象の顔の部位は「鼻ばしら」である。
【0045】
この出願において提供されるこの実施例では、カーソルの位置における画素の取得されたカラー値を使用することにより、複数の顔の部位のうち、カラー値に対応する操作対象の顔の部位が決定される。すなわち、操作対象の顔の部位は、カーソルの位置における画素のカラー値を使用することにより決定され、それにより、顔モデルにおける顔の部位に対する編集操作を直接実行し、それにより、編集操作を簡略化する。
【0046】
この出願のこの実施例では、位置における画素のカラー値を取得することは、
マスクマップにおいて、位置に対応する画素のカラー値を取得し、マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応し、
画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含むことを含む。
【0047】
具体的には、以下の例を参照して説明が行われる。人間の解剖学に従って、1つの筋肉の部位の制御リストは、48個の骨格が影響を与えることができる筋肉の分類に従って取得され、1つの赤カラー値(Rカラー値を使用することにより示される)が部位毎に設定される。誤りを回避するために、値は少なくとも10単位だけ互いに異なる。さらに、顔上のこれらの部位の配分状況に従って、顔モデルに対応するマスクマップは、表2(いくつかの部位)に示すように、これらの部位に対応する画素のカラー値を使用することにより取得されてもよい。
【0048】
【表2】
すなわち、顔モデルに対応するマスクマップは、マッピング関係における画素のカラー値に従って描画されてもよく、マスクマップは顔モデル上で貼り合わされ、マスクマップに含まれる複数のマスク領域は、複数の顔の部位と1対1に対応する。
【0049】
この出願において提供されるこの実施例では、対応する画素のカラー値は、顔モデル上で貼り合わされたマスクマップを使用することにより取得され、それにより、カーソルの位置における画素のカラー値を正確に取得し、それにより、対応する操作対象の顔の部位がカラー値に従って取得される。
【0050】
この出願のこの実施例では、表示された顔モデルにおけるカーソルの位置を検出する前に、方法は、
顔モデルと生成されたマスクマップとを表示し、マスクマップは顔モデル上で貼り合わされるように設定されることを更に含む。
【0051】
具体的には、以下の例を参照して説明が行われる。表示された顔モデルにおけるカーソルの位置が検出される前に、
図6に示す顔モデル及び生成されたマスクマップが端末画面上に表示され、マスクマップは顔モデル上で貼り合わされるように設定される。
【0052】
この出願において提供されるこの実施例では、表示された顔モデルにおけるカーソルの位置が検出される前に、顔モデルと生成されたマスクマップとを結合することにより取得された画像が事前に表示され、それにより、カーソルの位置が検出されたときに、対応する位置は、マスクマップを使用することにより直接且つ迅速に取得されてもよく、次に、顔モデルの複数の顔の部位のうち操作対象の顔の部位が正確に取得され、それにより、編集効率を改善する。
【0053】
この出願のこの実施例では、操作対象の顔の部位に対する選択操作が検出されたときに、方法は、
顔モデルにおいて操作対象の顔の部位をハイライトすることを更に含む。
【0054】
この実施例では、操作対象の顔の部位に対する選択操作が検出されたときに、方法は、操作対象の顔の部位を特別に表示することを含んでもよいが、これに限定されない。例えば、顔の部位はハイライトされるか、或いは描影が顔の部位に対して表示される。
【0055】
この出願において提供されるこの実施例では、操作対象の顔の部位がハイライトされ、それにより、ユーザは、顔モデルにおいて顔の部位に対して実行される編集操作と編集された顔の部位の変更効果とを直感的に見ることができ、見るものが得られるものであることを実現できる。したがって、編集操作は、ユーザ要求をより良く満たすことができる。
【0056】
この出願のこの実施例では、操作対象の顔の部位に対する取得された編集操作に応じて、操作対象の顔の部位を編集することは、以下のもの、すなわち、
操作対象の顔の部位を移動すること、
操作対象の顔の部位を回転すること、
操作対象の顔の部位を拡大すること、及び
操作対象の顔の部位を縮小すること
のうち少なくとも1つを含む。
【0057】
この実施例では、編集を実現する操作方式は、以下のもの、すなわち、クリック及びドラッグのうち少なくとも1つでもよいが、これらに限定されない。すなわち、以下の編集操作、すなわち、移動、回転、拡大及び縮小のうち少なくとも1つは、異なる操作方式の組み合わせを使用することにより、操作対象の顔の部位に対して実行されてもよい。
【0058】
例えば、
図3に示すように、操作対象の部位がクリックを用いて選択され、回転、縮小及び移動のような編集操作が操作対象の部位に対して実行されたときに、
図3の左側から
図3の右側に示す編集内容のプロセスが実現されてもよい。
【0059】
この出願において提供されるこの実施例では、異なる編集操作が顔モデルにおける操作対象の顔の部位に対して直接実行され、それにより、編集操作を簡略化し、編集効率を改善し、従来技術における比較的高い操作の複雑性の問題を克服する。
【0060】
前述の方法の実施例は、簡単な説明の目的で一連の動作の組み合わせとして表現されているが、当業者は、この出願に従っていくつかのステップが他の順序で或いは同時に実行されてもよいため、この出願が記載の動作順序に限定されないことを理解するべきである。さらに、当業者は、この明細書に記載の全ての実施例が好ましい実施例であり、関係する動作及びモジュールが必ずしもこの開示において必要であるとは限らないことも理解するべきである。
【0061】
前述の実施例の説明を通じて、当業者は、前述の実施例による方法がハードウェアのみにより、或いはソフトウェア及び必要なユニバーサルハードウェアプラットフォームにより実現されてもよいことを理解し得る。しかし、ほとんどの場合、ソフトウェア及び必要なユニバーサルハードウェアプラットフォームを使用することが好ましい。このような理解に基づいて、この出願の技術的解決策は本質的に、或いは従来技術に寄与する部分は、ソフトウェアプロダクトの形式で実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体(ROM/RAM、磁気ディスク又は光ディスク等)に記憶され、端末デバイス(移動電話、コンピュータ、サーバ、ネットワークデバイス等でもよい)に対してこの出願の実施例に記載の方法を実行するように命令するためのいくつかの命令を含む。
【0062】
この出願の実施例に従って、顔モデル編集方法を実現するように構成された顔モデル編集装置が更に提供される。
図7に示すように、方法は、
表示された顔モデルにおけるカーソルの位置を検出するように構成された第1の検出ユニット702であり、表示された顔モデルは複数の顔の部位を含む、第1の検出ユニット702と、
位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定するように構成された決定ユニット704と、
操作対象の顔の部位に対する選択操作を検出するように構成された第2の検出ユニット706と、
操作対象の顔の部位に対する取得された編集操作に応じて、操作対象の顔の部位を編集するように構成された編集ユニット708と、
顔モデルにおいて編集された操作対象の顔の部位を表示するように構成された第1の表示ユニット710と
を含む。
【0063】
この実施例では、顔モデル編集装置は、端末アプリケーション内のキャラクタ役生成プロセスにおけるキャラクタ役の対応する顔モデルを編集することに適用されてもよいが、これに限定されない。例えば、ゲームアプリケーションを例として使用すると、ゲームアプリケーション内のキャラクタ役がプレイヤのために生成されるときに、操作対象の顔の部位は、表示された顔モデルの複数の顔の部位におけるカーソルの位置を検出することにより決定されてもよく、操作対象の顔の部位に対する選択操作が検出された後に、対応する編集操作が、取得された編集操作に応じて実行される。
【0064】
図3に示すように、顔モデルにおける眉毛の部位(
図3の左側に示す点線フレーム等)は、カーソルの位置を使用することにより選択される。その部位に対する編集操作(回転操作等)が取得された後に、眉毛の部位が編集されてもよく、編集された眉毛の部位(
図3の右側に示す点線フレーム等)が顔モデルにおいて表示される。したがって、キャラクタ役の顔モデルに対する編集操作が簡略化され、編集されたキャラクタ役は、プレイヤのために迅速且つ正確に表示される。この例示は単なる例であり、この実施例において説明する顔モデル編集装置は、如何なる種類の端末アプリケーションにも適用可能である。
【0065】
この実施例では、端末内で表示された顔モデルにおいて検出されたカーソルの位置に従って、顔モデルの複数の顔の部位のうち操作対象の顔の部位が決定され、操作対象の顔の部位に対する選択操作が検出された後に、操作対象の顔の部位が、操作対象の顔の部位に対する取得された編集操作に応じて編集され、それにより、顔モデルにおいて編集された操作対象の顔の部位を表示する。すなわち、カーソルの位置を検出することにより、顔モデルの複数の顔の部位から選択された操作対象の顔の部位が決定され、それにより、操作対象の顔の部位についての編集プロセスを直接完了し、操作対象の顔の部位に対応するスライドブロックは、更なる制御リストの中でドラッグされる必要はない。したがって、ユーザは、顔モデルに対して顔のピッキング編集を直接実行することができ、それにより、顔モデルに対する編集操作を簡略化し、次に、顔モデルと制御リストの中のスライドブロックとの間を切り替えることにより引き起こされる比較的高い操作の複雑性の問題を克服する。さらに、編集操作は、顔モデルにおける顔の部位に対して直接実行され、それにより、ユーザは、端末内で表示された編集操作と編集された操作対象の顔の部位の変更効果とを直感的に見ることができ、見るものが得られるものであることを実現できる。したがって、編集操作は、ユーザ要求をより良く満たすことができ、ユーザ体験を改善できる。
【0066】
この実施例では、カーソルの位置は、画面上に表示されたマウスの対応する位置を示すために使用されてもよいが、これに限定されない。
【0067】
この実施例では、操作対象の顔の部位に対する選択操作が検出されたときに、方法は、操作対象の顔の部位を特別に表示することを含んでもよいが、これに限定されない。例えば、顔の部位はハイライトされるか、或いは描影が顔の部位に対して表示される。
【0068】
この実施例では、編集は、以下のもの、すなわち、操作対象の顔の部位を移動すること、操作対象の顔の部位を回転すること、操作対象の顔の部位を拡大すること、及び操作対象の顔の部位を縮小することのうち少なくとも1つを含んでもよい。
【0069】
この実施例では、カーソルの位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定することは、
位置における画素のカラー値を取得し、
カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定することを含む。
【0070】
この実施例では、位置における画素のカラー値を取得することは、マスクマップにおいて、位置に対応する画素のカラー値を取得し、マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応し、画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含んでもよいことを含んでもよいが、これに限定されない。
【0071】
この実施例では、顔モデル上で貼り合わされたマスクマップ上の各マスク領域は、顔モデル上の1つの顔の部位に対応する。すなわち、顔モデル上で貼り合わされたマスクマップ上のマスク領域がカーソルを使用することにより選択されたときに、顔モデルにおける対応する顔の部位が選択されてもよく、それにより、顔モデル上の顔の部位を直接編集し、編集操作を簡略化する。
【0072】
さらに、この実施例では、マスクマップ内の各マスク領域と、対応する画素のカラー値との間のマッピング関係は予め設定されてもよいが、予め設定されることに限定されない。例えば、表3に示す顔モデルにおける鼻は、6個の部位を具体的に含み、1つの赤カラー値(Rカラー値を使用することにより示される)が部位毎に設定され、誤りを回避するために、例えば、値は少なくとも10単位だけ互いに異なってもよいが、異なることに限定されない。
【0073】
【表3】
すなわち、カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定することは、マスクマップにおいて、位置に対応する画素のRGBカラー値が取得された後に、画素のカラー値に対応するマスク領域がマッピング関係を問い合わせることにより取得されてもよく、次に、マスク領域に対応する操作対象の顔の部位が取得されることを含んでもよいが、これに限定されない。
【0074】
この実施例では、表示された顔モデルにおけるカーソルの位置は、画素ピッキングのために顔ピッキング技術を使用することにより検出されてもよいが、画素ピッキングのために顔ピッキング技術を使用して検出されることに限定されない。画素ピッキングは、モデルオブジェクトが1単位として使用されるピッキング技術であり、ディスプレイ画面上でカーソルにより選択又はクリックされた仮想オブジェクトが検出され、カーソルが仮想オブジェクトと相互作用する方法である。仮想オブジェクトは、対応する顔モデルにおける顔の部位でもよいが、これに限定されない。
【0075】
この実施例では、1つの識別子IDが仮想オブジェクト(すなわち、顔の部位)毎に設定され、次に、全てのピッキング可能な仮想オブジェクトが1つのrender targetに描画され、IDは定数レジスタにより取り入れられる。最後に、カーソルの現在の位置の部位のIDがGetRenderTarget()(すなわち、Direct3Dにおける1つの関数)を使用することにより取得される。
【0076】
この実施例では、表示された顔モデルにおけるカーソルの位置を検出する前に、方法は、顔モデルと生成されたマスクマップとを表示し、マスクマップは顔モデル上で貼り合わされるように設定されることを更に含んでもよい。
【0077】
顔モデルを取得するプロセスは以下の通りでもよい。
【0078】
顔ピッキングシステムは、実際に、以下のコアHLSLコードを使用することにより実現される、マップカラーに敏感なピッキング方法である。
result.color0=tex2D(FacialMaskSampler,param.uv0);
result.color0.gb=param.uv0.xy;
floatdepth=EncodeFloatToRGBA8(param.homoDepth.x/param.homoDepth.y);
result.color1=float4(1.0f, 1.0f, 0, depth);//magic code marking for facial model map
画面上に表示された顔モデルは、以下のコードを使用することにより取得される。
tex2D(FacialMaskSampler,param.uv0);
result.color1=float4(1.0f, 1.0f, 0, depth)
1つの検証コードが画面内の画素毎に設定され、画素が顔モデルに属するか否かは、検証コードを使用することにより検証される。検証コードに一致する画素((1.0,1.0,0)に等しい)のみが顔モデルに従って処理される。
【0079】
EncodingColorData(queryData,maskCode);
If(maskCode.r==0xff &&
maskCode.g==0xff &&
maskCode.b==0)
{
mDepthSelted=maskCode.a;
mIsPickingVaild=true;
}
画面上のカーソルの位置と、画面の現在の解像度とを検出することにより、カーソルの位置におけるユーザにより選択された画素が計算される。
【0080】
この出願において提供されるこの実施例では、端末内で表示された顔モデルにおいて検出されたカーソルの位置に従って、顔モデルの複数の顔の部位のうち操作対象の顔の部位が決定され、操作対象の顔の部位に対する選択操作が検出された後に、操作対象の顔の部位が、操作対象の顔の部位に対する取得された編集操作に応じて編集され、それにより、顔モデルにおいて編集された操作対象の顔の部位を表示する。すなわち、カーソルの位置を検出することにより、顔モデルの複数の顔の部位から選択された操作対象の顔の部位が決定され、それにより、操作対象の顔の部位についての編集プロセスを直接完了し、操作対象の顔の部位に対応するスライドブロックは、更なる制御リストの中でドラッグされる必要はない。したがって、ユーザは、顔モデルに対して顔のピッキング編集を直接実行することができ、それにより、顔モデルに対する編集操作を簡略化し、次に、顔モデルと制御リストの中のスライドブロックとの間を切り替えることにより引き起こされる比較的高い操作の複雑性の問題を克服する。
【0081】
この出願のこの実施例では、決定ユニットは、
位置における画素のカラー値を取得するように構成された取得モジュールと、
カラー値に対応する、複数の顔の部位のうち操作対象の顔の部位を決定するように構成された決定モジュールと
を含む。
【0082】
この実施例では、画素のカラー値は、マスクマップにおいて、カーソルの位置に対応する画素のカラー値でもよいが、これに限定されない。マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応する。
【0083】
この実施例では、マスクマップにおいて、カーソルの位置に対応する画素のカラー値は、赤チャネルのカラー値及び青チャネルのカラー値を含んでもよいが、これらに限定されない。画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含んでもよいが、これらに限定されない。
【0084】
この実施例では、赤チャネルのカラー値により形成された顔は
図4に示されるものでもよく(画像は赤で表示されるべきである)、異なる描影は、赤の異なるレベルを示し、左側の綾織で満たされた領域の色は、波状の点で満たされた領域の色より明るく、波状の点で満たされた領域の色は、交叉した綾織で満たされた領域の色より明るい。青チャネルのカラー値により形成された顔は
図5に示されるものでもよい(画像は青で表示されるべきである)。
【0085】
この実施例では、マスクマップ内の各マスク領域と、対応する画素のカラー値との間のマッピング関係は予め設定されてもよいが、予め設定されることに限定されない。したがって、カーソルの位置の画素のカラー値を使用することにより、顔モデルにおいて、カラー値に対応するマスク領域が決定され、次に、複数の顔の部位のうち操作対象の顔の部位が決定される。
【0086】
例えば、表3を参照して、カーソルの位置における画素の取得されたRカラー値が200であるときに、対応するマスク領域は、予め設定されたマッピング関係を検索することにより決定されてもよく、次に、マスク領域に対応する操作対象の顔の部位は「鼻ばしら」である。
【0087】
この出願において提供されるこの実施例では、カーソルの位置における画素の取得されたカラー値を使用することにより、複数の顔の部位のうち、カラー値に対応する操作対象の顔の部位が決定される。すなわち、操作対象の顔の部位は、カーソルの位置における画素のカラー値を使用することにより決定され、それにより、顔モデルにおける顔の部位に対する編集操作を直接実行し、それにより、編集操作を簡略化する。
【0088】
この出願のこの実施例では、取得モジュールは、
マスクマップにおいて、位置に対応する画素のカラー値を取得するように構成された取得サブモジュールであり、マスクマップは顔モデル上で貼り合わされ、マスクマップは複数の顔の部位と1対1に対応する複数のマスク領域を含み、各マスク領域は1つの顔の部位に対応する、取得サブモジュールを含み、
画素のカラー値は以下のもの、すなわち、画素の赤カラー値、画素の緑カラー値及び画素の青カラー値のうち1つを含む。
【0089】
具体的には、以下の例を参照して説明が行われる。人間の解剖学に従って、1つの筋肉の部位の制御リストは、48個の骨格が影響を与えることができる筋肉の分類に従って取得され、1つの赤カラー値(Rカラー値を使用することにより示される)が部位毎に設定される。誤りを回避するために、値は少なくとも10単位だけ互いに異なる。さらに、顔上のこれらの部位の配分状況に従って、顔モデルに対応するマスクマップは、表4(いくつかの部位)に示すように、これらの部位に対応する画素のカラー値を使用することにより取得されてもよい。
【0090】
【表4】
すなわち、顔モデルに対応するマスクマップは、マッピング関係における画素のカラー値に従って描画されてもよく、マスクマップは顔モデル上で貼り合わされ、マスクマップに含まれる複数のマスク領域は、複数の顔の部位と1対1に対応する。
【0091】
この出願において提供されるこの実施例では、対応する画素のカラー値は、顔モデル上で貼り合わされたマスクマップを使用することにより取得され、それにより、カーソルの位置における画素のカラー値を正確に取得し、それにより、対応する操作対象の顔の部位がカラー値に従って取得される。
【0092】
この出願のこの実施例では、装置は、
表示された顔モデルにおけるカーソルの位置が検出される前に、顔モデルと生成されたマスクマップとを表示するように構成された第2の表示ユニットであり、マスクマップは顔モデル上で貼り合わされるように設定される、第2の表示ユニットを更に含む。
【0093】
具体的には、以下の例を参照して説明が行われる。表示された顔モデルにおけるカーソルの位置が検出される前に、
図6に示す顔モデル及び生成されたマスクマップが端末画面上に表示され、マスクマップは顔モデル上で貼り合わされるように設定される。
【0094】
この出願において提供されるこの実施例では、表示された顔モデルにおけるカーソルの位置が検出される前に、顔モデルと生成されたマスクマップとを結合することにより取得された画像が事前に表示され、それにより、カーソルの位置が検出されたときに、対応する位置は、マスクマップを使用することにより直接且つ迅速に取得されてもよく、次に、顔モデルの複数の顔の部位のうち操作対象の顔の部位が正確に取得され、それにより、編集効率を改善する。
【0095】
この出願のこの実施例では、装置は、
操作対象の顔の部位に対する選択操作が検出されたときに、顔モデルにおいて操作対象の顔の部位をハイライトするように構成された第3の表示ユニットを更に含む。
【0096】
この実施例では、操作対象の顔の部位に対する選択操作が検出されたときに、方法は、操作対象の顔の部位を特別に表示することを含んでもよいが、これに限定されない。例えば、顔の部位はハイライトされるか、或いは描影が顔の部位に対して表示される。
【0097】
この出願において提供されるこの実施例では、操作対象の顔の部位がハイライトされ、それにより、ユーザは、顔モデルにおいて顔の部位に対して実行される編集操作と編集された顔の部位の変更効果とを直感的に見ることができ、見るものが得られるものであることを実現できる。したがって、編集操作は、ユーザ要求をより良く満たすことができ、ユーザ体験を改善できる。
【0098】
この出願のこの実施例では、編集ユニットは、以下のもの、すなわち、
操作対象の顔の部位を移動するように構成された第1の編集モジュール、
操作対象の顔の部位を回転するように構成された第2の編集モジュール、
操作対象の顔の部位を拡大するように構成された第1の編集モジュール、及び
操作対象の顔の部位を縮小するように構成された第1の編集モジュール
のうち少なくとも1つを含む。
【0099】
この実施例では、編集を実現する操作方式は、以下のもの、すなわち、クリック及びドラッグのうち少なくとも1つでもよいが、これらに限定されない。すなわち、以下の編集操作、すなわち、移動、回転、拡大及び縮小のうち少なくとも1つは、異なる操作方式の組み合わせを使用することにより、操作対象の顔の部位に対して実行されてもよい。
【0100】
例えば、
図3に示すように、操作対象の部位がクリックを用いて選択され、回転、縮小及び移動のような編集操作が操作対象の部位に対して実行されたときに、
図3の左側から
図3の右側に示す編集内容のプロセスが実現されてもよい。
【0101】
この出願において提供されるこの実施例では、異なる編集操作が顔モデルにおける操作対象の顔の部位に対して直接実行され、それにより、編集操作を簡略化し、編集効率を改善し、従来技術における比較的高い操作の複雑性の問題を克服する。
【0102】
この出願の実施例に従って、顔モデル編集方法を実現するように構成された顔モデル編集端末が更に提供される。
図8に示すように、端末は、
顔モデルを取得するように構成された通信インタフェース802であり、顔モデルは複数の顔の部位を含む、通信インタフェース802と、
通信インタフェース802に接続され、顔モデルを記憶するように構成されたメモリ804と、
通信インタフェース802及びメモリ804に接続され、表示された顔モデルにおけるカーソルの位置を検出するように構成され、位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定するように更に構成され、操作対象の顔の部位に対する選択操作を検出するように更に構成され、操作対象の顔の部位に対する取得された編集操作に応じて、操作対象の顔の部位を編集するように更に構成され、顔モデルにおいて編集された操作対象の顔の部位を表示するように更に構成されたプロセッサ806と
を含む。
【0103】
この出願のこの実施例において、メモリ804は、第1の検出命令と、決定命令と、第2の検出命令と、編集命令と、第1の表示命令とを含む機械読み取り可能命令を記憶するように構成された不揮発性コンピュータ読み取り可能記憶媒体でもよい。この出願の他の実施例では、機械読み取り可能命令は、第2の表示命令と、第3の表示命令とを更に含む。
【0104】
プロセッサ806は、メモリ804に記憶された機械読み取り可能命令を読み取るように構成され、それにより、実施例における顔モデル編集方法のステップ及び顔モデル編集装置内のユニットの機能を実現する。
【0105】
この実施例における具体的な例については、顔モデル編集方法及び装置の実施例に記載の例を参照する。
【0106】
この出願のこの実施例は、顔モデル編集方法を実現するために使用される適用シナリオを提供し、実施例の適用環境は、顔モデル編集方法及び装置の実施例のものと同じである。
【0107】
この実施例では、顔モデル編集方法は、ゲームキャラクタの顔のメイクアッププロセス、又はゲームキャラクタの顔の化粧プロセスに適用されてもよいが、これらに適用されることに限定されない。例えば、ゲームキャラクタの顔をより繊細且つ美的にするために、ゲームキャラクタの顔は、実施例において提供される顔モデル編集方法を使用することにより編集されてもよく、それにより、クライアント内で表示されるゲームキャラクタの顔の繊細さを改善する。
【0108】
この出願のこの実施例では、顔モデル編集方法がゲームキャラクタの顔のメイクアッププロセスに適用される例が使用される。例えば、ゲームキャラクタの有効部分はUV空間にトリミングされ、編集方法は、トリミング後に取得された顔の領域に適用され、それにより、異なる顔モデルを構築し、例えば、トリミング後に取得された目の部位のための目のメイクアップの複数のスタイルを設計する。このように、
図9に示すように、ゲームキャラクタの顔型が構築されたときに、異なるメイクアップの見た目が、置換を実行するために、顔に基づくマップ(
図9の右側に示す)上の局所部位の領域について選択されてもよい。例えば、提供された置換リソース、すなわち、目の部分の部位(
図9に示す眉毛)のメイクアップの見た目の切り取られた画像(
図9の中央に示す)が選択される。実線のフレームに示すメイクアップの見た目が選択された場合、
図9の左側に示すように、ゲームキャラクタの最終的な顔型が取得されてもよい。この出願の実施例において提供される方法を使用することにより、ゲームキャラクタのメイクアップの見た目がより多様になってもよく、それにより、ゲームキャラクタの役の形式を豊富にする。
【0109】
局所部位の領域の切り取られた画像を取得する具体的なプロセスは以下の通りでもよい。
【0110】
DiffuseMap、SpecularMap及びNormalMap内の有効部分は、2のN乗(16*16、32*32、32*64、64*128)のサイズに従ってトリミングされ、座標位置が記録される。
レジストリ構成:
mMakeupID=”171”(メイクアップの見た目の美術リソースID)
<mTexSizeBias v="512"/> <mTexSizeBias v=”128”/> (トリミングのマップサイズ)
<mTexSizeBias v=”512” <mTexSizeBias v=”436”(元のサイズのマップ内のマップのインデックス位置)
レジストリ構成は、具体的には以下の通りでもよい。
<mFacialMakeupParts mMakeupID=”171” mMakeupID=”EMP_Eyebrow” mSexualType=”1” mDiffuseFilePath=”F_Eyebrow_0001_D.dds” mSpecFilePath=”F_Eyebrow_0001_S.dds” mNormalFilePath=”F_Eyebrow_0001_N.dds” mIconImage=”F_Eyebrow_0001”>
<mTexSizeBias IsStaticArray=”1” ArrayCount=”4” [XlsProp]=”0”>
<mTexSizeBias v =”512”/>
<mTexSizeBias v =”128”/>
<mTexSizeBias v =”512”/>
<mTexSizeBias v =”436”/>
</mTexSizeBias>
</mFacialMakeupParts>
例えば、
図10に示すように、トリミングされたオブジェクトが目の部分の部位(眉毛等)として選択された後に、DiffuseMap、SpecularMap及びNormalMap内の対応するコンテンツがトリミングされ、元のサイズが1024*1024であるコンテンツは、トリミングサイズが512*128であるコンテンツにトリミングされる。
【0111】
さらに、局所部位の領域の異なる切り取られた画像がトリミングを通じて取得された後にゲームキャラクタを構築するプロセスにおいて、必要な切り取られた画像は、ゲームキャラクタの顔を構築するためにクリックを用いて直接選択されてもよいが、これに限定されない。
図11に示すように、「目のメイクアップ」、「唇のメイクアップ」又は「皮膚」のようなコンテンツのそれぞれ切り取られた画像が選択されて置換され、それにより、必要な顔型を取得する。
【0112】
従来技術では、顔は、通常では退屈で複雑なスライドバー方式で編集される。しかし、この実施例において提供される顔編集方法を使用することにより、ゲームアプリケーション内の異なるユーザの要求が満たされることができるだけでなく、アプリケーション実行プロセスにおいて、ユーザがスムーズな実行のケースにおいて多様な顔の編集を実現することも確保でき、それにより、システム消費をかなり低減し、役の形式を豊富にする。
【0113】
この出願の実施例は、記憶媒体を更に提供し、記憶媒体は不揮発性記憶媒体である。この実施例では、記憶媒体は、以下のステップ、すなわち、
表示された顔モデルにおけるカーソルの位置を検出するステップであり、表示された顔モデルは複数の顔の部位を含む、ステップと、
位置に従って、複数の顔の部位のうち操作対象の顔の部位を決定するステップと、
操作対象の顔の部位に対する選択操作を検出するステップと、
操作対象の顔の部位に対する取得された編集操作に応じて、操作対象の顔の部位を編集するステップと、
顔モデルにおいて編集された操作対象の顔の部位を表示するステップと
を実行するために使用されるプログラムコードを記憶するように構成される。
【0114】
この実施例において、前述の記憶媒体は、USBフラッシュドライブ、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、取り外し可能ハードディスク、磁気ディスク又は光ディスクのようなプログラムコードを記憶できるいずれかの媒体を含んでもよいが、これらに限定されない。
【0115】
この実施例における具体的な例について、顔モデル編集方法及び装置の実施例を参照する。
【0116】
この出願の前述の実施例のシーケンス番号は、単に説明目的のためのものであり、実施例の好ましさを示すものではない。
【0117】
前述の実施例における統合されたユニットがソフトウェア機能モジュールの形式で実現されて独立したプロダクトとして販売又は使用されるときに、統合されたユニットは、前述のコンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、この出願の技術的解決策は本質的に、或いは従来技術に寄与する部分、又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体に記憶され、1つ以上のコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイス等でもよい)に対してこの出願の実施例に記載の方法のステップの全部又は一部を実行するように命令するためのいくつかの命令を含む。
【0118】
この出願の前述の実施例において、実施例の説明は異なる重点を有し、1つの実施例において詳細に記載されていない部分については、他の実施例の関係する説明に参照が行われることができる。
【0119】
本出願において提供されるいくつかの実施例において、開示のクライアントは他の方式で実現されてもよいことが理解されるべきである。記載の装置の実施例は、単なる例である。ユニットの分割は単に論理的な機能分割であり、実際の実現方式では他の分割でもよい。例えば、複数のユニット又はコンポーネントは組み合わされてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの機能が省略されてもよく、或いは実行されなくてもよい。さらに、表示又は説明した相互結合又は直接結合若しくは通信接続は、いくつかのインタフェース通じて実現されてもよい。ユニット又はモジュールの間の間接結合又は通信接続は、電子的又は他の形式で実現されてもよい。
【0120】
別々の部分として記載したユニットは、物理的に別々でもよく、或いは別々でなくてもよく、ユニットとして表示された部分は、物理ユニットでもよく、或いは物理ユニットでなくてもよく、1つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、実施例の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
【0121】
さらに、この出願の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に別々に存在してもよく、或いは2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
【0122】
前述の説明は、この出願の単に好ましい実施例に過ぎず、当業者は、この出願の要旨を逸脱することなく、様々な改善及び改良を行い得る点に留意すべきである。全てのこのような変更及び改良も、この出願によりカバーされることを意図するべきである。