Archive for 4月, 2011

Live2Dモデルを組み込んで使用する

前回のつづき
Live2Dのプログラミングをしていると数十個いや数百個いやそれ以上のモデルデータを使いたいなんてことがありますよね。
そんなときにはこれ、このクラスを使うと大量のモデルデータをスマートに活用できてしまいます。

構成
LoadBinaryL2dModel.fla //タイムラインにメインのコードを記述
moblist.as //mob形式のモデルデータ登録するファイル
monochromebit-L2dLoadCls.as //今回使用するクラス
model //mobデータ置場

使用方法
まず最初にmoblist.asに使用するLive2Dモデルのmobファイルを登録します。
実際はL2dLoadCls.asに記述してあるのですがわかりやすいように切り離してあります。


//埋め込むモデルをリストに登録する
private static const MOB_LIST:Array = [];

//0ドロイド
[Embed(source='/model/android.mob',mimeType='application/octet-stream')]  
private static var embedMod0:Class;
MOB_LIST.push(embedMod0);

//1草
[Embed(source='/model/kusa.mob',mimeType='application/octet-stream')]  
private static var embedMod1:Class;
MOB_LIST.push(embedMod1);

//2アマゾン
[Embed(source='/model/amazon.mob',mimeType='application/octet-stream')]  
private static var embedMod2:Class;
MOB_LIST.push(embedMod2);

次はflaファイルのタイムラインにメインのコードを書きます。

//タイムラインに記述しています。

	import jp.live2d.model.Live2DModel;
	import monochromebit.L2dLoadCls;//今回つくったクラス

//組込クラスのインスタンス化
var l2dloadCls:L2dLoadCls = new L2dLoadCls();
//モデルの入れ物
var l2dAndMod:Live2DModel;

//MOB_LIST[xx]のインデックス番号のモデルをセット
l2dAndMod = l2dloadCls.getModel(2); //この場合MOB_LIST[2]=getModel(2)です。
//スプライトにモデルをセット
var modSpt:Sprite = l2dAndMod.getSprite();

			//スプライトを登録
			this.addChild(modSpt) ;

使い方はこんな感じです。
今回CS5でflaファイルにメインコードを記述しましたがクラス自体はflex環境でも使用可能です。
実行にはLive2D SDK for Flash 1.0が必要です。
▽ダウンロードはこちら
zipでやる

ついでにL2dLoadClsクラスの中身

//mobファイルをバイナリとして組み込んでロード
package monochromebit
{
	import jp.live2d.model.Live2DModel;
	import flash.utils.*
	/**
	 * 多量のMOB読み込み
	 */
	public class L2dLoadCls{
		public var l2dMod:Live2DModel;

		/**コンストラクタ**/
		public function L2dLoadCls(){}

		//モデルを生成して返す
		public function getModel(element:int):Live2DModel{
			//MOB_LISTからモデルロード
			l2dMod = loadBinMod(element);//○番めのmob読み込み
			return l2dMod;
		}//getModelEND

		//バイナリからモデルロード
		private function loadBinMod(element:int):Live2DModel{
			var byteArray:ByteArray = new MOB_LIST[element] as ByteArray;
			return Live2DModel.loadFromByteArray(byteArray);
		}//loadBinModEND
	include "../moblist.as"//mob登録リスト
	}//classEND
}/**packageEND**/

WordPressでAS3コードを表示するプラグインを導入してどや顔してみる

よくwebで色つきのコードが表示されているものを見かけてうちでもやりたいなぁとおもっていました。
WPのプラグインですぐできるだろうとおもったところ案の定すぐできました。
そして表示させてみました、うんイカス!

というわけで今回はLive2Dモデルの組み込みのコードです。
Live2D SDK for Flashはmobファイルをバイナリとして組み込めるのですがサンプルにはURLロードの方法しかのっていなかったのでコーディングしました。
パブリッシュした実行ファイルへのmobファイルの組み込みのメリットがいくつかあります。(一部憶測含む)

・データを組み込んでおけばwebからデータをロードをする際の通信の不具合、
 速度や信頼性の問題がありません。
・mobファイルをプログラムに組み込むことによるデータの秘匿性。
・AIRなどの外部と接続の権限の設定が不要。
・単体の実行ファイルしかおけない場所に設置可能。

という理由で基本的にmobファイルを外部から読み込む必要性がないときには組み込むべきだとおもいます。

▽ソース

package
{
	import jp.live2d.model.Live2DModel;
	import flash.display.*;
	import flash.utils.*;
	/**
	 * もっとも簡単なバイナリロードサンプル
	 */
	public class MainAndCls extends MovieClip
	{
		/**コンストラクタ**/
		public function MainAndCls()
		{
			//組み込むmobファイルのパス
       [Embed(source='/model/model_android.mob', mimeType='application/octet-stream')]
			var embedLive2dMod:Class;
			var byteArray:ByteArray = new embedLive2dMod as ByteArray;
			var l2dMod:Live2DModel = Live2DModel.loadFromByteArray(byteArray) ;

			//モデルの表示用Spriteを取得
			var modSpt:Sprite = l2dMod.getSprite() ;
			
			//スプライトを登録
			this.addChild(modSpt) ;
			
		}
		
	}
}

これをつかった簡単にモデルを組み込めるクラスをつくってみたので次に公開しようかと思います。
ん?利用者がいないとかもはや関係ないんです。はい。

サイト内捜索
キャレンダァ
2011年4月
« 3月   5月 »
 123
45678910
11121314151617
18192021222324
252627282930