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

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2022年内を目処に閉鎖する予定です。
閉鎖時期や内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新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チュートリアル

表情ファイル(exp)について。

編集済: 10月 2015 Cubism SDK 2.1
はじめまして。
最近SDKを使いUnityで開発をはじめた者です。はずかしながらC#の知識も深くはないです 汗
モデルを表示させ、モーションの再生やパラメーターの操作などは一通りできるようになったのですが、表情の切り替えで詰まってしまいました。
やり方としては、表情用のL2DMotionManagerを作り、bytesで取り込んだexp.jsonファイルをAMotionへ代入して、L2DMotionManager.startMotion(AMotion)で表情モーションをセットし、updateParamで更新しています。
しかし結果は何も起こらず、変化は起こりません。試しにアイドリング等をさせているモーションやまばたきを止めてみると、モデルは目をつぶった状態になりました。もちろん表情の変化も起きず…
ものすごく初歩的なことなのかもしれず恥ずかしいのですが、どうしても判らなかったのでこちらで質問させて頂きました。
ご教授頂けると助かります(__

また、unityは5.2、SDKは2.1です。

コメント

  • 実装方法としては、おそらく問題ないような気がします。

    1点気になったのは、jsonファイルのロードは正しくできてるでしょうか?
    jsonファイルを開くとわかりますが、mtnファイルと内部の構成が違うため、別途jsonパースする処理が必要があります。
    (SDKのSampleApp1プロジェクトにあるL2DExpressionMotion.csあたり)

    jsonロード部分が問題なければ、ソースを公開していただけるともう少し詳細にアドバイスできると思います。
  • naotaroさん、お返事ありがとうございます!

    御察しの通り、jsonファイルのロードが正しく行われていないみたいです。というか、パースする処理をしていませんでした。実は自分はこの辺をよく理解していません。
    ロードは以下のように行っています。

    TextAsset[] expressions;//xx.exp.json.bytesのような各表情ファイルを取り込んでいます。
    AMotion[] motions_expressions;
    ・・・
    mainExpressionManager = new L2DMotionManager();//表情のモーション管理クラスの作成
    motions_expressions=new AMotion[expressions.Length];
    for (int i = 0; i < expressions.Length; i++) {
    motions_expressions[i] = Live2DMotion.loadMotion (expressions.bytes);
    }

    パースされていないので、読み込めていなかったわけですね。
    ご指摘頂いたSampleApp1やL2DExpressionMotion、他のトピック等を参考に、上のfor分の中身を以下のように変えてみました↓
    char[] buf = expressions [i].text.ToCharArray();
    Value json = Json.parseFromBytes (buf);
    TextAsset buf2=(Resources.Load(json.toString())as TextAsset);
    motions_expressions[i] = Live2DMotion.loadMotion (buf2.bytes);
    が、エラーが出てモデルが表示されませんでした。自分は恥ずかしながらパース処理をいまいち理解できていないようです…
    パースはどう行えばいいのか教えていただけると助かります><
  • Live2D Unity SDKのプロジェクトの何をベースにカスタムしてますか?
    (Simple、Motion、SampleApp1プロジェクトなど)

    Motionプロジェクトをベースにしてるのであれば、frameworkのソースを入れてる感じでしょうか?
    プロジェクトがわかれば、こちらとしても具体的なソースで解説できると思います。

    とりあえず、掲示して頂いたソースだと、jsonパース後にAMotionへの値セットが足りないかと。
    具体的にはL2DExpressionMotion.csの82行目のloadJson()部分です。
    (82~150行目でJsonパース後に、JsonからロードしたパラメーターIDや値をListにセットしてAMotionに渡してる)
    ricako
  • ベースにしているのは、確かsimpleだったと思います。パスではなくbytesでファイル読み込みしているやつです。ライブラリとframeworkをコピーして作業しています。
    教えて頂いたコードを参考に、
    motions_expressions[i] = L2DExpressionMotion.loadJson(buf);
    としたら、無事ロードができました!!
    表情もちゃんと切り替わって感動です。
    お忙しい中、適切な回答を頂き本当にありがとうございました(__
    とても勉強になりました!
コメントするにはサインインまたは登録して下さい。