游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2678|回复: 0

???????????????????????

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2020-1-7 10:00:13 | 显示全部楼层 |阅读模式
????????????????????????????????????????????????Unreal??Unity???????????

???????????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????

1.jpg

????????????????????????????

1.1 ???????

???????????????????????????????????????????????????????????????????????????????????????

2.jpg

??????????????????????????????

  • ??????????????????????????????????????????????????????????
  • ?????????????????????????????????????????????????????????????????


??????????????????????????????????????????????????

1.2 ??????

?????????????????????????????????RMS???????????????????

3.jpg

???????????????????????????RMS???????????????????????????

  • ???????????????


??????????????????????????????????????????????

?????????????

4 (1).gif

??????????????????RMS?????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????

??????????ADX LipSync???????

5.jpg

ADX LipSync?Criware??????????????ADX2????????

?????????????ADX2??????????????

2.1 LipSync??

LipSync??????????????????????????????????????????????????????????????????????????????????????????????

LipSync????????????????????

  • ?????????????????????????????????????????????????????
  • ????????????????wav???????????????????????wav???????????????????????????????


LipSync????????????????ADX2?????

  • ?????LipSync?????????LipSync???????????????????
  • ?ADX2?????????LipSync??ADX2??????????ADX2?Cue?Track????????????????????????????????????????????????ADX LipSync?????????????


????ADX LipSync??????????????????????????3D Max??????????????

2.2 ????????

????????????????????????3D Max??

6.jpg

???????Shift???????

7.gif

??????

8.gif

??????????????????

9.gif

10.gif

?????????????????????????????????????????????????

11.gif

12.gif

????????????????????????????????????

13.gif

?????????????????

2.3 ??????

???????????????????????

ADX LipSync????????ADX2??????????????????ADX2????????

??????ADX LipSync????????Track???????????????????????

14.jpg

??????????????????????????????????????????????????????????????

???????????????????

  • ??????????????????????????????????????????????????????????????????ADX2????????????????????????????

15.gif


  • ???????????????????????????????????????????????????????????????????????????????????????


16.gif

?????????????????????????????

???

  • ???????????????????????????????????????
  • ?????????????????????????AEUIO?????????????????????


???ADX LipSync????ADX2???????????ADX2?????????????????????????????????????????????

?????????????????????????????????????????????????

2.4 Unreal??

???????????????????Unreal????????????????????????????????Unreal?????????????

17.jpg

????????3D Max?????????????Unreal????????Unreal????????????????????????

18.png

?????????ADX2????????????????????Cue???????

???????Cue?????????????????????????????????????????

???????????????

??????

????????????????

19.jpg

????Atom Component?Atom Component????Cue??????Cue???wav????ADX LipSync????Cue???????????????????????????Cue??????

????LipSync

?????????????????????????????????LipSync??????????????Set ADXLipSync??????????LipSync??????

20.jpg

?????Lips Atom Analyzer??????????????????Init?????????Init?????Attach??

???Get Info??Lip Width???????????????????????????????0???????????????????

?????????????????????????????

21.png

??Event BeginPlay?????Set ADXLipSync??????????????Play Atom????????????????

?????????

????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????????

22.png

?????????????

23.jpg

?????Get Info????????Lip Width???????LipWidthOpen???Lip Height?????LipHeightOpen?????Tongue Position?????Tongue_Up????Info???????????????????????????????????????

????????????????

24.jpg

??????????????????????????????????????????????????

???????????

25.jpg

??????????????????????????????????????????????

??????????????Bus??Peak Leavels???????LipWidthOpen??LipHeightOpen???

????????????????????????????????????????????????????????????

???????????

?????Unreal??????????????????Cue??????????????????????????????????????UI?????????????

26.jpg

????????"TextBlock300"?"TextBlock492"???????TXT?????

27.png

28.png

??????String?????????CueNameParam??LipsyncModleNamePara????Cue????????????

29.png

30.png

?????????????????3?????????????UI????????UI?????????????????

31.jpg

????????????UI????????????????

?????????????????????????bool?????

32.png

???bool???????????????

???????????????????????bool??????????UI????????????

33.jpg

??????????????????????????????bool?????????UI??LipsyncModleNamePara?????

??????????????????bool???????????bool?????????????????????????

34.jpg

??????Event Tick???????????bool???????????????????????????????????Cue??????????info???????????????????????????

????????????????????????????????????????????????????????????????UI??????

?????????????????????????

35.png

36.png

?????????????????????????

37.jpg

??????????????????????????????????????????????????????????????????????????????bool???????Event Tick????????????????????????????

