★お知らせ(2023/12/27)
いつもLive2D公式コミュニティをご利用いただき誠にありがとうございます。
本コミュニティは2023年12月27日 11:00をもって閉鎖いたしました。
今後の運営はすべて新Live2D公式クリエイターズフォーラムに移行します。
閉鎖に伴い、以下機能は利用不可となります。
・アカウントの新規作成
・トピック投稿、返信
たくさんのご利用誠にありがとうございました。

新Live2D公式クリエイターズフォーラムは以下バナーよりご利用いただけます。
Live2D公式クリエイターズフォーラム

なお、本コミュニティに投稿されたトピックはすべて残りますが、今後削除する可能性がございますので予めご了承ください。
閉鎖に関するお問い合わせにつきましてはLive2D公式クリエイターズフォーラムへご連絡ください。

FLASHデスクトップマスコットのモデルを切り替えたい

編集済: 5月 2015 Cubism SDK 2.1
チュートリアルを見ながらFLASHデスクトップマスコットを作成しました。モーションの追加方法などは分かりました。
そこで、せっかくなので右クリックでモデルを切り替えたいと思っています。右クリックメニューへの追加の仕方は分かったのですが、肝心の中身の記述が分かりません。SampleApp1の記述も見てみましたが、モデルの定義の仕方が違うようで、よく分かりませんでした。

力技でやってみましたが、下の例で行くと、右クリック→Epsilonを選んでも、最初のHaruが消えるだけで、Epsilonが表示されません。

//Haru
[Embed(source = '../../../../assets/Haru/Haru.moc', mimeType = 'application/octet-stream')] private var ModelData:Class;
[Embed(source = '../../../../assets/Haru/Haru.1024/texture_00.png')] private var Texture_00:Class;
//Epsilon
[Embed(source = '../../../../assets/Epsilon/Epsilon.moc', mimeType = 'application/octet-stream')] private var ModelData2:Class;
[Embed(source = '../../../../assets/Epsilon/Epsilon.1024/texture_00.png')] private var Texture_00_2:Class;

public Textures:Array = [Texture_00, Texture_00_2];

//略

addMenu(this,"Epsilon",function ():void 
{ 		
live2DModel = Live2DModelAs3.loadModel( ByteArray(new ModelData2) );
var tex:Bitmap = new textures[1];
live2DModel.setTexture(1, tex.bitmapData ); 

});
初歩的な質問かもしれませんが、教えて頂けると幸いです。

コメント

  • 大筋はあっているようですが、なんでしょうね?

    とりあえず以下のように変えてみるとどうですか?
    live2DModel.setTexture(1, tex.bitmapData );

    live2DModel.setTexture(0, tex.bitmapData );

    テクスチャ番号は0番からなので。
  • 編集済: 5月 2015
    コメントありがとうございます!ご指摘の通りに変えてみましたが、やはり表示されませんでした。

    また、同じような記述ですが、
    addMenu(this,"Epsilon",function ():void 
    { 
    
    live2DModel = Live2DModelAs3.loadModel( ByteArray(new ModelData2) );
    
    for (var i:int = 0; i < textures.length; i++) 
    {
    var tex:Bitmap = new textures[1];
    live2DModel.setTexture(i, tex.bitmapData ); 
    }});
    も違うようです。

    以下のようにすれば、最初のモデル自体は変更(HaruからEpsilonへ)できるので、パスや指定方法は間違っていないと思うのですが……。
    /*
    * 3Dレイヤーの準備完了時
    * @param event
    */
    public function onCreateStage3D(e:Event):void
    {
    var stage3D:Stage3D = (e.target as Stage3D);
    context3D = stage3D.context3D;
    context3D.configureBackBuffer(stage.stageWidth, stage.stageHeight, 0, false);
    context3D.setRenderToBackBuffer();
    
    live2DModel = Live2DModelAs3.loadModel( ByteArray(new ModelData2) );
    
    // グラフィックコンテキストをモデルに設定
    live2DModel.setGraphicsContext(context3D);
    
    // テクスチャの設定
    for (var i:int = 0; i < textures.length; i++) 
    {
    var tex:Bitmap = new textures[1];
    live2DModel.setTexture(i, tex.bitmapData ); 
    }
    なぜかaddMenu内でだけ駄目なようです。何か足りないのか、単にaddMenu内で変数?を取れないのか。自分でももう少し考えてみます。
  • Live2Dモデルは別々にインスタンス化しないとダメですよ
コメントするにはサインインまたは登録して下さい。