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