????????Sequence Flip????????????????????????????????????????????

38.jpg

????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????0???????Reset???????

39.jpg

????Reset????????????????????????????????0????????????????????????????????????

???????Event Tick??????

30.jpg

?????????????????????????Finish?False?????Reset???Reset????????????????????????

???????????????ADX LipSync????????????????????????????????

??????????????????????????????????????

?????

??ADX LipSync???????ADX2????????????????????????????????????????????Cue????????????????????

???????????CueList??????Sound Atom Cue???????????Cue?????????

40.png

?????????????CueChoice???????????????

42.jpg

???UI????Cue Index????????UI??????????

???????????????????????????????????????CueList??Cue????????Cue??????????

CueIndex??????UI????????????????UI????????????????CueIndex????

43.png

????????????Cue?Index??????????????????????????????Cue Index?????????Cue?

??????????Cue??????????????????????????

44.png

46.png

????????

47.jpg

48.jpg

???????CueIndex????????????????1?????????????????????????????????????????????????????????CueList?Length???????????

??????????CueChoice????????????Cue Index????????????CueList??Cue?????????

???????????Cue?????????????Cue??????????????????????

?????????????UI???????????????????????Cue????????????????????????????????

49.png

50.png

????????????????????????????????????????????????????Cue?????????????????????????????????????

?????????


????????????????????Volume?????????????????????????????????????????????????????????????????????????????

??????????????????????????????

2.5 Unity??

?Unreal????????????????Unity?????Object?????????????????????????????????????????????????

?????

??????????????????????????????????????????????????

51.jpg

????Hierarchy????????

???????

???????????????????????????????????????????????????????

52.png

??????6????????????????

  • "Button_play"???Cue????????????????????
  • "Button_stop"???Cue??????????????????????
  • "Button_>"???Cue???????????????????????
  • "Button_<"???Cue???????????????????????
  • "Button_textshowcue"???Cue??????????Cue????????Cue?????
  • "Button_modleselector"??????????????????????????????????


????????????????????????????????????????????Cue?????????????????????????????????????

???????

?????????????????????????????????????ADX2????????Unity????????????Object?Hierarchy???????CRIWARE?????Add Component?????Cri Atom?????

53.png

???????Cri Atom?????acf?acb??awb??????????

?????

???????????????????????????????????????

?????Hierarchy???????Object?????ModelControl????????Add Component?????????"Cri Lips Shape For Atom Source"?

54.png

????????????????????Cri Atom Source??SkinnedMeshRenderer?

Cri Atom Source??????????SkinnedMeshRenderer????????Hierarchy????????????????SkinnedMeshRenderer??????

55.png

???????????????

56.png

????BlendShapeType??????????????????????????????????????? ??????????????????

57.png

58.png

?????????????????????????????????????????????????????????

????ModelControl???Add Component????Cri Atom Source???

59.png

????????Hierarcgy??ModelControl??????????"Cri Lips Shape For Atom Source"??????CriAtomSource??

60.png

???????"Cri Lips Shape For Atom Source"??????????????????????????

?????

