Version: 5.6
ブレンドツリー向けの追加オプション
Animator Override Controller

ブレンドシェイプ

アートワークの準備

MAYA 上でブレンドシェイプの準備ができたら:

  • アニメーションのオプション、デフォームしたモデル(Deformed Models)オプションのブレンドシェイプオプションを有効にしたのを確認して、選択したオブジェクトをエクスポートしてください。

  • Unity へ fbx ファイルを読み込みます。(assets->import new assets->[ファイル名].fbx)

  • アセットをヒエラルキーウィンドウへドラッグします。ヒエラルキーウィンドウ上でオブジェクトを選択し、インスペクターを確認することで、SkinnedMeshRenderer コンポーネント内においてブレンドシェイプのリストを確認できます。ここではデフォルト形状へのブレンドシェイプの影響力を調節でき、0 ではブレンドシェイプの影響はなく、100 でブレンドシェイプへの影響が最大になります。

Unity でのアニメーションの作成

Unity のアニメーションウィンドウを使用してブレンドアニメーションを作成することも可能です。手順は以下のようになります。

  • Window->Animation を選択してアニメーションウィンドウを開きます。

  • ウィンドウの左側‘ Add Curve ’をクリックして Skinned Mesh Renderer にあるブレンドシェイプを追加します。

ここからキーフレームとブレンドウェイトを操作してお望みのアニメーションを作成することができます。

アニメーションの編集が終われば、エディターウィンドウかアニメーションウィンドウの play をクリックしてアニメーションをプレビューすることができます。

スクリプトからアクセス

GetBlendShapeWeight や SetBlendShapeWeight などのコードを通してブレンドウェイトを設定することも可能です。

blendShapeCount 変数にアクセスすることでメッシュがいくつのブレンドシェイプをもっているのかをチェックすることができます。

ここでは 3 つ以上のブレンド形状を持つゲームオブジェクトに結合する時に、時間をかけて他の二つのブレンド形状にデフォルトの形状をブレンドしたコードの例を次に示します。

// C# を使用
 
using UnityEngine;
using System.Collections;
 
public class BlendShapeExample : MonoBehaviour
{
 
       int blendShapeCount;
       SkinnedMeshRenderer skinnedMeshRenderer;
       Mesh skinnedMesh;
       float blendOne = 0f;
       float blendTwo = 0f;
       float blendSpeed = 1f;
       bool blendOneFinished = false;
 
       void Awake ()
       {
          skinnedMeshRenderer = GetComponent<SkinnedMeshRenderer> ();
          skinnedMesh = GetComponent<SkinnedMeshRenderer> ().sharedMesh;
       }
 
       void Start ()
       {
          blendShapeCount = skinnedMesh.blendShapeCount; 
       }
 
       void Update ()
       {
          if (blendShapeCount > 2) {
 
                 if (blendOne < 100f) {
                    skinnedMeshRenderer.SetBlendShapeWeight (0, blendOne);
                    blendOne += blendSpeed;
                 } else {
                    blendOneFinished = true;
                 }
 
                 if (blendOneFinished == true && blendTwo < 100f) {
                    skinnedMeshRenderer.SetBlendShapeWeight (1, blendTwo);
                    blendTwo += blendSpeed;
                 }
 
          }
       }
}
 
New 2017年5月20日 00:23
   + ADD COMMENT
1 - 17 of 17 translations

ブレンドツリー向けの追加オプション
Animator Override Controller
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961