표정 설정 (구버전)


현재 비추천하는 기능입니다.
예전 버전에서만 지원하는 메서드가 있기 때문에 거기에 사용됩니다.
표정 이름을 키로하는 해쉬맵에서 가져올 수 있습니다.


사용 예

실제 사용법은 아래의 의사 코드를 참고해주세요.
의사 코드에서 사용되는 표정용 JSON 파일은 여기에 있습니다.

-----표정용 json 파일 불러오기------------------------------------------------------------------------------
  1. String      path = "//live2d/model/expression.json";    // ・・・[1]
  2. InputStream in   = Context.getAssets().open(path);      // ・・・[1]
  3. byte[]      buf  = UtFile.load( in ) ;                  // ・・・[1]
  4. Value       mo   = Json.parseFromBytes( buf ) ;         // ・・・[1]
  5.  
  6. Value defaultExpr = mo.get("DEFAULT") ;                 // ・・・[2]

[1]: 표정용으로 준비된 JSON 파일을 불러옵니다.

[2]: 표정에 맞는 파라미터 값 세트를 가져옵니다.


-----파라미터 값 세트를 설정------------------------------------------------------------------------------
  1. HashMap<String, AMotion> expressions = new HashMap<String, AMotion>() ;
  2.  
  3. Set<String> keys = mo.keySet() ;                                     // ・・・[1]
  4.  
  5. for(String key : keys)                                               // ・・・[2]
  6. {
  7.     if( EXPRESSION_DEFAULT.equals( key ) ) continue ; // 무시함
  8.  
  9.     Value   expr     = mo.get( key ) ;                               // ・・・[3]
  10.     AMotion exMotion = new AMotion();
  11.        
  12.     exMotion.setFadeIn( expr.get("FADE_IN").toInt(1000) ) ;          // ・・・[4]
  13.     exMotion.setFadeOut( expr.get("FADE_OUT").toInt(1000) ) ;        // ・・・[4]
  14.  
  15.     //--- ID 리스트 생성
  16.     Value             defaultParams = defaultExpr.get("PARAMS") ;    // ・・・[5]
  17.     Value             params        = expr.get("PARAMS") ;           // ・・・[5]
  18.     Set<String>       paramID       = params.keySet() ;              // ・・・[5]
  19.     ArrayList<String> idList        = new ArrayList<String>() ;      // ・・・[5]
  20.  
  21.     for(String id : paramID)
  22.     {
  23.         idList.add( id ) ;
  24.     }
  25.        
  26.     //--------- 파라미터 값 설정 ---------
  27.     float[] values = new float[ idList.size() ] ;
  28.     for ( int i = idList.size() -1 ; i >= 0 ; --)                  // ・・・[6]
  29.     {
  30.         String id       = idList.get(i) ;                            // ・・・[6]
  31.  
  32.         float  defaultV = defaultParams.get(id).toFloat(0) ;         // ・・・[6]
  33.         float  v        = params.get( id ).toFloat( 0.0f ) ;         // ・・・[6]
  34.         values[i]       = ( v - defaultV ) ;                         // ・・・[6]
  35.     }
  36.     expressions.put( key , exMotion ) ;                              // ・・・[6]
  37. }

[1]: JSON 파일의 데이터를 각 표정 이름을 Set형으로 가져옵니다.

[2]: 불러온 JSON 파일들을 표정 모션 형식으로 읽어옵니다.

[3]: JSON 파일에 설정되었던 표정 데이터를 가져옵니다.
     SDK 샘플에는 A~H까지 모션 형식으로 생성됩니다.

[4]: JSON 데이터 중 페이드 시간을 읽어옵니다

[5]: JSON 데이터 중 "PARAMS" 안에 파라미터 수치들을 읽어옵니다.

[6]: [5] 에서 읽어온 수치들을 모델의 표정 파라미터로 설정합니다.


  1. @Override
  2. public void updateParamExe(                                  // ・・・[1]
  3.     ALive2DModel model,
  4.     long timeMSec,
  5.     float weight,
  6.     MotionQueueEnt motionQueueEnt)
  7. {
  8.     for ( int i = idList.size() -1 ; i >= 0 ; --)
  9.     {
  10.         String id = idList.get(i) ;
  11.         model.addToParamFloat( id, values[i] , weight ) ;    // ・・・[2]
  12.     }
  13. }

[1]: AMotion 클래스의 함수입니다.
     여기서는 AMotion 클래스를 상속한 클래스에서 함수를 오버라이딩하여 사용합니다.
     updateParamExe() 함수에 대한 자세한 설명은 여기를 참조해주세요.

[2]: 표정 파라미터를 현재 수치에서 상대적으로 변경합니다.
     values 는 「파라미터 값 세트를 설정」에서 사용한 변수와 같은 변수입니다.
     addToParamFloat() 함수에 대한 자세한 설명은 「파라미터 조작」를 참조해주세요.


-----표정 설정----------------------------------------------------------------------------------------------
  1. String expressionID = "A";
  2.  
  3. L2DMotionManager expressionManager = new L2DMotionManager();           // ・・・[1]
  4. AMotion          motion            = expressions.get(expressionID);    // ・・・[2]
  5.  
  6. expressionManager.startMotion(motion,false);    // 표정 설정
  7. expressionManager.updateParam(live2DModel);     // 파라미터 갱신 (상대 변화)

[1]: 표정용 모션 관리자를 준비합니다.

[2]:  JSON 파일로부터 읽어온 표정들 중 모델에 적용할 표정을 가져옵니다.




サブページ (1): json 파일
Comments