????????????????????????????????????????Play?Stop???????Cue?????????????????????????????

  1.   using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;

  5. public class ADXLipsync : MonoBehaviour
  6. {  
  7.    #region
  8.    public CriAtomSource atomsource = null;
  9.    public string cueSheetName = "";
  10.    public CriLipsShapeForAtomSource shapeForAtomSource = null;
  11.    private CriAtomExAcb acb = null;
  12.    private CriAtomEx.CueInfo[] cueInfos;
  13.    private int selectedCueIndex = 0;
  14.    public Text textname;
  15.    public Text modelName;
  16.    #endregion
  17.    // ???????/????????/????????
  18.    #region
  19.    void Start()
  20.    {  
  21.        if (!string.IsNullOrEmpty(cueSheetName))
  22.        {  
  23.            acb = CriAtom.GetAcb(cueSheetName);
  24.            cueInfos = acb.GetCueInfoList();
  25.            modelName.text = "JapaneseAIUEO";
  26.            shapeForAtomSource.blendShapeType = CriLipsShape.BlendShapeType.JapaneseAIUEO;
  27.         }
  28.     }
  29.    // ????????
  30.    void Update()
  31.    {  
  32.        textname.text = cueInfos[selectedCueIndex].name;

  33.     }
  34.    // play????????
  35.    public void PlayCue()
  36.    {  
  37.        atomsource.player.SetCue(acb, cueInfos[selectedCueIndex].name);
  38.        if (atomsource.status == CriAtomSource.Status.Playing)
  39.        {  
  40.            atomsource.player.Stop();
  41.         }
  42.        atomsource.player.Start();
  43.     }
  44.    // stop????????
  45.    public void StopCue()
  46.    {  
  47.        atomsource.player.Stop();
  48.     }
  49.    // ???????index
  50.    public void SetSelectedCueIndexIncrease()
  51.    {  
  52.        if (selectedCueIndex >= cueInfos.Length - 1)
  53.        {  
  54.            selectedCueIndex = 0;
  55.         }
  56.        else
  57.        {  
  58.            selectedCueIndex++;
  59.         }
  60.     }

  61.    public void SetSlectedCueIndexDecrease()
  62.    {  
  63.        if (selectedCueIndex <= 0)
  64.        {  
  65.            selectedCueIndex = cueInfos.Length - 1;
  66.         }
  67.        else
  68.        {  
  69.            selectedCueIndex--;
  70.         }
  71.     }
  72.    // ??????
  73.    public void changeModle()
  74.    {  
  75.        switch (shapeForAtomSource.blendShapeType)
  76.        {  
  77.            case CriLipsShape.BlendShapeType.WidthHeight:
  78.                shapeForAtomSource.blendShapeType = CriLipsShape.BlendShapeType.JapaneseAIUEO;
  79.                SetBlendShapeWidthHeightAtSilence(shapeForAtomSource);
  80.                modelName.text = "JapaneseAIUEO";
  81.                break;
  82.            case CriLipsShape.BlendShapeType.JapaneseAIUEO:
  83.                shapeForAtomSource.blendShapeType = CriLipsShape.BlendShapeType.WidthHeight;
  84.                setSetBlendShapeJapaneseAIUEOAtSilence(shapeForAtomSource);
  85.                modelName.text = "WidthHeight";
  86.                break;
  87.            default:
  88.                break;
  89.         }
  90.     }

  91.    // ????????
  92.    /// <summary>
  93.    /// ????????
  94.    /// </summary>
  95.    private void SetBlendShapeWidthHeightAtSilence(CriLipsShapeForAtomSource lipsShapeForAtomSurce)
  96.    {  
  97.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.WidthHeightName.lipHeightOpenName, 0.0f);
  98.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.WidthHeightName.lipWidthCloseName, 0.0f);
  99.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.WidthHeightName.lipWidthOpenName, 0.0f);
  100.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.WidthHeightName.tonguePosition, 0.0f);
  101.     }
  102.    /// <summary>
  103.    /// ??????
  104.    /// </summary>
  105.    private void setSetBlendShapeJapaneseAIUEOAtSilence(CriLipsShapeForAtomSource lipsShapeForAtomSurce)
  106.    {  
  107.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.japaneseAIUEOName.a, 0.0f);
  108.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.japaneseAIUEOName.e, 0.0f);
  109.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.japaneseAIUEOName.i, 0.0f);
  110.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.japaneseAIUEOName.o, 0.0f);
  111.        BlendShapeWeighString(lipsShapeForAtomSurce.skinnedMeshRenderer, lipsShapeForAtomSurce.nameMapping.japaneseAIUEOName.u, 0.0f);
  112.     }

  113.    private void BlendShapeWeighString(SkinnedMeshRenderer skinnedMeshRenderer,string blendShapeName,float weight)
  114.    {  
  115.        if (string.IsNullOrEmpty(blendShapeName))
  116.        {  
  117.            return;
  118.         }
  119.        int index = skinnedMeshRenderer.sharedMesh.GetBlendShapeIndex(blendShapeName);
  120.        if (index < 0)
  121.        {  
  122.            return;
  123.         }
  124.        skinnedMeshRenderer.SetBlendShapeWeight(index, weight);
  125.     }
  126.    #endregion
  127. }
复制代码


???????????????????

  • ?????acb?acb?????????????????????Cue???
  • ????acb??????cue????????????
  • ???????PlayCue?StopCue?SetSelectedCueIndexIncrease??SetSlectedCueIndexDecrease?????????Cue???Cue????Cue????????acb????CueIndex?
  • ???????changeModle??????????????????????????????????????
  • ?changeModle??????SetBlendShapeWidthHeightAtSilence?setSetBlendShapeJapaneseAIUEOAtSilence??????????????????????????????????????


??????????????????????????????????????

61.png

62.png

63.png

64.png

65.png

66.png

?????????????????????????????????????


ADX LipSync??????????????ADX2????????????????????????????????????????????

???????????????????????????????????

??????????
?????GWB????
????https://mp.weixin.qq.com/s/aVwiImNgcNs_q_OShyLvtw

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 20:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表