人物の変装と顔をつまむ

11455 ワード

文書ディレクトリ
  • 1着換え
  • 交換実現
  • CharacterCustomization
  • UMA
  • 美術への要望
  • 2顔をつまむ
  • blendShape(Morph Target)実現原理
  • UMA捏顔系(DNA)
  • [天涯明月刀捏顔システム設計原理](http://games.sina.com.cn/o/z/wuxia/2015-10-15/fxivsch3599438-p5.shtml)
  • 融合変形
  • 骨格駆動
  • まとめ
  • [『Honey Select』捏人剖析](https://zhuanlan.zhihu.com/p/28471808)
  • まとめ
  • [顔をつまんでまとめる](https://www.zhihu.com/question/266839130/answer/314311734)

  • 1交換
    現在の交換案は主に以下の通りである.
  • マップやシェーダーなどの材質変更
  • 掛点、キャラクターに掛点を作って武器リボンなどを掛ける
  • スキンの変更(UnityではSkin Mesh Renderer)は、すべてのスキンが同じボーンセットに基づいて開発されている限り、交換がサポートされる.交換時にSkinMeshRendererがbone情報を再コピーするとスキンのバインドが完了します.MeshをマージすることでDrawcallを減らします.
  • umaシステム.DNAシステム(ボーンのスケーリング係数と長さを設定します).

  • スワップ実装
    SkinMeshRendererを参照してモデルを変更するTransformが無効なのは、モデル上の頂点位置がボーン位置と重みによってリアルタイムで計算されているためです.したがって、UnityにskinMeshRendererコンポーネントがあるGameObjectを移動、回転するなどの操作を行い、モデルの最終レンダリングには影響しません.参照のコアコードこのコードはmeshに対して最適化を行っていないで、skinmeshrenderに対して合併して最適化することができて、recallを減らして、最適化はCombineInstanceを採用してmeshに対して合併します
    CharacterCustomization
    コードは性別に基づいてメインスケルトンをロードし,キャラクタ装い情報に基づいて各部品リソースのすべてのスキン情報を読み出して新しいMeshを生成し,Meshとサブオブジェクトのすべてのbones,materialsを親オブジェクトのSkinnedMeshRendererに与える.公式のスワップパーティクルは、コードを変更しないとunity 5で実行できません.スワップの原理は、スキンを変更し、meshをマージすることです.スワップ時にメモリが漏れています.なぜなら、メモリから消去されていないため、絶えず交換するとメモリに蓄積されます.
    UMA
    UMAは、Wardrobe(換装)、Color(皮膚色)、DNA(骨格(T-pose)マトリクスを設定)換装を変更する核心原理に分けられ、スキン+マージmeshを変更する.SkinnedMeshCombiner.cs->CombineMeshesは、ボーンと頂点MergeSortedTransforms(hashのサイズでボーンをソート)を結合し、すべての頂点を1つのmeshに結合します.
    美術に対する要求
    作成したすべての服は、同じ完全なボーンに基づいており、エクスポート時に服と服が影響を受けるボーンをエクスポートし、アニメーションは必要ありません.
    2顔をつまむ
    二つの方法があります.1つはBlendshape(融合変形)で、通常は顔アニメーションに用いられ、頂点を直接修正する.2つ目はボーン駆動で、ボーンマトリクスを修正することでSkinMeshに影響を与える.2つの方法の最終的な目的はすべて頂点を修正することである.
    blendShape(Morph Target)実装原理
    How the software does this blending, as explained by some of the other answers written here, is achieved by the delta or the differences in shape between the target expressions and the base shape. Maya keeps track of how much each vertex is displaced in relation to the original Base shape. Thus when the animator blends or morphs the expression in, Maya translates those vertices towards the final positions as described by that particular BlendShape.
    Since Maya compares the base shape and the BlendShape objects vertex for vertex, we should always maintain consistency in vertex count, vertex order or topology across all BlendShapes.
    UMA捏顔システム(DNA)
    UMAのスケルトンの男女キャラクタ階層は
    人物の骨格は全部で158個の骨格です
    UMADynamicCharacterAvatar
    -Root
    --Global
    ---Position
    ----Hips
    -----LowerBack
    ------LowerBackAdjust
    -------LowerBackBelly
    ------Spine
    -------Spine1
    --------Neck
    ---------Head
    ----------RightEar
    -----------RightEarAdjust
    ----------RightEye
    -----------RightLowerLid
    ------------RightLowerLidAdjust
    -----------RightEyeAdjust
    -----------RightUpperLid
    ------------RightUpperLidAdjust
    -----------RightEyeGlobe
    ----------RightLipsSuperiorMiddle
    -----------RightLipsSuperiorMiddleAdjust
    ----------LeftLipsSuperiorMiddle
    -----------LeftLipsSuperiorMiddleAdjust
    ----------RightEyebrowLow
    -----------RightEyebrowLowAdjust
    ----------NoseBase
    -----------NoseBaseAdjust
    ----------RightLowCheek
    -----------RightLowCheekAdjust
    ----------LipsSuperior
    -----------LipsSuperiorAdjust
    ----------RightNose
    -----------RightNoseAdjust
    ----------HeadAdjust
    ----------LeftEyebrowMiddle
    -----------LeftEyebrowMiddleAdjust
    ----------LeftEar
    -----------LeftEarAdjust
    ----------LeftEye
    -----------LeftEyeAdjust
    -----------LeftEyeGlobe
    -----------LeftUpperLid
    ------------LeftUpperLidAdjust
    -----------LeftLowerLid
    ------------LeftLowerLidAdjust
    ----------LeftNose
    -----------LeftNoseAdjust
    ----------NoseTop
    -----------NoseTopAdjust
    ----------RightCheek
    -----------RightCheekAdjust
    ----------NoseMiddle
    -----------NoseMiddleAdjust
    ----------UpperLips
    -----------UpperLipsAdjust
    ----------LeftEyebrowUp
    -----------LeftEyebrowUpAdjust
    ----------RightEyebrowUp
    -----------RightEyebrowUpAdjust
    ----------LeftCheek
    -----------LeftCheekAdjust
    ----------Mandible
    -----------LeftLipsInferior
    ------------LeftLipsInferiorAdjust
    -----------RightLowMaxilar
    ------------RightLowMaxilarAdjust
    -----------RightLips
    ------------RightLipsAdjust
    -----------LipsInferior
    ------------LipsInferiorAdjust
    -----------MandibleAdjust
    -----------RightLipsInferior
    ------------RightLipsInferiorAdjust
    -----------Tongue01
    ------------Tongue02
    -----------LeftLips
    ------------LeftLipsAdjust
    -----------LeftLowMaxilar
    ------------LeftLowMaxilarAdjust
    ----------RightEyebrowMiddle
    -----------RightEyebrowMiddleAdjust
    ----------LeftLowCheek
    -----------LeftLowCheekAdjust
    ----------LeftEyebrowLow
    -----------LeftEyebrowLowAdjust
    ---------NeckAdjust
    --------RightOuterBreast
    ---------RightInnerBreast
    --------RightShoulder
    ---------RightTrapezius
    ---------RightArm
    ----------RightArmAdjust
    ----------RightForeArm
    -----------RightForeArmAdjust
    -----------RightForeArmTwist
    ------------RightForeArmTwistAdjust
    -----------RightHand
    ------------RightHandFinger03_01
    -------------RightHandFinger03_02
    --------------RightHandFinger03_03
    ------------RightHandFinger05_01
    -------------RightHandFinger05_02
    --------------RightHandFinger05_03
    ------------RightHandFinger04_01
    -------------RightHandFinger04_02
    --------------RightHandFinger04_03
    ------------RightHandFinger02_01
    -------------RightHandFinger02_02
    --------------RightHandFinger02_03
    ------------RightHandFinger01_01
    -------------RightHandFinger01_02
    --------------RightHandFinger01_03
    ---------RightShoulderAdjust
    --------LeftOuterBreast
    ---------LeftInnerBreast
    --------Spine1Adjust
    --------LeftShoulder
    ---------LeftShoulderAdjust
    ---------LeftTrapezius
    ---------LeftArm
    ----------LeftForeArm
    -----------LeftHand
    ------------LeftHandFinger04_01
    -------------LeftHandFinger04_02
    --------------LeftHandFinger04_03
    ------------LeftHandFinger01_01
    -------------LeftHandFinger01_02
    --------------LeftHandFinger01_03
    ------------LeftHandFinger02_01
    -------------LeftHandFinger02_02
    --------------LeftHandFinger02_03
    ------------LeftHandFinger03_01
    -------------LeftHandFinger03_02
    --------------LeftHandFinger03_03
    ------------LeftHandFinger05_01
    -------------LeftHandFinger05_02
    --------------LeftHandFinger05_03
    -----------LeftForeArmTwist
    ------------LeftForeArmTwistAdjust
    -----------LeftForeArmAdjust
    ----------LeftArmAdjust
    -------SpineAdjust
    -----LeftUpLeg
    ------LeftLeg
    -------LeftLegAdjust
    -------LeftFoot
    --------LeftToeBase
    ------LeftUpLegAdjust
    ------LeftGluteus
    -----RightUpLeg
    ------RightGluteus
    ------RightLeg
    -------RightFoot
    --------RightToeBase
    -------RightLegAdjust
    ------RightUpLegAdjust
    

    DNAを修正するために使用されるボーンは全部で74個あり、Adjustボーンの大部分は単位行列であり、skinMeshの大部分はこれらの修正可能なボーンにバインドされており、***adjustボーンという名前のアニメーションデータはなく、UMA 2アニメーションはavatar人形ボーンシステムを用いてリダイレクトされている.調整に使用するボーンは次のとおりです.
    HeadAdjust
    NeckAdjust
    LeftOuterBreast
    RightOuterBreast
    LeftEye
    RightEye
    LeftEyeAdjust
    RightEyeAdjust
    Spine1Adjust
    SpineAdjust
    LowerBackBelly
    LowerBackAdjust
    LeftTrapezius
    RightTrapezius
    LeftArmAdjust
    RightArmAdjust
    LeftForeArmAdjust
    RightForeArmAdjust
    LeftForeArmTwistAdjust
    RightForeArmTwistAdjust
    LeftShoulderAdjust
    RightShoulderAdjust
    LeftUpLegAdjust
    RightUpLegAdjust
    LeftLegAdjust
    RightLegAdjust
    LeftGluteus
    RightGluteus
    LeftEarAdjust
    RightEarAdjust
    NoseBaseAdjust
    NoseMiddleAdjust
    LeftNoseAdjust
    RightNoseAdjust
    UpperLipsAdjust
    MandibleAdjust
    LeftLowMaxilarAdjust
    RightLowMaxilarAdjust
    LeftCheekAdjust
    RightCheekAdjust
    LeftLowCheekAdjust
    RightLowCheekAdjust
    NoseTopAdjust
    LeftEyebrowLowAdjust
    RightEyebrowLowAdjust
    LeftEyebrowMiddleAdjust
    RightEyebrowMiddleAdjust
    LeftEyebrowUpAdjust
    RightEyebrowUpAdjust
    LipsSuperiorAdjust
    LipsInferiorAdjust
    LeftLipsSuperiorMiddleAdjust
    RightLipsSuperiorMiddleAdjust
    LeftLipsInferiorAdjust
    RightLipsInferiorAdjust
    LeftLipsAdjust
    RightLipsAdjust
    Global
    Position
    LowerBack
    Head
    LeftArm
    RightArm
    LeftForeArm
    RightForeArm
    LeftHand
    RightHand
    LeftFoot
    RightFoot
    LeftUpLeg
    RightUpLeg
    LeftShoulder
    RightShoulder
    Mandible
    

    天涯明月刀捏顔システム設計原理
    融合変形
    利点:非常に微細な顔の変化をコントロールすることができます.
    短所:Blendshapeは顔をつまむ作業量が非常に大きいので、一つの構造をつまむのにどんなに細かくても何枚の顔を作らなければならないと思います.この細さは作業量に比例しています.これにより、後期の変更が不便になり、さらに重要なのはパフォーマンスの消費量が非常に大きいことです.また、サードパーティ製アニメーションソフトウェアとは互換性がありません.
    ボーン駆動
    利点:制作量が少なく、性能消費が少なく、既存のアニメーションシステムと互換性があり、また、顔をつまむ骨格とアニメーション骨格は同じ骨格であり、MorpheConnectアニメーションソフトを通じて顔骨格と融合した.どんな形の顔をつまんでも同じアニメーションを使うことができ、大きな作業量を減らすことができます.
    欠点:重みの分配が制限されていることが多く、混練の細かさが限られている.
    まとめ
  • 骨格捏顔(48本骨格)
  • ソフトウェアの法線マップ+開発した表情法線マップの作り方:アニメーションソフトと2セットの表情法線を融合させ、表情法線と自分のモデルの法線を重ね、表情法線は0から100の透明度を設定する
  • 骨格に変位、回転・スケーリング機能がある人物换装和捏脸_第1张图片
  • 眼球には瞳孔diffuseMap通路があり、眼球サイズによって瞳孔マップにUV押し出しがある(?一応理解できない)人物换装和捏脸_第2张图片
  • (エイジングアイテムは、同じようにエイジング肌の法線を2セット作成し、0-100のグラデーション機能でキャラクターの顔を年齢別に変化させることができるうえ、顔をつまむ機能でキャラクターをより豊かにすることができます)(?画像では法線マップ+表情法線マップ+エージング法線マップ) 人物换装和捏脸_第3张图片 人物换装和捏脸_第4张图片 人物换装和捏脸_第5张图片

  • 『Honey Select』捏造剖析
    まとめ
  • HSの頭部骨格は、全て顔をつまむためのもので、表情アニメーションはMorphTargets駆動
  • 体が頂点に影響する骨格の名前はすべて「s」の文字が付いており、その親の骨格はすべて「s」を持たない同名の骨格である.HSのボディスケルトンでは、親スケルトンがアニメーションを担当し、子スケルトンがスキンを担当する.
  • 博文まとめ
  •   (   )      :
              Local Transform(Translation, Rotation, Scale)
         Local Transform     (   ):Tx/Ty/Tz/Rx/Ry/Rz/Sx/Sy/Sz
                      
             ,          
                   
    

    顔をつまんでまとめる
  • 骨格による調整.骨格を調整するScale、Rotation、Positionは相対的に少ない.
  • Mesh差分に基づく.このセクションは、前述したように欠落しています.一部のボーンの数に制限がある場合や、ボーンが特にうまくできない場合は、最大と最小の極値の2つのmeshを作成し、差分値に基づいて中間のmesh値を計算し、実行時に最終的に表示されるmeshを生成します.ボーンの違いを調整するのは、ボーンアニメーションとメッシュアニメーションに似ています.
  • 材質ベース.メッシュが変更されていない場合、マテリアルの変化は、肌の色、瞳の色、唇の色、タトゥーのパターンなどに使用され、マテリアルのマップやパラメータの変更によって変更できます.(UVの変化でタトゥーの色がカスタマイズできるなど)
  • 新しいMesh.この部分は「HoneySelect」でも、プログラムにとって最も簡単で、美術にとって最も仕事量の多い部分で、髪型、ファッション、余分なアクセサリーストラップなどに使われていると述べています.

  • 参考制作:
    https://docs.unrealengine.com/latest/CHN/Engine/Content/FBX/MorphTargets/index.html http://jjyy.guru/unity-animation