• https://docs.live2d.com/ko/cubism-sdk-manual
  • Original Workflow
    • C++, Typescript, Java 사용방법
  • SDK for Unity
    • WebGL 주의점 : 멀티스레딩을 지원X -> 샘플 등의 "AsyncBenchmark" 사용시엔 Async 비활성화 필요함!
    • Update() Vs LateUpdate()
      • 모델의 파라미터값 제어시 LateUpdate~OnPreRender 사이에 적용된다고 함.
      • Unity 빌트인 기능 Animator, Playable API를 이용하는데... Update~LateUpdate 사이에 적용된다고 함.
      • 따라서, 파라미터값을 Update 때 하면, AnimationClip 으로 덮어질수있는것이다.
      • (※ 각 프레임에서 "파라미터값 -> 모델갱신처리" 는 CubismModel.OnRenderObject() 으로 실시됨)
      • (※ CubismModel.OnRenderObject()는 Scene에 배치된 각 Camera가 렌더링을 마친 타이밍에 호출됨)
      • (※ 즉, Scene에 여러 Camera가 배치되 있으면... 그 수 만큼 호출됨)
      • [「Scriptable Render Pipeline」== 렌더링 '설정' 및 '실행' 을 C# 스크립트로 제어]
        • SRP 사용시, OnRenderObject() 가 호출되지 않아서~ PlayerLoop 등으로 대응 해야 한다고함...
    • SDK 버그
      • Unity 이벤트 함수
        • LateUpdate() 같은 "Unity 이벤트 함수" 에서 각 컴포넌트 업데이트를 하는데... 이 비용이 만만치 않음.
        • 그래서 여러게의 모델을 처리할 경우, 퍼포먼스가 안나올수 있다고 함.
        • 이럴경우 각 컴포넌트의 업데이트를 하나의 Controller에서 호출하는 식으로 하는것이 좋다고 함.
        • CubismUpdateController 참고.
      • 마스크용 텍스쳐
        • Prefab 을 그대로 AssetBundle로 설정한뒤...
        • AssetBundle 부터 모델의 생성과 파기를 반복하면, 텍스쳐가 계속 남아 메모리 누수 일어난다고 함;;;
        • CubismMaskController 참고.
    • 마스크 사용 상한
      • ...
    • Framework
      • EyeBlink, HarmonicMotion, MouthMovement
      • LookAt, Raycasting(충돌감지), UserData(사용자 아트메쉬 데이터)
      • OW : "Live2D Cubism Components" 페이지에 작성
    • Sample
      • LookAt : ...
      • Masking(???)
      • MultipleModels : "CubismRenderController -> Sorting -> Order In Layer" 순서셋팅
      • PerspectiveCamera : 카메라 Zoom In/Out
        • CubismRenderController -> sorting -> Mode -> Back To Front Order
        • MainCamera -> Camera -> Projection -> Perspective
      • Raycasting(충돌감지) : ...
  • Unity Samples 확장판 (신기능)
    • https://github.com/Live2D-Garage/CubismUnitySamplesExtended
    • Following : 오브젝트가 메쉬를 따라갑니다.
      • # TODO : ...
    • FollowingCollider : 콜라이더가 메쉬를 따라갑니다.
      • # TODO : ...
    • SetTexture : 텍스쳐 스위칭.
      • # TODO : ...
  • FAQ
    • Q. 스키닝의 물리 연산이 SDK상에서 생각한 것처럼 흔들리지 않습니다.
    • Q. Cubism SDK for Web에서 여러 모델을 표시하면 일부 모델이 업데이트되지 않습니다. 어떻게 해야 하나요?
    • Q. 반투명 부분이 거무스름 or 발광
    • Q. 눈에 띄게 들쭉날쭉하다, 경계가 울퉁불퉁하다
    • Q. 희미한 경계선이 생긴다
    • Q. 해상도가 낮다(일부)

 

  • https://docs.live2d.com/ko/cubism-sdk-tutorials
  • 0) 모델 애니메이트 및 (tts.wav) 립싱크 셋팅
    • 해당 모델의 AnimatorController 클릭 -> Animator 화면 <- 원하는 (motion) AnimationClip 추가.
    • 특정 AnimationClip 클릭 -> 해당 Animation 화면 -> MouthOpenY 제거.
    • 해당 모델의 MouthController 컴포넌트 -> Override 셋팅
    • 해당 모델에 AudioMouthInput 및 AudioSource 컴포넌트 추가
    •  
  • 0) 모델 파라미터 업데이트 정보
    • _model = this.FindCubismModel();
    • _paramAngleZ = _model.Parameters.FindById("PARAM_ANGLE_Z");
    • _paramAngleZ.BlendToValue(CubismParameterBlendMode.Override, 값) ;
    • _paramAngleZ.BlendToValue(CubismParameterBlendMode.Additive, 값) ;
    • _paramAngleZ.BlendToValue(CubismParameterBlendMode.Multiply, 값) ;
  • 1) 충돌 감지 설정
  • 2) 시선 추적 설정
  • 6) 모델의 Drawable 사이에 다른 스프라이트를 끼웁
  • 9) 스크립트에서 모션 재생
    • CubismMotionController 및 Animator 컴포넌트를 사용하여 애니메이션을 재생.
    • (Animator의 AnimatorController를 사용한 모션 재생과 공존X)
    • [절차]
      • CubismMotionController 추가 (Layer Count: 애니메이션 레이어의 총수)
      • Animator 의 Contorller 은 None 으로 유지
      • CubismFadeController 의 FadeMotionList 셋팅.
    • [코드]
      • CubismMotionController _motionController = GetComponent<CubismMotionController>();
      • AnimationClip animation = 원하는 클립 ;
      • _motionController.PlayAnimation(animation, isLoop: false);
  • 11) .cdi3.json 사용
    • Parameters 란 특정 파람의"Cubism Display Info Parameter Name" 값 수정으로 편하게 네이밍 관리 가능!
  • Original Workflow
    • Mecanim에서 모션 페이드 유효화
      • ...
    • 표정 기능 사용
      • CubismExpressionController
        • Expression List
        • Current Expression Index
        • Legacy Blend Cal... : ???
    • Pose 기능 사용
      • ...
  • 문제 해결
    • 1) AssetBundle 에서 모델을 사용할 때 메모리 누수 문제 및 해결
    • 2) 모델 그리기 순서 정상화
      • Camera Projection 설정이 기본적으로는 "Orthographic" 인데...
      • 3D 모델과 같은 카메라로 표시하고 싶은 경우~
      • “Perspective” 및 RenderController = "Back To Front Order" 으로 해야 정상적으로 그려짐!
      • % 모델 그리기 Mode가 “Back To Front Z”이면 작은 수치(1 또는 2)로 겹치는 문제가 해결됩니다.
      • % 모델 그리기 Mode가 “Back To Front Order”이면 어느 정도 큰 수치(100이나 200)가 필요합니다.
    • 3) Mecanim 표정·포즈 전환
    • 3) Mecanim포즈 전환 시의 주의점
      • ...
    • 4) 페이드를 유효화하여 모션을 반복 재생   {Animator}
    • 4) 페이드를 유효화하여 모션을 반복 재생   {CubismMotionController}
    • (모션을 루프 재생하는 경우 종단으로부터 선두로 돌아올 때에 페이드는 발생하지 않는 상황)
      • ...

-끝-

'게임' 카테고리의 다른 글

Live2D Cubism Components  (0) 2023.03.15
unity3  (0) 2023.03.15
Live2D Cubism  (0) 2022.08.28
Ready Player ME  (0) 2022.08.27
unity2  (0) 2022.08.08

+ Recent posts