新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2022年内を目処に閉鎖する予定です。
閉鎖時期や内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

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モデルは別々にインスタンス化しないとダメですよ
コメントするにはサインインまたは登録して下さい。