2025-06-08 00:55:10 +09:00

65 lines
1.3 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MMDSkinsScript : MonoBehaviour
{
// 表情の種類
public enum SkinType
{
Base,
EyeBrow,
Eye,
Lip,
Other,
}
// 全ての頂点データからターゲットとなる頂点インデックス
public int[] targetIndices;
// モーフ先へのベクトル
public Vector3[] morphTarget;
// 表情の種類
public SkinType skinType;
// 前フレームのウェイト値
float prev_weight = 0;
// ウェイト付きモーフ結果
public Vector3[] current_morph=null;
// Use this for initialization
void Start ()
{
}
// モーフの計算
public bool Compute(Vector3[] composite)
{
bool computed_morph = false; // 計算したかどうか
float weight = transform.localPosition.z;
if(current_morph==null || targetIndices.Length!=current_morph.Length)
current_morph=new Vector3[targetIndices.Length];
if (weight != prev_weight)
{
computed_morph = true;
for (int i = 0; i < targetIndices.Length; i++)
current_morph[i]=morphTarget[i] * weight;
}
for (int i = 0; i < targetIndices.Length; i++)
{
if(targetIndices[i]<composite.Length)
composite[targetIndices[i]] += current_morph[i];
}
prev_weight = weight;
return computed_morph;
}
}