0.9에서 1.0로 이식


0.9와 1.0의 차이
・표정 파일                        한 개의 파일에 모든 표정 정보가 들어 있음            표정 하나 당 파일 하나씩 있음
・표정 파일 설정                코드에서 직접 파일 경로를 지정                            모델용 json 파일에 기술



-----표정용 json파일을 불러오기------------------------------------------------------------------------------
  1. String path    = "//live2d/model/expression.json";
  2. InputStream in = Context.getAssets().open(path);
  3. byte[] buf     = getBuf(path) ;
  4. json           = Json.parseFromBytes( buf ) ;
  5. in.close() ;


  1. String modelSettingPath    = "//live2d/model/sample_01.model.json";
  2. InputStream in = Context.getAssets().open(path);
  3. byte[] buf     = UtFile.load( in ) ;
  4. json           = Json.parseFromBytes( buf ) ;
  5. in.close() ;

파일을 불러오는 것 자체는 변경할 것이 없습니다만, 로드할 파일을 표정용 파일로부터, 모델 세팅용 파일을 불러옵니다.
모델 세팅용 파일에는 표정 파일뿐 아니라 모델, 텍스쳐 등 Live2D용 파일이나 물리 연산, 파츠 전환등의 설정에 사용되는 JSON 파일의 경로도 기록되어 있습니다.


-----상대값에서 표준이 되는 값을 설정---------------------------------------------------------------------------
  1. HashMap<String, AMotion> expressions = new HashMap<String, AMotion>() ;
  2.  
  3. Set<String> keys = mo.keySet() ;
  4.  
  5. for(String key : keys)
  6. {
  7.     if( EXPRESSION_DEFAULT.equals( key ) ) continue ; // 넘김
  8.  
  9.     Value   expr     = mo.get( key ) ;
  10.     AMotion exMotion = new AMotion();
  11.        
  12.     exMotion.setFadeIn( expr.get("FADE_IN").toInt(1000) ) ;
  13.     exMotion.setFadeOut( expr.get("FADE_OUT").toInt(1000) ) ;
  14.  
  15.     //--- ID리스트 생성
  16.     Value             defaultParams = defaultExpr.get("PARAMS") ;
  17.     Value             params        = expr.get("PARAMS") ;
  18.     Set<String>       paramID       = params.keySet() ;
  19.     ArrayList<String> idList        = new ArrayList<String>() ;
  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 ; --)
  29.     {
  30.         String id       = idList.get(i) ;
  31.  
  32.         float  defaultV = defaultParams.get(id).toFloat(0) ;
  33.         float  v        = params.get( id ).toFloat( 0.0f ) ;
  34.         values[i]       = ( v - defaultV ) ;
  35.     }
  36.     expressions.put( key , exMotion ) ;
  37. }




  1. static public class SampleExpressionMotion extends AMotion
  2. {
  3.     ArrayList<SampleExpressionParam> paramList ;
  4.     Map<String, AMotion>             expressions // 표정용 모션 데이터

  5.     public void foo()
  6.     {
  7.         for (int i = 0; i < fileNames.length; i++)
  8.         {
  9.             SampleExpressionMotion expressionMotion = new SampleExpressionMotion();

  10.             String names     = json.get("expressions").get(i).get("name").toString() ;
  11.             String fileNames = json.get(EXPRESSIONS).get(i).get(FILE).toString(;
  12.                        
  13.             // 표정용 JSON 파일 불러오기
  14.             InputStream in   = new FileInputStream( fileNames ) ;
  15.             byte[]      buf  = UtFile.load( in ) ;
  16.             Value       json = Json.parseFromBytes( buf ) ;
  17.                        
  18.             // 파라미터 확인
  19.             Value params   = json.get("params");
  20.             int   paramNum = params.getVector(null).size();
  21.  
  22.             expressionMotion.paramList = new ArrayList<SampleExpressionParam>( paramNum );
  23.             
  24.             for (int i = 0; i < paramNum; i++)
  25.             {
  26.                 Value  param   = params.get(i);
  27.                 String paramID param.get("id").toString();//파라미터 ID
  28.                 float  value   = param.get("val").toFloat();//값
  29.  
  30.                 // 설정 오브젝트를 만들어 리스트에 추가한다
  31.                 SampleExpressionParam item=new SampleExpressionParam();
  32.  
  33.                 item.id    paramID;
  34.                 item.type  calcTypeInt;
  35.                 item.value value;
  36.  
  37.                 expressionMotion.paramList.add(item);
  38.             }
  39.                        
  40.             expressions.put(names[i], paramList);
  41.  
  42.             in.close() ;
  43.         }
  44.     }
  45. }









Comments