Candy Rock Star 모델 변경 방법
14187 단어 Unity
하고 싶은 일
직접 만든 vroid를 Candy Rock Star의 무대에서 춤추고 싶습니다.
환경
유니티 버전 2020.3.18f1
참고한 기사
매우 이해하기 쉬운 기사가 있습니다.
잘 된 곳을 제거합니다.
FocusObj 설정
이 설정이 없으면 오류가 발생하여 실행할 수 없었습니다. 우선 모델의 선두에 설정.
MusicStartar 추가
이 설정이 없으면 오류가 발생하여 실행할 수 없었습니다. 사쿠토 추가.
소스 수정
이쪽은 에러가 나오지 않는데 제대로 움직이지 않았다. 버전이 올라가서 쓰는 방법이 바뀐 모양.
FaceChanger.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRM;
public class FaceChanger : MonoBehaviour
{
VRMBlendShapeProxy proxy;
void Start()
{
proxy = GetComponent<VRMBlendShapeProxy>();
}
//表情を変えるイベントをここで受け取る.
public void OnCallChangeFace(string str)
{
switch (str)
{ //受け取ったメッセージが
case "eye_close@unitychan": //「目を閉じる」であれば
proxy.SetValues(new Dictionary<BlendShapeKey, float>
{ {BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 1f } }); // 瞬き
break;
case "smile3@unitychan": //「笑顔」であれば
proxy.SetValues(new Dictionary<BlendShapeKey, float>
{ {BlendShapeKey.CreateFromPreset(BlendShapePreset.Joy), 1f } }); // 喜
break;
case "conf@unitychan": //「困惑」であれば
proxy.SetValues(new Dictionary<BlendShapeKey, float>
{ {BlendShapeKey.CreateFromPreset(BlendShapePreset.Angry), 1f } }); // 怒
break;
case "default@unitychan": //それ以外なら
proxy.SetValues(new Dictionary<BlendShapeKey, float>
{
{BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 0f } ,
{BlendShapeKey.CreateFromPreset(BlendShapePreset.Joy), 0f } ,
{BlendShapeKey.CreateFromPreset(BlendShapePreset.Angry), 0f } ,
}); //すべてリセット
break;
}
}
}
LipSyncController.cs
using UnityEngine;
using System.Collections;
using VRM;
public class LipSyncController : MonoBehaviour
{
public string targetName;
public Transform nodeA;
public Transform nodeE;
public Transform nodeI;
public Transform nodeO;
public Transform nodeU;
public AnimationCurve weightCurve;
VRMBlendShapeProxy target;
void Start()
{
target = GameObject.Find(targetName).GetComponent<VRMBlendShapeProxy>();
}
float GetWeight(Transform tr)
{
return weightCurve.Evaluate(tr.localPosition.z);
}
void LateUpdate()
{
Debug.Log("LipSyncController#LateUpdate:");
var total = 1.0f;
var w = total * GetWeight(nodeA);
target.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.A), w);
total -= w;
w = total * GetWeight(nodeI);
target.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.I), w);
total -= w;
w = total * GetWeight(nodeU);
target.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.U), w);
total -= w;
w = total * GetWeight(nodeE);
target.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.E), w);
total -= w;
w = total * GetWeight(nodeO);
target.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.O), w);
target.Apply();
}
}
이것으로 무사히 춤을 추었습니다!
Reference
이 문제에 관하여(Candy Rock Star 모델 변경 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/skuromaku/items/7106d07611331ba3c308텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)